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: r...@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() {
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to