aboutsummaryrefslogtreecommitdiffstats
path: root/preseed.sh
diff options
context:
space:
mode:
Diffstat (limited to 'preseed.sh')
-rwxr-xr-xpreseed.sh31
1 files changed, 20 insertions, 11 deletions
diff --git a/preseed.sh b/preseed.sh
index 3fbc329..ff88535 100755
--- a/preseed.sh
+++ b/preseed.sh
@@ -17,7 +17,7 @@ test -r "$iso" || exit 1
shift; shift
pwd=$(pwd)
-for prog in fuseiso fusermount rsync md5sum genisoimage find; do
+for prog in fuseiso fusermount rsync md5sum xorriso find; do
if ! which "$prog" >/dev/null; then
echo "Error: Missing $prog" >&2
exit 1
@@ -36,10 +36,10 @@ rmdir "$mountdir"
cp preseed.cfg "$isoeditdir/"
md5sum ./preseed.cfg >> "$isoeditdir/md5sum.txt"
-isolinux=isolinux/adtxt.cfg
-sed -ri "s@^\s+append\s(.*\s)?auto=true\b@& file=/cdrom/preseed.cfg @" \
- "$isoeditdir/$isolinux"
-# ^ no need to update the checksum, $isolinux is not in './md5sum.txt'.
+cfg="$isoeditdir/isolinux/*.cfg $isoeditdir/isolinux/*/*.cfg"
+[ -d $isoeditdir/boot -a -d $isoeditdir/boot/grub ] && cfg="$cfg $isoeditdir/boot/grub/grub.cfg"
+sed -ri "s@auto=true\s+priority=critical\b@& file=/cdrom/preseed.cfg @" $cfg
+# ^ no need to update isolinux' checksum, as it's not in './md5sum.txt'.
mkdir "$isoeditdir/include"
rsync -aL ./include/ "$isoeditdir/include"/
@@ -76,7 +76,8 @@ gzip -fk ./"$packages"
md5sums=$(mktemp)
while read sum file; do
if [ "$file" = "./${packages}" -o \
- "$file" = "./${packages}.gz" ]; then
+ "$file" = "./${packages}.gz" -o \
+ "$file" = "./boot/grub/grub.cfg" ]; then
md5sum "$file"
else
echo "$sum $file"
@@ -84,10 +85,18 @@ while read sum file; do
done < ./md5sum.txt > "$md5sums"
mv "$md5sums" "$isoeditdir/md5sum.txt"
-genisoimage -o "$newiso" -quiet -r -J \
- -no-emul-boot -boot-load-size 4 \
- -boot-info-table \
- -b isolinux/isolinux.bin \
- -c isolinux/boot.cat \
+if [ -f ./boot/grub/efi.img ]; then
+ efi_opts="--efi-boot boot/grub/efi.img -append_partition 2 0x01 ./boot/grub/efi.img"
+else
+ efi_opts=
+fi
+xorriso -as mkisofs -r \
+ -checksum_algorithm_iso all \
+ -isohybrid-mbr /usr/lib/syslinux/isohdpfx.bin \
+ -b isolinux/isolinux.bin -c isolinux/boot.cat \
+ -partition_offset 16 \
+ -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot $efi_opts \
+ -o "$newiso" \
./
+
rm -rf "$isoeditdir"