0111fa582aa2d34c3d43253143dbc0c499d1a05a
[rrq/tiniest.git] / packiso.sh
1 #!/bin/bash
2 #
3 # Run xorriso to make a bootable ISO of bootimage.raw; a hybrid, nulti
4 # mode bootable ISO.
5
6 set -e
7
8 ISOTREE=isotree
9 ISO=tiniest.iso
10 P1=$ISOTREE/part1.raw
11
12 echo "# Prepare ISO content tree"
13
14 if [ ! -d $ISOTREE ] ; then
15     mkdir $ISOTREE
16     touch $ISOTREE/catalog # Boot catalog
17     # Determine start and size of first parition
18     X=( $(sfdisk -l -ostart,sectors bootimage.raw | tail -n 2) )
19     dd if=bootimage.raw of=$P1 skip=${X[0]} count=${X[1]}
20     echo "# Add isolinux boot loader"
21     mcopy -i $P1 kernel/usr/lib/ISOLINUX/isolinux.bin ::/
22     mcopy -i $P1 kernel/usr/lib/ISOLINUX/isohdppx.bin ::/
23 fi
24
25 [ ! -r $ISO ] || rm $ISO
26 PREPID="'$(id -un), $(getent passwd $(id -un)|awk -F: '{print $5}')'"
27
28 XORRISO=(
29     -report_about ALL
30     --outdev $ISO
31     -map $ISOTREE /
32     -rockridge on -joliet on
33     -volid "TINIEST"
34     -volset_id "$(date +"Tiniest %Y-%m-%d %H:%M:%S")"
35     -publisher "Ralph (rrq) Ronnquist"
36     -application_id "Hybrid Multi Mode Disk Image"
37     -system_id "Tiniest Linux HMMDI"
38     #-copyright_file copyright.txt
39     #-abstract_file abstract.txt
40     #-biblio_file biblio.txt
41     -preparer_id "$PREPID"
42     #-application_use path
43     #-out_charset "UTF8" ??
44     -uid 0 -gid 0
45 )
46
47 BOOT1=(
48     -boot_image any cat_path=/catalog
49     -append_partition 2 0xef ${P1}
50     -boot_image any
51     efi_path=--interval:appended_partition_2:all::/EFI/BOOT/bootx64.efi
52     #-boot_image isolinux system_area=kernel/usr/lib/ISOLINUX/isohdppx.bin
53     -boot_image and part_like_isohybrid=on
54     #    -boot_image any
55 #    bin_path=--interval:appended_partition_2:all::/isolinux.bin
56 )
57
58 XORRISO=( "${XORRISO[@]}" "${BOOT1[@]}" )
59 #for A in "${XORRISO[@]}" ; do echo "$A" ; done
60 xorriso "${XORRISO[@]}"