diff options
author | Bob van der Linden <bobvanderlinden@gmail.com> | 2014-10-26 21:29:04 +0100 |
---|---|---|
committer | Vladimír Čunát <vcunat@gmail.com> | 2015-03-24 22:01:04 +0100 |
commit | 8d092270d28d82aa5623bcde55a2ee85129ac1f1 (patch) | |
tree | a4bec9fd0bb0f43c48f44f7e074ec24ade0b93bb /nixos/lib/make-iso9660-image.sh | |
parent | 9a75c1d7c8ee19046ce67f2dc725821d2d5452fa (diff) | |
download | nixpkgs-8d092270d28d82aa5623bcde55a2ee85129ac1f1.tar nixpkgs-8d092270d28d82aa5623bcde55a2ee85129ac1f1.tar.gz nixpkgs-8d092270d28d82aa5623bcde55a2ee85129ac1f1.tar.bz2 nixpkgs-8d092270d28d82aa5623bcde55a2ee85129ac1f1.tar.lz nixpkgs-8d092270d28d82aa5623bcde55a2ee85129ac1f1.tar.xz nixpkgs-8d092270d28d82aa5623bcde55a2ee85129ac1f1.tar.zst nixpkgs-8d092270d28d82aa5623bcde55a2ee85129ac1f1.zip |
nixos: iso-image: use syslinux bootloader for USB booting support
This changes the bootloader for iso generation from Grub to syslinux. In addition this adds USB booting support, so that "dd" can be used to burn the generated ISO to USB thumbdrives instead of needing applications like UnetBootin.
Diffstat (limited to 'nixos/lib/make-iso9660-image.sh')
-rw-r--r-- | nixos/lib/make-iso9660-image.sh | 48 |
1 files changed, 40 insertions, 8 deletions
diff --git a/nixos/lib/make-iso9660-image.sh b/nixos/lib/make-iso9660-image.sh index 675b5bb3514..c8522513aa2 100644 --- a/nixos/lib/make-iso9660-image.sh +++ b/nixos/lib/make-iso9660-image.sh @@ -31,11 +31,20 @@ if test -n "$bootable"; then fi done - bootFlags="-b $bootImage -c .boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table" + isoBootFlags="-eltorito-boot ${bootImage} + -eltorito-catalog .boot.cat + -no-emul-boot -boot-load-size 4 -boot-info-table" +fi + +if test -n "$usbBootable"; then + usbBootFlags="-isohybrid-mbr ${isohybridMbrImage}" fi if test -n "$efiBootable"; then - bootFlags="$bootFlags -eltorito-alt-boot -e $efiBootImage -no-emul-boot" + efiBootFlags="-eltorito-alt-boot + -e $efiBootImage + -no-emul-boot + -isohybrid-gpt-basdat" fi touch pathlist @@ -74,18 +83,41 @@ for ((n = 0; n < ${#objects[*]}; n++)); do fi done -# !!! what does this do? +# Escape filenames that contain '='. +# TODO: Handle this properly. This fails for filenames +# that contain multiple '=' symbols. cat pathlist | sed -e 's/=\(.*\)=\(.*\)=/\\=\1=\2\\=/' | tee pathlist.safer mkdir -p $out/iso -genCommand="genisoimage -iso-level 4 -r -J $bootFlags -hide-rr-moved -graft-points -path-list pathlist.safer ${volumeID:+-V $volumeID}" -if test -z "$compressImage"; then - $genCommand -o $out/iso/$isoName -else - $genCommand | bzip2 > $out/iso/$isoName.bz2 + +xorriso="xorriso + -as mkisofs + -iso-level 3 + -volid ${volumeID} + -appid nixos + -publisher nixos + -graft-points + -full-iso9660-filenames + ${isoBootFlags} + ${usbBootFlags} + ${efiBootFlags} + -r + -path-list pathlist.safer + --sort-weight 0 / + --sort-weight 1 /isolinux" # Make sure isolinux is near the beginning of the ISO + +$xorriso -output $out/iso/$isoName + +if test -n "$usbBootable"; then + echo "Making image hybrid..." + isohybrid --uefi $out/iso/$isoName fi +if test -n "$compressImage"; then + echo "Compressing image..." + bzip2 $out/iso/$isoName +fi mkdir -p $out/nix-support echo $system > $out/nix-support/system |