Tue Jan 24 11:16:50 2017 UTC ()
make amd64 EFI install image

XXX merge to installimage?


(nonaka)
diff -r1.11 -r1.12 src/distrib/amd64/Makefile
diff -r0 -r1.1 src/distrib/amd64/uefi-installimage/Makefile
diff -r0 -r1.1 src/distrib/amd64/uefi-installimage/Makefile.bootimage
diff -r0 -r1.1 src/distrib/amd64/uefi-installimage/Makefile.installimage
diff -r0 -r1.1 src/distrib/amd64/uefi-installimage/boot.cfg.in
diff -r0 -r1.1 src/distrib/amd64/uefi-installimage/etc.rc
diff -r0 -r1.1 src/distrib/amd64/uefi-installimage/etc.ttys
diff -r0 -r1.1 src/distrib/amd64/uefi-installimage/install.sh
diff -r0 -r1.1 src/distrib/amd64/uefi-installimage/spec.inst

cvs diff -r1.11 -r1.12 src/distrib/amd64/Makefile (expand / switch to unified diff)

--- src/distrib/amd64/Makefile 2016/06/30 12:56:27 1.11
+++ src/distrib/amd64/Makefile 2017/01/24 11:16:50 1.12
@@ -1,30 +1,32 @@ @@ -1,30 +1,32 @@
1# $NetBSD: Makefile,v 1.11 2016/06/30 12:56:27 pgoyette Exp $ 1# $NetBSD: Makefile,v 1.12 2017/01/24 11:16:50 nonaka Exp $
2 2
3.include <bsd.own.mk> 3.include <bsd.own.mk>
4 4
5SUBDIR= 5SUBDIR=
6SUBDIR+= ramdisks 6SUBDIR+= ramdisks
7SUBDIR+= .WAIT 7SUBDIR+= .WAIT
8SUBDIR+= instkernel 8SUBDIR+= instkernel
9.if ${MKKMOD} != "no" 9.if ${MKKMOD} != "no"
10SUBDIR+= kmod 10SUBDIR+= kmod
11.if ${MKCRYPTO} != "no" 11.if ${MKCRYPTO} != "no"
12SUBDIR+= kmod-cgdroot 12SUBDIR+= kmod-cgdroot
13.endif 13.endif
14.endif 14.endif
15SUBDIR+= .WAIT 15SUBDIR+= .WAIT
16SUBDIR+= cdroms 16SUBDIR+= cdroms
17SUBDIR+= liveimage 17SUBDIR+= liveimage
18SUBDIR+= installimage 18SUBDIR+= installimage
 19SUBDIR+= uefi-installimage
19TARGETS+= release  20TARGETS+= release
20 21
21iso_image: 22iso_image:
22 ${MAKEDIRTARGET} cdroms iso_image 23 ${MAKEDIRTARGET} cdroms iso_image
23 24
24live_image: 25live_image:
25 ${MAKEDIRTARGET} liveimage live_image 26 ${MAKEDIRTARGET} liveimage live_image
26 27
27install_image: 28install_image:
28 ${MAKEDIRTARGET} installimage install_image 29 ${MAKEDIRTARGET} installimage install_image
 30 ${MAKEDIRTARGET} uefi-installimage install_image
29 31
30.include <bsd.subdir.mk> 32.include <bsd.subdir.mk>

File Added: src/distrib/amd64/uefi-installimage/Attic/Makefile
#	$NetBSD: Makefile,v 1.1 2017/01/24 11:16:50 nonaka Exp $

.include <bsd.own.mk>

INSTIMGBASE=	NetBSD-${DISTRIBVER}-amd64-uefi-install	# gives ${IMGBASE}.img

BOOTDISK=	dk1			# unused (use GUID)
INSTIMAGEMB?=	1280			# for all installation binaries

PRIMARY_BOOT=		bootxx_ffsv1
SECONDARY_BOOT=		boot
SECONDARY_BOOT_ARG=	# unnecessary
EFIBOOT=		${WORKDIR}/usr/mdec/bootx64.efi
EFIBOOT+=		${WORKDIR}/usr/mdec/bootia32.efi
#EFIBOOT=		${.OBJDIR}/../../../sys/arch/i386/stand/efiboot/bootx64/bootx64.efi
#EFIBOOT+=		${.OBJDIR}/../../../sys/arch/i386/stand/efiboot/bootia32/bootia32.efi

USE_MBR=		yes
USE_GPT=		yes

CLEANFILES+=	boot.cfg

prepare_md_post:
	${TOOL_SED}							\
	    -e "s/@@MACHINE@@/${MACHINE}/"				\
	    -e "s/@@VERSION@@/${DISTRIBVER}/"				\
	    < ${.CURDIR}/boot.cfg.in > boot.cfg

