Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 25 Apr 2018 18:53:03 +0000 (UTC)
From:      Benno Rice <benno@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject:   svn commit: r333006 - stable/11/release/amd64
Message-ID:  <201804251853.w3PIr39A014222@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: benno
Date: Wed Apr 25 18:53:02 2018
New Revision: 333006
URL: https://svnweb.freebsd.org/changeset/base/333006

Log:
  MFC r332345, r332346, r332661, r333005
  
  r332345:
   Fix makefs invocation after r331843.
  
  r332346:
   Fix the position of $bootable so that -o platformid=efi applies correctly.
  
  r332661:
   Generate hybrid ISO images for amd64.
  
   This keeps the existing El Torito entries for BIOS and UEFI boot code and
   adds a GPT in the ISO image's System Area containing boot code for BIOS that
   will load /boot/loader from the ISO filesystem and execute it. We then use
   etdump to find the EFI System Partition image in the El Torito catalog and
   add an entry to the GPT that allows EFI to find it.
  
  r333005:
   Allow etdump, makefs and mkimg to be overridden.
  
   Recent changes to makefs and mkimg have led to situations where the
   disconnect between this script and the versions installed on the host cause
   failures. Provide a way to work around this that doesn't require the
   installation of new versions to the host system if that's not desired.
  
   With this change mkisoimages.sh will honour the $ETDUMP, $MAKEFS and $MKIMG
   environment variables but fall back to the previous behaviour of finding them
   within $PATH.
  
  Sponsored by:	iXsystems, Inc.

Modified:
  stable/11/release/amd64/mkisoimages.sh
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/release/amd64/mkisoimages.sh
==============================================================================
--- stable/11/release/amd64/mkisoimages.sh	Wed Apr 25 18:47:52 2018	(r333005)
+++ stable/11/release/amd64/mkisoimages.sh	Wed Apr 25 18:53:02 2018	(r333006)
@@ -23,6 +23,18 @@
 # extra-bits-dir, if provided, contains additional files to be merged
 # into base-bits-dir as part of making the image.
 
+if [ -z $ETDUMP ]; then
+	ETDUMP=etdump
+fi
+
+if [ -z $MAKEFS ]; then
+	MAKEFS=makefs
+fi
+
+if [ -z $MKIMG ]; then
+	MKIMG=mkimg
+fi
+
 if [ "x$1" = "x-b" ]; then
 	# This is highly x86-centric and will be used directly below.
 	bootable="-o bootimage=i386;$4/boot/cdboot -o no-emul-boot"
@@ -38,7 +50,7 @@ if [ "x$1" = "x-b" ]; then
 	umount efi
 	rmdir efi
 	mdconfig -d -u $device
-	bootable="-o bootimage=i386;efiboot.img -o no-emul-boot $bootable"
+	bootable="$bootable -o bootimage=i386;efiboot.img -o no-emul-boot -o platformid=efi"
 	
 	shift
 else
@@ -55,6 +67,32 @@ NAME="$1"; shift
 
 publisher="The FreeBSD Project.  http://www.FreeBSD.org/"
 echo "/dev/iso9660/$LABEL / cd9660 ro 0 0" > "$1/etc/fstab"
-makefs -t cd9660 $bootable -o rockridge -o label="$LABEL" -o publisher="$publisher" "$NAME" "$@"
+$MAKEFS -t cd9660 $bootable -o rockridge -o label="$LABEL" -o publisher="$publisher" "$NAME" "$@"
 rm -f "$1/etc/fstab"
 rm -f efiboot.img
+
+if [ "$bootable" != "" ]; then
+	# Look for the EFI System Partition image we dropped in the ISO image.
+	for entry in `$ETDUMP --format shell $NAME`; do
+		eval $entry
+		if [ "$et_platform" = "efi" ]; then
+			espstart=`expr $et_lba \* 2048`
+			espsize=`expr $et_sectors \* 512`
+			espparam="-p efi::$espsize:$espstart"
+			break
+		fi
+	done
+
+	# Create a GPT image containing the partitions we need for hybrid boot.
+	imgsize=`stat -f %z $NAME`
+	$MKIMG -s gpt \
+	    --capacity $imgsize \
+	    -b $4/boot/pmbr \
+	    $espparam \
+	    -p freebsd-boot:=$4/boot/isoboot \
+	    -o hybrid.img
+
+	# Drop the PMBR, GPT, and boot code into the System Area of the ISO.
+	dd if=hybrid.img of=$NAME bs=32k count=1 conv=notrunc
+	rm -f hybrid.img
+fi



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201804251853.w3PIr39A014222>