Use makefs -t msdos in make_esp_file

With this last piece in place, make -C /usr/src/release release.iso is
finally able to run in a jail. This was not possible before because
msdosfs cannot be mounted inside a jail.

Submitted by:	ryan@ixsystems.com
Reviewed by:	emaste@, imp@, gjb@
MFC after:	1 week
Sponsored by:	iXsystems, Inc.
Differential Revision:	https://reviews.freebsd.org/D21385
This commit is contained in:
Matt Macy 2019-09-03 18:37:55 +00:00
parent ce1b19d8c8
commit 14113f123e
2 changed files with 12 additions and 12 deletions

View File

@ -45,7 +45,7 @@ if [ "$1" = "-b" ]; then
# This is highly x86-centric and will be used directly below.
bootable="-o bootimage=i386;$BASEBITSDIR/boot/cdboot -o no-emul-boot"
# Make EFI system partition (should be done with makefs in the future)
# Make EFI system partition.
# The ISO file is a special case, in that it only has a maximum of
# 800 KB available for the boot code. So make an 800 KB ESP
espfilename=$(mktemp /tmp/efiboot.XXXXXX)

View File

@ -43,7 +43,7 @@ get_uefi_bootname() {
}
make_esp_file() {
local file sizekb loader device mntpt fatbits efibootname
local file sizekb loader device stagedir fatbits efibootname
file=$1
sizekb=$2
@ -57,17 +57,17 @@ make_esp_file() {
fatbits=12
fi
dd if=/dev/zero of="${file}" bs=1k count="${sizekb}"
device=$(mdconfig -a -t vnode -f "${file}")
newfs_msdos -F "${fatbits}" -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"
stagedir=$(mktemp -d /tmp/stand-test.XXXXXX)
mkdir -p "${stagedir}/EFI/BOOT"
efibootname=$(get_uefi_bootname)
cp "${loader}" "${mntpt}/EFI/BOOT/${efibootname}.efi"
umount "${mntpt}"
rmdir "${mntpt}"
mdconfig -d -u "${device}"
cp "${loader}" "${stagedir}/EFI/BOOT/${efibootname}.efi"
makefs -t msdos \
-o fat_type=${fatbits} \
-o sectors_per_cluster=1 \
-o volume_label=EFISYS \
-s ${sizekb}k \
"${file}" "${stagedir}"
rm -rf "${stagedir}"
}
make_esp_device() {