make_esp_file() { local file sizekb loader device mntpt efibootname file=$1 sizekb=$2 loader=$3 dd if=/dev/zero of="${file}" bs=1k count="${sizekb}" device=$(mdconfig -a -t vnode -f "${file}") newfs_msdos -F 32 -c 1 -L EFISYS "/dev/${device}" > /dev/null 2>&1 mntpt=$(mktemp -d /tmp/stand-test.XXXXXX) mount -t msdosfs "/dev/${device}" "${mntpt}" mkdir -p "${mntpt}/EFI/BOOT" efibootname=bootaa64 cp "${loader}" "${mntpt}/EFI/BOOT/${efibootname}.efi" umount "${mntpt}" rmdir "${mntpt}" mdconfig -d -u "${device}" } echo '/dev/vtbd0p2 / ufs rw,noatime 1 1' > /src/FreeBSD/tftproot/qemu/etc/fstab echo './etc/fstab type=file uname=root gname=wheel mode=644' \ >> /src/FreeBSD/tftproot/qemu/METALOG sed -i '' -E 's/(time=[0-9]*)\.[0-9]*/\1.0/' /src/FreeBSD/tftproot/qemu/METALOG echo '/dev/ufs/FreeBSD_Install / ufs ro,noatime 1 1' > ${1}/etc/fstab echo 'root_rw_mount="NO"' > ${1}/etc/rc.conf.local # Make an ESP in a file. espfilename=$(mktemp /tmp/efiboot.XXXXXX) make_esp_file ${espfilename} 33292 /src/FreeBSD/tftproot/qemu/boot/loader.efi cd /src/FreeBSD/tftproot/qemu && /usr/sbin/makefs -B little -f 10000 -o version=2 -D ../rootfs.img . && /usr/bin/mkimg -s gpt -p efi:=${espfilename} -p freebsd-ufs:=../rootfs.img -o ../disk.img