This is a simple method to customize a Debian Installer image, for example in order to preseed the installation. The method is viable if you want to install Debian on a EFI system booting from a USB stick, which should be a common enough use case.
First create a FAT32 filesystem on the removable device and mount it. The device is sdX in the example.
parted --script /dev/sdX mklabel msdos parted --script /dev/sdX mkpart primary fat32 0% 100% mkfs.vfat /dev/sdX1 mount /dev/sdX1 /mnt/data/
Then copy to the USB stick the installer ISO image you would like to modify, debian-12.4.0-amd64-netinst.iso here.
# Mount the ISO filesystem and copy its contents to the stick mount -o loop debian-12.4.0-amd64-netinst.iso /mnt/cdrom/ rsync -av /mnt/cdrom/ /mnt/data/ umount /mnt/cdrom
Alternative method (may be needed with non-Debian ISO images):
kpartx -v -a debian-12.4.0-amd64-netinst.iso # Mount the first partition on the ISO and copy its contents to the stick # (replace "loop0" with the actual loop device assigned by kpartx) mount /dev/mapper/loop0p1 /mnt/cdrom/ rsync -av /mnt/cdrom/ /mnt/data/ umount /mnt/cdrom # Same story with the second partition on the ISO mount /dev/mapper/loop0p2 /mnt/cdrom/ rsync -av /mnt/cdrom/ /mnt/data/ umount /mnt/cdrom umount /mnt/data
You can now edit the files on the USB stick at will. For example, you can add a preseed file called /mnt/data/preseed.cfg and add preseed/file=/cdrom/preseed.cfg to the kernel command line in /mnt/data/boot/grub/grub.cfg as follows:
linux /install.amd/vmlinuz vga=788 --- quiet preseed/file=/cdrom/preseed.cfg
When you're done, run umount /mnt/data and remove the USB stick. You should be able to boot from it to install Debian normally.