diff options
Diffstat (limited to 'preseed.sh')
-rwxr-xr-x | preseed.sh | 70 |
1 files changed, 58 insertions, 12 deletions
@@ -12,6 +12,17 @@ set -ue newiso=$(readlink -f "$1") [ -e "$newiso" ] && rm -f "$newiso" +# Generate a (hybrid) ISO or an HDD image? The latter should only be +# useful for older BIOSes that don't support hybrid ISOs. +case "$newiso" in + *.iso) type=iso;; + *.tar) type=hdd; archive=;; + *.tar.gz|*.tgz) type=hdd; archive=z;; + *.tar.bz|*.tar.bz2|*.tbz|*.tbz2) type=hdd; archive=j;; + *.tar.xz|*.txz) type=hdd; archive=J;; + *) echo "Error: $newiso: Unknown file type" >&2; exit 1;; +esac + iso="$2" test -r "$iso" || exit 1 shift; shift @@ -85,18 +96,53 @@ while read sum file; do done < ./md5sum.txt > "$md5sums" mv "$md5sums" "$isoeditdir/md5sum.txt" -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= +if [ $type = hdd ]; then + # Generate a HDD image + mv ./isolinux ./syslinux + mv ./syslinux/isolinux.cfg ./syslinux/syslinux.cfg + mv ./syslinux/isolinux.bin ./syslinux/syslinux.bin + sed -i 's/\bisolinux\b/syslinux/g' ./syslinux/*.cfg + # Dereference links, which are not compatible with FAT devices + tar --exclude='./debian' --hard-dereference --dereference \ + -c ${archive:+-$archive} \ + -f "$newiso" ./ + + ## To burn the archive onto a USB stick: + # device=/dev/disk/by-id/... # FIXME + # mountpoint=/mnt/usbkey # FIXME + # + # device=$(readlink -f "$device") + # parted $device mklabel msdos + # parted $device mkpart primary 1 1G + # parted $device set 1 boot on + # mkdosfs ${device}1 + # + # install-mbr $device + # syslinux -i ${device}1 + # + # mount ${device}1 $mountpoint + # tar -x -C "$mountpoint" -f "$image" --no-same-owner + # umount "$mountpoint" + +elif [ $type = iso ]; then + # Generate a hybrid ISO image + 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" \ + ./ + + # To burn the ISO onto a USB stick, see + # http://www.debian.org/CD/faq/#write-usb 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" |