Hi, there might be an easier way (still depending on whether such simple file replacements are tolerated by the booting system):
# Choose the desired new files new_kernel=...path.to.desired.new.kernel.in.some.mounted.filesystem... new_initrd=...path.to.desired.new.initrd.in.some.mounted.filesystem... # Choose the files in the ISO to be replaced by the new files. # The ISO needs not to be mounted. (Better it should not be mounted.) # Naively, i assume that it's about these two: old_kernel=/install.amd/xen/vmlinuz old_initrd=/install.amd/xen/initrd.gz # Copy netinst ISO to playground ISO cp debian-11.0.0-amd64-netinst.iso test.iso # Use xorriso multi-session to override the undesired files xorriso -dev test.iso \ -boot_image any keep \ -map "$new_kernel" "$old_kernel" \ -map "$new_initrd" "$old_initrd" This will result in a quite short run of xorriso, which will report something like ISO image produced: 8108 sectors Written to medium : 8288 sectors at LBA 193024 Writing to 'test.iso' completed successfully. (The numbers 8108 and 8288 are result of the sizes of the two dummy files which i used as $new_kernel #and new_initrd. Yours will be substantially larger due to the typical size of an initrd.) Inspection of the boot equipment of test.iso shows no differences, except the new storage position of the El Torito boot catalog and the enlarged ISO image size. When mounted by Linux, the paths /mnt/iso/install.amd/xen/vmlinuz /mnt/iso/install.amd/xen/initrd.gz lead to the content of $new_kernel and $new_initrd. Then it depends on the inner doings of boot loader and starting system, whether this perky change is tolerated. Have a nice day :) Thomas