DISTRIBDIR!= cd ${.CURDIR}/../.. ; pwd
SYSINSTDIR!= cd ${.CURDIR}/../../../usr.sbin/sysinst/arch/${MACHINE} && ${PRINTOBJDIR}

SPEC_EXTRA=		${.CURDIR}/spec.inst
IMGFILE_EXTRA=								\
	${.CURDIR}/etc.ttys		etc/ttys			\
	${.CURDIR}/etc.rc		etc/rc				\
	${.CURDIR}/install.sh		.				\
	${.OBJDIR}/boot.cfg		.				\
	${SYSINSTDIR}/sysinstmsgs.de	.				\
	${SYSINSTDIR}/sysinstmsgs.es	.				\
	${SYSINSTDIR}/sysinstmsgs.fr	.				\
	${SYSINSTDIR}/sysinstmsgs.pl	.				\
	${SYSINSTDIR}/sysinst		.

.include "${.CURDIR}/Makefile.installimage"

File Added: src/distrib/amd64/uefi-installimage/Attic/Makefile.bootimage
#	$NetBSD: Makefile.bootimage,v 1.1 2017/01/24 11:16:50 nonaka Exp $
#
# Copyright (c) 2009, 2010, 2011 Izumi Tsutsui.  All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

#
# Makefile to create a bootable FS image for USB flash or emulators
#

#
# Required variables:
#	RELEASEDIR
#		Should be defined in nbmake-${MACHINE}
#	IMGBASE
#		Basename of the image
#
# Optional variables:
#	BOOTDISK
#		device name of target bootable disk specified in /etc/fstab
#		(default: sd0)
#	USE_MBR
#		set yes if target disk image requires MBR partition
#		(default: no)
#	USE_GPT
#		set yes if target disk image requires GPT partition
#		(default: no)
#	MBR_BOOTCODE
#		optional MBR bootcode which should be installed by fdisk(8)
#		(default: empty)
#		- specified MBR_BOOTCODE must exist in ${DESTDIR}/usr/mdec
#		- if MBR_BOOTCODE is not specified,
#		  MBR_DEFAULT_BOOTCODE (default: mbr) will be used
#		  if the target ${MACHINE} has the one in /usr/mdec
#	USE_SUNLABEL
#		set yes if target disk image requires Sun's label
#		(default: no)
#	INSTALLBOOT_AFTER_DISKLABEL (untested)
#		set yes if the target ${MACHINE} requires disklabel
#		to run installboot(8), like hp300
#		(default: empty)
#	IMAGEMB
#		target image size in MB
#		(default: 2048)
#	SWAPMB
#		swap size in target image in MB
#		(default: 128)
#	EFIMB
#		EFI partition size in target image in MB
#		(default: 128)
#	KERN_SET
#		kernel set name which should be extracted into image
#		(default: kern-GENERIC)
#	SETS
#		binary sets that should be extracted into image
#		(default: modules base etc comp games man misc tests text
#			  xbase xcomp xetc xfont xserver)
#	SETS_DIR
#		directory path where binary sets are stored
#		(default: ${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/sets)
#	IMGFILE_EXTRA
#		list of additional files to be copied into images,
#		containing one or more tuples of the form:
#			FILE	TARGETPATH
#		for installation image etc.
#		(default: empty)
#	IMGDIR_EXTRA
#		list of additional directories to be copied into images,
#		containing one or more tuples of the form:
#			DIR	TARGETPATH
#		for installation image etc.
#		(default: empty)
#		XXX: currently permissions in IMGDIR_EXTRA are not handled
#	IMGDIR_EXCLUDE
#		pax(1) options to exclude files which should not copied
#		into TARGETPATH in IMGDIR_EXTRA
#		(default: empty)
#	FSTAB_IN
#		template file of /etc/fstab
#		(default: ${DISTRIBDIR}/common/bootimage/fstab.in)
#	SPEC_IN
#		default files of spec file for makefs(8)
#		(default: ${DISTRIBDIR}/common/bootimage/spec.in)
#	SPEC_EXTRA
#		additional files of spec file for makefs(8)
#		(default: empty)
#	IMGMAKEFSOPTIONS
#		options passed to makefs(8) to create root file system
#		(default: -o bsize=16384,fsize=2048,density=8192)
#	INSTALLBOOTOPTIONS
#		options passed to installboot(8), e.g., -o console=com0
#		(default: empty)
#	PRIMARY_BOOT
#		primary boot loader that should be installed into
#		the target image via installboot(8)
#		(default: empty)
#	SECONDARY_BOOT
#		secondary bootloader that should be put into the target image
#		(default: empty)
#	SECONDARY_BOOT_ARG
#		extra arguments that should be passed to installboot(8)
#		to specify the secondary bootloader
#		(default: empty)
#	DISKPROTO_IN
#		template file of disklabel -R
#		(default: ${DISTRIBDIR}/common/bootimage/diskproto.in
#		       or ${DISTRIBDIR}/common/bootimage/diskproto.mbr.in)
#	OMIT_SWAPIMG
#		no need to put swap partition into image (for USB stick)
#		(default: no)
#	EFIBOOT
#		EFI bootloader
#		(default: empty)
#

