Hi,

Paul Duncan wrote:
> So, I would like to boot from a Debian live ISO with the following kernel
> parameters (set in grub.cfg).
>    console=ttyUSB0,19200n8
>
> Now, I can mount up the ISO in loop mode, and get into grub.cfg, but how do
> I write this back to the ISO so that I can put in on a USB flash drive?

After having copied /boot/grub/grub.cfg from the ISO to ./grub.cfg and
having edited it, you could create a new ISO from the original one:

  orig_iso=debian-live-13.1.0-amd64-standard.iso
  new_iso=test.iso

  xorriso -indev "$orig_iso" -outdev "$new_iso" \
          -map ./grub.cfg /boot/grub/grub.cfg \
          -boot_image any replay \
          -compliance no_emul_toc -padding included

See also
  
https://wiki.debian.org/RepackBootableISO#In_xorriso_load_ISO_tree_and_write_modified_new_ISO

(You are aware that "live-*-standard" offers no graphical desktop ?)

-----------------------------------------------------------------  
For the more adventurous:

Looking into /boot/grub/grub.cfg of
debian-live-13.1.0-amd64-standard.iso it should be possible to patch
the changed file into a copy of the Debian Live image.

The following procedure is intended for a not mounted "$iso".

Make a copy of the ISO as playground:

  iso=test.iso
  cp debian-live-13.1.0-amd64-standard.iso "$iso"

Copy grub.cfg out of the ISO:

  xorriso -indev "$iso" -osirrox on -extract /boot/grub/grub.cfg grub.cfg

  chmod u+w grub.cfg

Learn the size of grub.cfg

  ls -l grub.cfg

(mine says 1709 bytes) and memorize it, because your editing will have
to preserve exactly this size.

Edit the copied file  grub.cfg  and insert the text pieces as needed.
Remove exactly the same number of characters from the remark lines
in the file in order to keep its size unchanged. Verify by ls -l.

Learn the position of the file's content in the ISO:

  xorriso -indev "$iso" -find /boot/grub/grub.cfg -exec report_lba --

which will report on stdout something like

  Report layout: xt , Startlba ,   Blocks , Filesize , ISO image path
  File data lba:  0 ,     3285 ,        1 ,     1709 , '/boot/grub/grub.cfg'

Important is the number under "Startlba" (here: 3285). Multiply it by
the ISO block size of 2048 to get 6727680.
Now you can compose the dd run for putting your edited grub.cfg content
into the ISO:

  dd if=grub.cfg of="$iso" conv=notrunc bs=1 seek=6727680 count=1709
  
Mount the ISO and look into its /boot/grub/grub.cfg to verify that the
new content is present.

-----------------------------------------------------------------  

john doe wrote:
> I would start at
> https://wiki.debian.org/ManipulatingISOs#Remaster_an_Installation_Image

This is about of the same age as the Mac, which would match.
But the shown runs of genisoimage and xorriso deal with the ISOLINUX
bootloader for Legacy BIOS, not with the GRUB bootloader for EFI.


Have a nice day :)

Thomas

Reply via email to