Deleted Added
full compact
12c12
< # $FreeBSD: stable/11/sys/boot/efi/boot1/generate-fat.sh 297871 2016-04-12 20:52:28Z emaste $
---
> # $FreeBSD: stable/11/sys/boot/efi/boot1/generate-fat.sh 329114 2018-02-11 02:27:50Z kevans $
16c16,17
< BOOT1_SIZE=128k
---
> BOOT1_OFFSET=2d
> BOOT1_SIZE=384k
18,26c19,20
< #
< # Known filenames
< # amd64: BOOTx64.efi
< # arm64: BOOTaa64.efi
< # arm: BOOTarm.efi
< # i386: BOOTia32.efi
< #
< if [ -z "$2" ]; then
< echo "Usage: $0 arch boot-filename"
---
> if [ $(id -u) != 0 ]; then
> echo "${0##*/}: must run as root" >&2
30,59d23
< ARCH=$1
< FILENAME=$2
<
< # Generate 800K FAT image
< OUTPUT_FILE=fat-${ARCH}.tmpl
<
< dd if=/dev/zero of=$OUTPUT_FILE bs=512 count=$FAT_SIZE
< DEVICE=`mdconfig -a -f $OUTPUT_FILE`
< newfs_msdos -F 12 -L EFI $DEVICE
< mkdir stub
< mount -t msdosfs /dev/$DEVICE stub
<
< # Create and bless a directory for the boot loader
< mkdir -p stub/efi/boot
<
< # Make a dummy file for boot1
< echo 'Boot1 START' | dd of=stub/efi/boot/$FILENAME cbs=$BOOT1_SIZE count=1 conv=block
< # Provide a fallback startup.nsh
< echo $FILENAME > stub/efi/boot/startup.nsh
<
< umount stub
< mdconfig -d -u $DEVICE
< rmdir stub
<
< # Locate the offset of the fake file
< BOOT1_OFFSET=$(hd $OUTPUT_FILE | grep 'Boot1 START' | cut -f 1 -d ' ')
<
< # Convert to number of blocks
< BOOT1_OFFSET=$(echo 0x$BOOT1_OFFSET | awk '{printf("%x\n",$1/512);}')
<
75,78c39,41
< bzip2 $OUTPUT_FILE
< echo 'FAT template boot filesystem created by generate-fat.sh' > $OUTPUT_FILE.bz2.uu
< echo 'DO NOT EDIT' >> $OUTPUT_FILE.bz2.uu
< echo "\$FreeBSD\$" >> $OUTPUT_FILE.bz2.uu
---
> while read ARCH FILENAME; do
> # Generate 800K FAT image
> OUTPUT_FILE=fat-${ARCH}.tmpl
80,81c43,47
< uuencode $OUTPUT_FILE.bz2 $OUTPUT_FILE.bz2 >> $OUTPUT_FILE.bz2.uu
< rm $OUTPUT_FILE.bz2
---
> dd if=/dev/zero of=$OUTPUT_FILE bs=512 count=$FAT_SIZE
> DEVICE=`mdconfig -a -f $OUTPUT_FILE`
> newfs_msdos -F 12 -L EFI $DEVICE
> mkdir stub
> mount -t msdosfs /dev/$DEVICE stub
82a49,79
> # Create and bless a directory for the boot loader
> mkdir -p stub/efi/boot
>
> # Make a dummy file for boot1
> echo 'Boot1 START' | dd of=stub/efi/boot/$FILENAME cbs=$BOOT1_SIZE count=1 conv=block
> # Provide a fallback startup.nsh
> echo $FILENAME > stub/efi/boot/startup.nsh
>
> umount stub
> mdconfig -d -u $DEVICE
> rmdir stub
>
> # Locate the offset of the fake file
> OFFSET=$(hd $OUTPUT_FILE | grep 'Boot1 START' | cut -f 1 -d ' ')
>
> # Convert to number of blocks
> OFFSET=$(echo 0x$OFFSET | awk '{printf("%x\n",$1/512);}')
>
> # Validate the offset
> if [ $OFFSET != $BOOT1_OFFSET ]; then
> echo "Incorrect offset $OFFSET != $BOOT1_OFFSET" >&2
> exit 1
> fi
>
> xz -f $OUTPUT_FILE
> done <<EOF
> amd64 BOOTx64.efi
> arm64 BOOTaa64.efi
> arm BOOTarm.efi
> i386 BOOTia32.efi
> EOF