.include <bsd.own.mk> 		#
.include <bsd.endian.mk>	# for TARGET_ENDIANNESS

.include "${NETBSDSRCDIR}/distrib/common/Makefile.distrib"

.if ${MKREPRO:Uno} == "yes"
TIMESTAMP=-T ${NETBSDSRCDIR}/sys/sys/param.h
.endif

.if empty(IMGBASE)
.BEGIN:
	@echo "Error: IMGBASE is not set"
	@false
.endif

# should be defined elsewhere? 
CAT?=		cat
CHMOD?=		chmod
CP?=		cp
DD?=		dd
MKDIR?=		mkdir -p
RM?=		rm

#
# common definitions for image
#
BOOTDISK?=	sd0
USE_MBR?=	no
USE_GPT?=	no
USE_SUNLABEL?=	no
INSTALLBOOT_AFTER_DISKLABEL?=	no

#
# size parameters for image
#
IMAGEMB?=	2048		# 2048MB
SWAPMB?=	128		# 128MB
EFIMB?=		128		# 128MB

# XXX: SWAPMB could be zero and expr(1) returns exit status 1 in that case
IMAGESECTORS!=	expr ${IMAGEMB} \* 1024 \* 1024 / 512
SWAPSECTORS!=	expr ${SWAPMB} \* 1024 \* 1024 / 512 || true
EFISECTORS!=	expr ${EFIMB} \* 1024 \* 1024 / 512 || true

.if ${USE_MBR} == "no" && ${USE_GPT} == "no"
LABELSECTORS?=	0
.else
#LABELSECTORS?=	63	# historical
#LABELSECTORS?=	32	# 16KB aligned
LABELSECTORS?=	2048	# 1MB aligned for modern flash devices
.endif

FSSECTORS!=	expr ${IMAGESECTORS} - ${SWAPSECTORS} - ${LABELSECTORS}
FSSIZE!=	expr ${FSSECTORS} \* 512

# parameters for disklabel and MBR
HEADS=		64
SECTORS=	32
CYLINDERS!=	expr ${IMAGESECTORS} / \( ${HEADS} \* ${SECTORS} \)
SECPERCYLINDERS!= expr ${HEADS} \* ${SECTORS}
MBRHEADS=	255
MBRSECTORS=	63
MBRCYLINDERS!=	expr ${IMAGESECTORS} / \( ${MBRHEADS} \* ${MBRSECTORS} \)
MBRNETBSD=	169

BSDPARTSECTORS!= expr ${IMAGESECTORS} - ${LABELSECTORS}
FSOFFSET=	${LABELSECTORS}
SWAPOFFSET!=	expr ${LABELSECTORS} + ${FSSECTORS}

# parameters for sunlabel
FSCYLINDERS!=	expr ${FSSECTORS} / \( ${HEADS} \* ${SECTORS} \)
SWAPCYLINDERS!=	expr ${SWAPSECTORS} / \( ${HEADS} \* ${SECTORS} \) || true

.if ${USE_GPT} != "no"
# 2048 for Secondary GPT header and entries
FSSECTORS!=	expr ${IMAGESECTORS} - ${SWAPSECTORS} - ${LABELSECTORS} \
		    - ${EFISECTORS} - 2048
FSSIZE!=	expr ${FSSECTORS} \* 512

BSDPARTSECTORS!= expr ${IMAGESECTORS} - ${LABELSECTORS} - ${EFISECTORS} - 2048
FSOFFSET!=	expr ${LABELSECTORS} + ${EFISECTORS}
SWAPOFFSET!=	expr ${LABELSECTORS} + ${FSSECTORS} + ${EFISECTORS}

BOOTDISK_UUID=`${TOOL_GPT} ${WORKMBR} show -i 2 | awk '/^GUID/ {print $$2}'`
SWAPDISK_UUID=`${TOOL_GPT} ${WORKMBR} show -i 3 | awk '/^GUID/ {print $$2}'`
.endif

#
# definitions to create root fs
#
SETS_DEFAULT=	modules base etc comp games man misc tests text
.if ${MKX11} != "no"
SETS_DEFAULT+=	xbase xcomp xetc xfont xserver
.endif

KERN_SET?=	kern-GENERIC
SETS?=		${SETS_DEFAULT}
IMG_SETS=	${KERN_SET} ${SETS}
SETS_DIR?=	${RELEASEDIR}/${RELEASEMACHINEDIR}/binary/sets

