| #!/bin/sh |
| |
| BASEDIR=$(dirname $(realpath "$0")) |
| |
| orig_iso=mini.iso |
| auto_extract_efi=1 |
| efi_img=efi.img |
| |
| new_files=iso_unpacked_and_modified |
| new_iso=preseed-mini.iso |
| |
| PRESEEDFILE=$(realpath "${BASEDIR}"/preseed/preseed.cfg) |
| AFTERINSTALLSCRIPT=$(realpath "${BASEDIR}"/preseed/after_install_1.sh) |
| |
| part_img_ready=1 |
| if test "$auto_extract_efi" = 1; then |
| start_block=$(/sbin/fdisk -l "$orig_iso" | grep -F "$orig_iso"2 | \ |
| awk '{print $2}') |
| block_count=$(/sbin/fdisk -l "$orig_iso" | grep -F "$orig_iso"2 | \ |
| awk '{print $4}') |
| if test "$start_block" -gt 0 -a "$block_count" -gt 0 2>/dev/null |
| then |
| dd if="$orig_iso" bs=512 skip="$start_block" count="$block_count" \ |
| of="$efi_img" |
| else |
| echo "Cannot read plausible start block and block count from fdisk" >&2 |
| part_img_ready=0 |
| fi |
| fi |
| |
| # add preseed |
| mkdir ${new_files} |
| bsdtar -C ${new_files} -xf "$orig_iso" |
| cd ${new_files} |
| cp -f "${PRESEEDFILE}" preseed.cfg |
| cp -f "${AFTERINSTALLSCRIPT}" after_install_1.sh |
| chmod a+rx after_install_1.sh |
| |
| # add preseed to console based installer |
| chmod ug+w initrd.gz |
| gzip -d -f initrd.gz |
| echo preseed.cfg | cpio -H newc -o -A -F initrd |
| echo after_install_1.sh | cpio -H newc -o -A -F initrd |
| gzip -9 initrd |
| chmod a-w initrd.gz |
| # add preseed to GTK based installer |
| chmod ug+w gtk |
| cd gtk |
| chmod ug+w initrd.gz |
| gzip -d -f initrd.gz |
| cp -f ../preseed.cfg . |
| cp -f ../after_install_1.sh . |
| echo preseed.cfg | cpio -H newc -o -A -F initrd |
| echo after_install_1.sh | cpio -H newc -o -A -F initrd |
| gzip -9 initrd |
| chmod a-w initrd.gz |
| rm -f preseed.cfg after_install_1.sh |
| cd .. |
| chmod a-w gtk |
| # modify Graphical installer to use tty1 |
| chmod ug+w boot |
| chmod ug+w boot/grub |
| chmod ug+w boot/grub/grub.cfg |
| sed -i '0,/menuentry/{s#menuentry#menuentry '\''Ampere Install'\'' {\n set background_color=black\n linux /linux --- quiet console=tty1\n initrd /gtk/initrd.gz\n}\nmenuentry#}' boot/grub/grub.cfg |
| sed -i '0,/insmod gzio/{s#insmod gzio#set timeout=120\n\ninsmod gzio#}' boot/grub/grub.cfg |
| chmod a-w boot/grub/grub.cfg |
| chmod a-w boot/grub |
| chmod a-w boot |
| cd .. |
| |
| rm -f "${new_iso}" |
| |
| # Create the new ISO image if not partition extraction failed |
| test "$part_img_ready" = 1 && \ |
| xorriso -as mkisofs \ |
| -r -V 'Debian arm64 n' \ |
| -o "$new_iso" \ |
| -J -joliet-long -cache-inodes \ |
| -e boot/grub/efi.img \ |
| -no-emul-boot \ |
| -append_partition 2 0xef "$efi_img" \ |
| -partition_cyl_align all \ |
| "$new_files" |
| |
| # clean |
| rm -f efi.img |
| chmod ug+w -R "${new_files}" |
| rm -rf "${new_files}" |