diff --git a/image-recipe/build-auto-installer-iso.sh b/image-recipe/build-auto-installer-iso.sh index 0b186e42..2b152717 100755 --- a/image-recipe/build-auto-installer-iso.sh +++ b/image-recipe/build-auto-installer-iso.sh @@ -461,6 +461,7 @@ debootstrap --variant=minbase --arch=${DEB_ARCH} \ kmod,procps,iproute2,ca-certificates,gdisk,\ cryptsetup,cryptsetup-initramfs,parted,dosfstools,e2fsprogs,\ linux-image-${DEB_ARCH},grub-efi-${DEB_ARCH},grub-pc-bin,\ +live-boot,live-boot-initramfs-tools,\ pciutils,usbutils,less,nano \ bookworm /installer http://deb.debian.org/debian @@ -514,7 +515,7 @@ echo " Automatic Installer" echo "" BOOT_MEDIA="" -for dev in /run/archiso /cdrom /media/cdrom /mnt/iso; do +for dev in /run/live/medium /lib/live/mount/medium /run/archiso /cdrom /media/cdrom /mnt/iso; do if [ -f "\$dev/archipelago/auto-install.sh" ]; then BOOT_MEDIA="\$dev" break @@ -529,7 +530,7 @@ if [ -n "\$BOOT_MEDIA" ]; then exec bash "\$BOOT_MEDIA/archipelago/auto-install.sh" else echo " Installer not found on boot media." - echo " Checked: /run/archiso, /cdrom, /media/cdrom, /mnt/iso" + echo " Checked: /run/live/medium, /run/archiso, /cdrom, /media/cdrom" echo "" echo " Dropping to shell for manual recovery..." exec /bin/bash @@ -594,10 +595,20 @@ KVER=$(ls /installer/lib/modules/ | sort -V | tail -1) echo " [container] Kernel version: $KVER" cp /installer/boot/vmlinuz-$KVER /output/vmlinuz -# Build initramfs with our custom hooks +# Mount virtual filesystems for proper initramfs generation +mount --bind /proc /installer/proc +mount --bind /sys /installer/sys +mount --bind /dev /installer/dev + +# Build initramfs with live-boot hooks + our custom hooks chroot /installer update-initramfs -c -k $KVER cp /installer/boot/initrd.img-$KVER /output/initrd.img +# Cleanup mounts +umount /installer/dev 2>/dev/null || true +umount /installer/sys 2>/dev/null || true +umount /installer/proc 2>/dev/null || true + # Create squashfs echo " [container] Creating installer squashfs..." mksquashfs /installer /output/filesystem.squashfs -comp xz -Xbcj x86 -noappend -quiet @@ -607,7 +618,8 @@ echo " [container] Building GRUB EFI image..." grub-mkimage -O x86_64-efi -o /output/BOOTX64.EFI -p /boot/grub \ part_gpt part_msdos fat iso9660 udf normal boot linux search \ search_fs_uuid search_fs_file search_label configfile echo cat \ - ls test true loopback gfxterm gfxmenu font png + ls test true loopback gfxterm gfxmenu font png all_video video \ + video_bochs video_cirrus efi_gop efi_uga # Create EFI FAT image (4MB) dd if=/dev/zero of=/output/efi.img bs=1M count=4 2>/dev/null @@ -2455,12 +2467,12 @@ else fi menuentry "Install Archipelago" --hotkey=i { - linux /live/vmlinuz quiet + linux /live/vmlinuz boot=live components quiet initrd /live/initrd.img } menuentry "Install Archipelago (verbose)" --hotkey=v { - linux /live/vmlinuz + linux /live/vmlinuz boot=live components initrd /live/initrd.img } @@ -2488,13 +2500,13 @@ DEFAULT install LABEL install MENU LABEL Install Archipelago KERNEL /live/vmlinuz - APPEND initrd=/live/initrd.img quiet + APPEND initrd=/live/initrd.img boot=live components quiet MENU DEFAULT LABEL install-verbose MENU LABEL Install Archipelago (verbose) KERNEL /live/vmlinuz - APPEND initrd=/live/initrd.img + APPEND initrd=/live/initrd.img boot=live components LABEL local MENU LABEL Boot from local disk