FSTAB_IN?=	${DISTRIBDIR}/common/bootimage/fstab.in
SPEC_IN?=	${DISTRIBDIR}/common/bootimage/spec.in

IMGMAKEFSOPTIONS?=	-o bsize=16384,fsize=2048,density=8192

WORKDIR?=       work
WORKSPEC?=      work.spec
WORKFSTAB?=	work.fstab
WORKRCCONF?=	work.rc.conf
WORKFS?=        work.rootfs
TARGETFS?=      imgroot.fs

CLEANFILES+=	${WORKSPEC} ${WORKFSTAB} ${WORKRCCONF} ${WORKFS}
CLEANFILES+=	${TARGETFS}

#
# create root file system for the image
#
${TARGETFS}: prepare_md_post pre-targetfs
	@if [ ! -d ${RELEASEDIR}/${RELEASEMACHINEDIR} ]; then 		\
		echo "Missing ${RELEASEDIR}/${RELEASEMACHINEDIR}, aborting"; \
		false; 							\
	fi;
	@${MKDIR} ${WORKDIR}
.for set in ${IMG_SETS}
	@if [ ! -f ${SETS_DIR}/${set}.tgz ]; then 			\
		echo "Missing ${SETS_DIR}/${set}.tgz, aborting";	\
		false; 							\
	fi
	@echo Extracting ${set}.tgz ...
	@(cd ${WORKDIR}; ${TOOL_PAX} -rnz -f ${SETS_DIR}/${set}.tgz .)
.endfor
.if defined(SECONDARY_BOOT)
	@echo Copying secondary boot...
	${CP} -f ${WORKDIR}/usr/mdec/${SECONDARY_BOOT} ${WORKDIR}
.endif
	@echo Preparing /etc/fstab ...
.if ${USE_GPT} != "no"
.if ${OMIT_SWAPIMG} == "no"
	${TOOL_SED}							\
	    -e "s/\/dev\/@@BOOTDISK@@a/NAME=${BOOTDISK_UUID}/"		\
	    -e "s/\/dev\/@@BOOTDISK@@b/NAME=${SWAPDISK_UUID}/"		\
	    < ${FSTAB_IN} > ${WORKFSTAB}
.else
	${TOOL_SED}							\
	    -e "s/\/dev\/@@BOOTDISK@@a/NAME=${BOOTDISK_UUID}/"		\
	    -e "/@@BOOTDISK@@b/d"					\
	    < ${FSTAB_IN} > ${WORKFSTAB}
.endif
.else	# USE_GPT == "no"
.if ${OMIT_SWAPIMG} == "no"
	${TOOL_SED} "s/@@BOOTDISK@@/${BOOTDISK}/" < ${FSTAB_IN} > ${WORKFSTAB}
.else
	${TOOL_SED}							\
	    -e "s/@@BOOTDISK@@/${BOOTDISK}/"				\
	    -e "/@@BOOTDISK@@b/d"					\
	    < ${FSTAB_IN} > ${WORKFSTAB}
.endif
.endif	# USE_GPT != "no"
	${CP} ${WORKFSTAB} ${WORKDIR}/etc/fstab
	@echo Setting rc_configured=YES in /etc/rc.conf ...
	${TOOL_SED} "s/rc_configured=NO/rc_configured=YES/"		\
	    < ${WORKDIR}/etc/rc.conf > ${WORKRCCONF}
	${CP} ${WORKRCCONF} ${WORKDIR}/etc/rc.conf
.if defined(IMGDIR_EXTRA)
	@echo Copying extra dirs...
.for _SRCDIR _TARGET in ${IMGDIR_EXTRA}
	@if [ ! -d ${_SRCDIR} ]; then 					\
		echo "${_SRCDIR} is not directory, aborting";		\
		false; 							\
	fi
	${MKDIR} ${WORKDIR}/${_TARGET}
	(cd ${_SRCDIR} ;						\
	    ${TOOL_PAX} -rw -pe	-v					\
	    ${IMGDIR_EXCLUDE}						\
	    . ${.OBJDIR}/${WORKDIR}/${_TARGET} )
.endfor
.endif
.if defined(IMGFILE_EXTRA)
	@echo Copying extra files...
.for _SRC _TARGET in ${IMGFILE_EXTRA}
	@if [ ! -f ${_SRC} ]; then 					\
		echo "${_SRC} in IMGFILE_EXTRA not found, aborting";	\
		false; 							\
	fi
	@if [ -f ${_SRC} ]; then 					\
		echo ${CP} ${_SRC} ${WORKDIR}/${_TARGET};		\
		${CP} ${_SRC} ${WORKDIR}/${_TARGET};			\
	fi
