svn commit: r351771 - in head: release/amd64 tools/boot

Matt Macy mmacy at FreeBSD.org
Tue Sep 3 18:37:56 UTC 2019


Author: mmacy
Date: Tue Sep  3 18:37:55 2019
New Revision: 351771
URL: https://svnweb.freebsd.org/changeset/base/351771

Log:
  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 at ixsystems.com
  Reviewed by:	emaste@, imp@, gjb@
  MFC after:	1 week
  Sponsored by:	iXsystems, Inc.
  Differential Revision:	https://reviews.freebsd.org/D21385

Modified:
  head/release/amd64/mkisoimages.sh
  head/tools/boot/install-boot.sh

Modified: head/release/amd64/mkisoimages.sh
==============================================================================
--- head/release/amd64/mkisoimages.sh	Tue Sep  3 18:35:55 2019	(r351770)
+++ head/release/amd64/mkisoimages.sh	Tue Sep  3 18:37:55 2019	(r351771)
@@ -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)

Modified: head/tools/boot/install-boot.sh
==============================================================================
--- head/tools/boot/install-boot.sh	Tue Sep  3 18:35:55 2019	(r351770)
+++ head/tools/boot/install-boot.sh	Tue Sep  3 18:37:55 2019	(r351771)
@@ -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() {


More information about the svn-src-all mailing list