#!/bin/bash
#
-# Run xorriso to make a bootable ISO of bootimage.raw; a hybrid, nulti
+# Run xorriso to make a bootable ISO of bootimage.raw; a hybrid, multi
# mode bootable ISO.
set -e
ISO=tiniest.iso
P1=part1.raw # $ISOTREE/part1.raw
-echo "# Prepare ISO content tree"
-
+echo "# Prepare ISO content tree unless it's already set up"
if [ ! -d $ISOTREE ] ; then
mkdir $ISOTREE
- #touch $ISOTREE/catalog # Boot catalog
+
+ [ -d extra ] && rsync -a extra/. $ISOTREE/.
+
# Determine start and size of first parition
X=( $(sfdisk -l -ostart,sectors bootimage.raw | tail -n 2) )
dd if=bootimage.raw of=$P1 skip=${X[0]} count=${X[1]}
echo "# Set up the isolinux boot loader in $ISOTREE"
mkdir -p $ISOTREE/boot/isolinux/bios
cp kernel/usr/lib/syslinux/modules/bios/* $ISOTREE/boot/isolinux/bios
- mv $ISOTREE/boot/isolinux/bios/ldlinux.c32 $ISOTREE/boot/isolinux
cp kernel/usr/lib/ISOLINUX/isolinux.bin $ISOTREE/boot/isolinux
- cp syslinux-iso.cfg $ISOTREE/boot/isolinux/syslinux.cfg
- mcopy -i $P1 ::/splash.png ::/vmlinuz $ISOTREE/
- #mkdir -p $ISOTREE/EFI/BOOT
- #cp kernel/usr/lib/SYSLINUX.EFI/efi64/syslinux.efi \
- # $ISOTREE/EFI/BOOT/bootia64.efi
- #cp $ISOTREE/boot/isolinux/*.* $ISOTREE/EFI/boot/
-
- #mcopy -i $P1 ::/ldlinux.sys ::/ldlinux.c32 $ISOTREE/
- #mcopy -i $P1 ::/initrd.gz $ISOTREE/
- #cp devuan/initrd.gz $ISOTREE/
+ ## ldlinux.c32 must be sibling to isolinux.bin
+ mv $ISOTREE/boot/isolinux/bios/ldlinux.c32 $ISOTREE/boot/isolinux
+
+ ## use isolinux.cfg for isolinux boot
+ cp syslinux-iso.cfg $ISOTREE/boot/isolinux/isolinux.cfg
+
+ ## put splash, vmlinux and initrd as siblings
+ mcopy -i $P1 ::/splash.png ::/vmlinuz ::/initrd.gz $ISOTREE/boot/isolinux
fi
-[ ! -r $ISO ] || rm $ISO
+[ -r $ISO ] && rm $ISO
+
PREPID="'$(id -un), $(getent passwd $(id -un)|awk -F: '{print $5}')'"
XORRISO=(
# Mastering a disk legacy boot reusing the cdrom legacy boot
-boot_image isolinux dir=/boot/isolinux
- -boot_image any next
-
+ #-boot_image any iso_mbr_part_type=0x00
+ -boot_image isolinux partition_entry=gpt_basdat
+
# Mastering a disk UEFI boot using the separate boot partition $P1
# Bootloader = /EFI/BOOT/bootx64.efi
+ -boot_image any next
-append_partition 2 0xef ${P1}
-boot_image any
efi_path=--interval:appended_partition_2:all::/EFI/BOOT/bootx64.efi
- # cdrom UEFI boot is missing
+ # make part#2 bootable
)
xorriso "${XORRISO[@]}"
#sfdisk -f --part-attrs tiniest.iso 2 LegacyBIOSBootable
-sfdisk -A tiniest.iso 2
+#sfdisk -A tiniest.iso 2