.endfor
.endif
	@echo Preparing spec files for makefs...
	${RM} -f ${WORKSPEC}
	cat ${WORKDIR}/etc/mtree/* |					\
	    ${TOOL_SED} -e 's/ size=[0-9]*//' > ${WORKSPEC}
	${HOST_SH} ${WORKDIR}/dev/MAKEDEV -s all ipty |			\
	    ${TOOL_SED} -e '/^\. type=dir/d' -e 's,^\.,./dev,' >> ${WORKSPEC}
	cat ${SPEC_IN} >> ${WORKSPEC}
.if defined(SECONDARY_BOOT)
	echo "./${SECONDARY_BOOT} type=file uname=root gname=wheel mode=0444" \
	    >> ${WORKSPEC}
.endif
.if defined(SPEC_EXTRA)
	cat ${SPEC_EXTRA} >> ${WORKSPEC}
.endif
	@echo Creating rootfs...
	# XXX /var/spool/ftp/hidden is unreadable
	${CHMOD} +r ${WORKDIR}/var/spool/ftp/hidden
	${TOOL_MAKEFS} -M ${FSSIZE} -m ${FSSIZE}			\
	    -B ${TARGET_ENDIANNESS}					\
	    -F ${WORKSPEC} -N ${WORKDIR}/etc				\
	    ${TIMESTAMP}						\
	    ${IMGMAKEFSOPTIONS}						\
	    ${WORKFS} ${WORKDIR}
.if !empty(PRIMARY_BOOT) && ${INSTALLBOOT_AFTER_DISKLABEL} == "no"
	${TOOL_INSTALLBOOT} -v -m ${MACHINE} ${INSTALLBOOTOPTIONS} ${WORKFS} \
	    ${WORKDIR}/usr/mdec/${PRIMARY_BOOT} ${SECONDARY_BOOT_ARG}
.endif
	@echo done.
	mv ${WORKFS} ${.TARGET}

#
# definitions to create image
#
.if ${USE_MBR} != "no"
DISKPROTO_IN?=	${DISTRIBDIR}/common/bootimage/diskproto.mbr.in
.else
DISKPROTO_IN?=	${DISTRIBDIR}/common/bootimage/diskproto.in
.endif

MBR_DEFAULT_BOOTCODE?=	mbr

OMIT_SWAPIMG?=	no

WORKMBR?=	work.mbr
WORKSWAP?=	work.swap
WORKEFI?=	work.efi
WORKGPT?=	work.gpt
WORKLABEL?=	work.diskproto
WORKIMG?=	work.img
EFIWORKDIR?=	work.efidir

CLEANFILES+=	${WORKMBR} ${WORKSWAP} ${WORKEFI} ${WORKGPT}
CLEANFILES+=	${WORKLABEL}.tmp ${WORKLABEL}
CLEANFILES+=	${WORKIMG} ${IMGBASE}.img

${WORKLABEL}:
	${TOOL_SED}							\
	    -e "s/@@SECTORS@@/${SECTORS}/"				\
	    -e "s/@@HEADS@@/${HEADS}/"					\
	    -e "s/@@SECPERCYLINDERS@@/${SECPERCYLINDERS}/"		\
	    -e "s/@@CYLINDERS@@/${CYLINDERS}/"				\
	    -e "s/@@IMAGESECTORS@@/${IMAGESECTORS}/"			\
	    -e "s/@@FSSECTORS@@/${FSSECTORS}/"				\
	    -e "s/@@FSOFFSET@@/${FSOFFSET}/"				\
	    -e "s/@@SWAPSECTORS@@/${SWAPSECTORS}/"			\
	    -e "s/@@SWAPOFFSET@@/${SWAPOFFSET}/"			\
	    -e "s/@@BSDPARTSECTORS@@/${BSDPARTSECTORS}/"		\
	    < ${DISKPROTO_IN} > ${WORKLABEL}.tmp
	mv ${WORKLABEL}.tmp ${WORKLABEL}

pre-targetfs:
.if ${USE_GPT} != "no"
	@echo creating GPT header and partition entries...
	${RM} -f ${WORKMBR}
	${DD} if=/dev/zero of=${WORKMBR} seek=$$((${IMAGESECTORS} - 1)) count=1
	${TOOL_GPT} ${WORKMBR} create
	${TOOL_GPT} ${WORKMBR} add -a 1m -s ${EFISECTORS} -t efi -l "EFI system"
	${TOOL_GPT} ${WORKMBR} add -a 1m -s ${FSSECTORS} -t ffs
.if ${OMIT_SWAPIMG} == "no"
	${TOOL_GPT} ${WORKMBR} add -a 1m -s ${SWAPSECTORS} -t swap
.endif

${IMGBASE}.img:	${TARGETFS}
	@echo create EFI system partition...
	@${MKDIR} ${EFIWORKDIR}/EFI/boot
.if !empty(EFIBOOT)
.for f in ${EFIBOOT}
	${CP} -f ${f} ${EFIWORKDIR}/EFI/boot/`basename ${f}`
.endfor
.endif
	${RM} -f ${WORKEFI}
	${TOOL_MAKEFS} -M ${EFIMB}m -m ${EFIMB}m			\
	    -B ${TARGET_ENDIANNESS}					\
	    ${TIMESTAMP}						\
	    -t msdos -o F=32,c=1					\
	    ${WORKEFI} ${EFIWORKDIR}
	@echo create GPT image...
	${DD} if=${WORKMBR} of=${WORKGPT} skip=$$((${IMAGESECTORS} - 2048)) \
	    count=2048
	${DD} if=${WORKMBR} count=${LABELSECTORS} |			\
	    ${CAT} - ${WORKEFI} ${TARGETFS} ${WORKGPT} > ${WORKIMG}
	${TOOL_GPT} ${WORKIMG} biosboot -i 2				\
	    -c ${.OBJDIR}/${WORKDIR}/usr/mdec/gptmbr.bin
	${TOOL_GPT} ${WORKIMG} set -a bootme -i 2
.else	# USE_GPT == "no"
${IMGBASE}.img:	${TARGETFS} ${WORKLABEL}
.if ${USE_MBR} != "no"
	@echo creating MBR labels...
	${DD} if=/dev/zero of=${WORKMBR} seek=$$((${IMAGESECTORS} - 1)) count=1
	${TOOL_FDISK} -f -i -u \
	    -b ${MBRCYLINDERS}/${MBRHEADS}/${MBRSECTORS}		\
	    -0 -a -s ${MBRNETBSD}/${FSOFFSET}/${BSDPARTSECTORS}		\
	    -F ${WORKMBR}
.if empty(MBR_BOOTCODE)
	@if [ -f ${WORKDIR}/usr/mdec/${MBR_DEFAULT_BOOTCODE} ]; then 	\
		echo ${TOOL_FDISK} -f					\
		    -i -c ${WORKDIR}/usr/mdec/${MBR_DEFAULT_BOOTCODE}	\
		    -F ${WORKMBR};					\
		${TOOL_FDISK} -f					\
		    -i -c ${WORKDIR}/usr/mdec/${MBR_DEFAULT_BOOTCODE}	\
		    -F ${WORKMBR};					\
	fi
.else
	@if [ ! -f ${WORKDIR}/usr/mdec/${MBR_BOOTCODE} ]; then 		\
		echo "${MBR_BOOTCODE} is not found in DESTDIR/usr/mdec, aborting"; \
		false; 							\
	fi
	${TOOL_FDISK} -f -i -c ${WORKDIR}/usr/mdec/${MBR_BOOTCODE}	\
	    -F ${WORKMBR}
.endif
	${DD} if=${WORKMBR} count=${LABELSECTORS} |			\
	    ${CAT} - ${TARGETFS} > ${WORKIMG}
.else	# USE_MBR == "no"
	${CP} ${TARGETFS} ${WORKIMG}
.endif	# USE_MBR != "no"
.endif	# USE_GPT != "no"
.if ${OMIT_SWAPIMG} == "no"
	${DD} if=/dev/zero of=${WORKSWAP} seek=$$((${SWAPSECTORS} - 1)) count=1
	${CAT} ${WORKSWAP} >> ${WORKIMG}
.endif
.if ${USE_SUNLABEL} != "no"
	@echo Creating sun disklabel...
	printf 'V ncyl %d\nV nhead %d\nV nsect %d\na %d %d/0/0\nb %d %d/0/0\nW\n' \
	    ${CYLINDERS} ${HEADS} ${SECTORS} \
	    ${FSOFFSET} ${FSCYLINDERS} ${FSCYLINDERS} ${SWAPCYLINDERS} | \
	    ${TOOL_SUNLABEL} -nq ${WORKIMG}
.endif
.if ${USE_GPT} == "no"
	${TOOL_DISKLABEL} -R -F ${WORKIMG} ${WORKLABEL}
.if !empty(PRIMARY_BOOT) && ${INSTALLBOOT_AFTER_DISKLABEL} != "no"
	${TOOL_INSTALLBOOT} -v -m ${MACHINE} ${INSTALLBOOTOPTIONS} ${WORKIMG} \
	    ${WORKDIR}/usr/mdec/${PRIMARY_BOOT}
.endif
.endif
	mv ${WORKIMG} ${.TARGET}


CLEANFILES+=	${IMGBASE}.img.gz ${IMGBASE}.img.gz.tmp

${IMGBASE}.img.gz:	${IMGBASE}.img
	${TOOL_GZIP_N} -9c ${IMGBASE}.img > ${.TARGET}.tmp
	mv ${.TARGET}.tmp ${.TARGET}

clean:
	@if [ -d ${WORKDIR}/var/spool/ftp/hidden ]; then 		\
		${CHMOD} +r ${WORKDIR}/var/spool/ftp/hidden;		\
	fi	# XXX
	${RM} -fr ${WORKDIR}
	${RM} -fr ${EFIWORKDIR}

prepare_md_post: .PHONY
image_md_post: .PHONY
image_md_pre: .PHONY

.include <bsd.prog.mk>

File Added: src/distrib/amd64/uefi-installimage/Attic/Makefile.installimage
#	$NetBSD: Makefile.installimage,v 1.1 2017/01/24 11:16:50 nonaka Exp $
#
# Common Makefile to create a bootable installation image for USB flash etc.
#

#
# Required variables:
#	INSTIMGBASE
#		Basename of the liveimage
#
# Optional variables:
#	INSTIMAGEMB
#		target image size in MB
#		(if empty default IMAGEMB in Makefile.bootimage is used)
#
# See Makefile.bootimage for other variables.
#

.if !target(check_INSTIMGBASE)
check_INSTIMGBASE: .PHONY .NOTMAIN
.if !defined(INSTIMGBASE)
	@echo "Error: INSTIMGBASE is not set"
	@false
.else
	@true
.endif
.endif

.if defined(INSTIMAGEMB)
IMAGEMB=	${INSTIMAGEMB}
.endif
SWAPMB=		0			# no swap
OMIT_SWAPIMG=	yes			# nothing to write

KERN_SET?=	kern-GENERIC
SETS?=		modules base etc

FSTAB_IN?=	${NETBSDSRCDIR}/distrib/common/bootimage/fstab.install.in

.if ${USE_MBR} != "no"
DISKPROTO_IN?=	${NETBSDSRCDIR}/distrib/common/bootimage/diskproto.noswap.mbr.in
.else
DISKPROTO_IN?=	${NETBSDSRCDIR}/distrib/common/bootimage/diskproto.noswap.in
.endif

# XXX: no permission info for makefs(8)
IMGDIR_EXTRA=	${RELEASEDIR}/${RELEASEMACHINEDIR}	${RELEASEMACHINEDIR}
IMGDIR_EXCLUDE= 	-s ',./installation/cdrom.*,,gp'
IMGDIR_EXCLUDE+=	-s ',./installation/liveimage.*,,gp'
IMGDIR_EXCLUDE+=	-s ',./installation/installimage.*,,gp'

IMGBASE=        ${INSTIMGBASE}

.include "${.CURDIR}/Makefile.bootimage"

# INSTIMG_RELEASEDIR specifies where to install ${INSTIMGBASE}.img.gz.
# This should be passed from etc/Makefile or etc/etc.${MACHINE}/Makefile.inc
# but also set default here for manual builds.
INSTIMG_RELEASEDIR?=	${RELEASEMACHINEDIR}/installation/installimage

# should be defined elsewhere? 
MKDIR?=		mkdir -p

install_image: check_INSTIMGBASE check_RELEASEDIR ${IMGBASE}.img.gz
	${MKDIR} ${INSTIMG_RELEASEDIR}
	${RELEASE_INSTALL} ${IMGBASE}.img.gz ${INSTIMG_RELEASEDIR}
	# note ${MAKESUM} will be calculated in src/etc/Makefile

release:


File Added: src/distrib/amd64/uefi-installimage/Attic/boot.cfg.in
banner=Welcome to the NetBSD/@@MACHINE@@ @@VERSION@@ installation image
banner================================================================================
banner=
banner=ACPI (Advanced Configuration and Power Interface) should work on all modern
banner=and legacy hardware.  However if you do encounter a problem while booting,
banner=try disabling it and report a bug at http://www.NetBSD.org/.
menu=Install NetBSD:boot netbsd
menu=Install NetBSD (no ACPI):boot netbsd -2
menu=Install NetBSD (no ACPI, no SMP):boot netbsd -12
menu=Drop to boot prompt:prompt
timeout=30
clear=1

File Added: src/distrib/amd64/uefi-installimage/Attic/etc.rc
# $NetBSD: etc.rc,v 1.1 2017/01/24 11:16:50 nonaka Exp $
#
# Copyright (c) 1997 Perry E. Metzger
# Copyright (c) 1994 Christopher G. Demetriou
# All rights reserved.
# 
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
# 3. All advertising materials mentioning features or use of this software
#    must display the following acknowledgement:
#          This product includes software developed for the
#          NetBSD Project.  See http://www.NetBSD.org/ for
#          information about NetBSD.
# 4. The name of the author may not be used to endorse or promote products
#    derived from this software without specific prior written permission.
# 
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# 
# <<Id: LICENSE,v 1.2 2000/06/14 15:57:33 cgd Exp>>

PATH=/sbin:/bin:/usr/bin:/usr/sbin:/
export PATH

# hack to get around bugs in kernfs's rootdev/rrootdev lookup.
ls -l /dev/* > /dev/null 2>&1

mount -u /
mount -t tmpfs tmpfs /tmp

# create a gettytab to autologin and run sysinst
echo "# Autostart sysinst" > /tmp/gettytab
echo -n "sysinst:al=root:lo=/install.sh:im=:sp#" >> /tmp/gettytab
stty speed >> /tmp/gettytab
cp /tmp/gettytab /etc

# done, move on to multiuser mode
exit 0

File Added: src/distrib/amd64/uefi-installimage/Attic/etc.ttys
# $NetBSD: etc.ttys,v 1.1 2017/01/24 11:16:50 nonaka Exp $
#
# re-launch the sysinst wrapper script on console
#
# name	getty				type	status		comments
#
console	"/usr/libexec/getty sysinst"	wsvt25	on secure

File Added: src/distrib/amd64/uefi-installimage/Attic/install.sh
#! /bin/sh -m
# $NetBSD: install.sh,v 1.1 2017/01/24 11:16:50 nonaka Exp $
#
# -
#  Copyright (c) 2010 The NetBSD Foundation, Inc.
#  All rights reserved.
# 
#  This code is derived from software contributed to The NetBSD Foundation
#  by Martin Husemann <martin@NetBSD.org>.
# 
#  Redistribution and use in source and binary forms, with or without
#  modification, are permitted provided that the following conditions
#  are met:
#  1. Redistributions of source code must retain the above copyright
#     notice, this list of conditions and the following disclaimer.
#  2. Redistributions in binary form must reproduce the above copyright
#     notice, this list of conditions and the following disclaimer in the
#     documentation and/or other materials provided with the distribution.
# 
#  THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
#  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
#  TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
#  PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
#  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
#  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
#  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
#  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
#  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
#  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
#  POSSIBILITY OF SUCH DAMAGE.


# setup basic environment
PATH=/sbin:/bin:/usr/bin:/usr/sbin:/
export PATH

termfile=/tmp/sysinst.term

# Check if we are on a framebuffer or on serial console and default
# the terminal type accordingly.
# There is no /var/db/dev.cdb, so sysctl might not map the devicename properly;
# ttyE0 is 90,0 -> 0x5a00
case $(sysctl -nx kern.consdev) in
 002f000000000000)
    TERM=wsvt25
    ;;
 *)
    if [ -r ${termfile} ]; then
	. ${termfile}
    else
	TERM=vt220
    fi
    ;;
esac

export TERM
HOME=/
export HOME
BLOCKSIZE=1k
export BLOCKSIZE
EDITOR=ed
export EDITOR
SHELL=/bin/sh
export SHELL

umask 022

stty newcrt werase ^W intr ^C kill ^U erase ^?
if [ $TERM != "wsvt25" ]; then
	cat << "EOM"


You are using a serial console, we do not know your terminal emulation.
Please select one, typical values are:

	vt100
	ansi
	xterm

EOM
	echo -n "Terminal type (just hit ENTER for '$TERM'): "
	read ans
	if [ -n "$ans" ];then
	    TERM=$ans
	fi
fi

# run the installation or upgrade script.
cd /
cmd=./sysinst

while [ -n "${cmd}" ]
do
	${cmd}
	if [ $? = 4 ]; then
		echo "Oops, something went wrong - we will try again"
		exit
	else
		if [ -n "$(jobs)" ]; then
			tput clear
			echo "You have stopped sysinst, return to it by" \
				"typing 'exit' or ^D."
			${SHELL} -i
			cmd="fg"
		else
			cmd=""
		fi
	fi
done

# remember terminal type, now that we know it for sure
echo "TERM=${TERM}" > ${termfile}
echo
echo "To return to the installer, quit this shell by typing 'exit' or ^D."
exec ${SHELL}

File Added: src/distrib/amd64/uefi-installimage/Attic/spec.inst
# $NetBSD: spec.inst,v 1.1 2017/01/24 11:16:50 nonaka Exp $
./mnt2			type=dir mode=0755 uname=root gname=wheel
./targetroot		type=dir mode=0755 uname=root gname=wheel

./install.sh		type=file mode=0755 uname=root gname=wheel
./sysinst		type=file mode=0755 uname=root gname=wheel
./sysinstmsgs.de	type=file mode=0444 uname=root gname=wheel
./sysinstmsgs.es	type=file mode=0444 uname=root gname=wheel
./sysinstmsgs.fr	type=file mode=0444 uname=root gname=wheel
./sysinstmsgs.pl	type=file mode=0444 uname=root gname=wheel

# for sysinst "install from local directory" default
./release		type=link mode=0755 uname=root gname=wheel link=.

# XXX what to do for files in ${RELEASEMACHINEDIR}?