Remote Install on headless PC with edited GRUB

Hi,

I have a few laptops where the screens are dead but working. I want to do an installation of tumbleweed using a USB thumbdrive burned with openSUSE-Tumbleweed-DVD-x86_64-Current.iso and have SSH access setup automatically.

I found if I edit the ISO’s/boot/x86_64/loader/isolinux.cfg file by editing two default values I can get my test KVM/QEMU BIOS based VM to boot off the ISO with SSH active. Remote installation works fine.

#>>>>>>>>change from harddisk to linux
default linux 

# hard disk
label harddisk
  localboot -2

# install
label linux
  kernel linux
#>>>>>append ssh related keywords
append initrd=initrd splash=silent noapic sshd=1 ssh=1 sshpassword="12345678" showopts

# upgrade
label upgrade
  kernel linux
  append initrd=initrd splash=silent upgrade=1 showopts

# expert menu
label expert
  menu label More ...
  append ->x

# rescue
label rescue
  menu label ->x rescue
  kernel linux
  append initrd=initrd splash=silent rescue=1 showopts

# systemboot
label systemboot
  menu label ->x Boot Linux System
  kernel linux
  append initrd=initrd splash=silent systemboot=1 showopts

# mediacheck
label mediachk
  menu label ->x mediacheck
  kernel linux
  append initrd=initrd splash=silent mediacheck=1 showopts

# memory test
label memtest
  menu label ->x memtest
  kernel memtest

ui		gfxboot bootlogo message
implicit	1
prompt		1
timeout		600

However if the VM is UEFI based - and as one of the laptops will be UEFI - I get stuck. The VM boot screen shows a problem with “No bootable option…” as shown here -

I killed Secure Boot in the UEFI but that didn’t help.

I edited the ISO’s /EFI/BOOT/grub.cfg but that didn’t help either.

So what do I need to edit to get the ssh options functioning for UEFI?

Thanks.

It is only relevant after grub2 is loaded which is not in your case.

You need to edit the grub.cfg you edited, but it looks like you built image without EFI support. Show

xorriso -indev /path/to/image.iso -report_el_torito plain
chris@asus-roc:/data/chris/ISO>$sudo xorriso -indev remote.iso -report_el_torito plain
[sudo] password for root: 
xorriso 1.5.6 : RockRidge filesystem manipulator, libburnia project.

xorriso : NOTE : Loading ISO image tree from LBA 0
xorriso : UPDATE :    5131 nodes read in 1 seconds
xorriso : NOTE : Detected El-Torito boot information which currently is set to be discarded
Drive current: -indev 'remote.iso'
Media current: stdio file, overwriteable
Media status : is written , is appendable
Boot record  : El Torito
Media summary: 1 session, 2249486 data blocks, 4394m data,  964g free
Volume id    : 'openSUSE-Tumbleweed-DVD-x86_64'
El Torito catalog  : 20  1
El Torito images   :   N  Pltf  B   Emul  Ld_seg  Hdpt  Ldsiz         LBA
El Torito boot img :   1  BIOS  y   none  0x0000  0x00     48      138703
El Torito img path :   1  /boot/x86_64/loader/isolinux.bin
El Torito img opts :   1  boot-info-table isohybrid-suitable
chris@asus-roc:/data/chris/ISO>$

It does not really need sudo.

Yes. This image supports only legacy BIOS boot.

No sudo gave issues.

chris@asus-roc:/data/chris/ISO>$xorriso -indev remote.iso -report_el_torito plain
xorriso 1.5.6 : RockRidge filesystem manipulator, libburnia project.

libburn : SORRY : Failed to open device (a pseudo-drive) for reading : Permission denied
libisoburn: NOTE : Pseudo drive 'remote.iso' does not allow reading
Drive current: -indev 'remote.iso'
Media current: stdio file, overwriteable
Media status : is blank
Media summary: 0 sessions, 0 data blocks, 0 data,  968g free
xorriso : NOTE : Tolerated problem event of severity 'SORRY'
xorriso : NOTE : No El Torito information was loaded
xorriso : NOTE : -return_with SORRY 32 triggered by problem severity SORRY
chris@asus-roc:/data/chris/ISO>$

Ok now I’m confused. If I used the original openSUSE-Tumbleweed-DVD-x86_64-Current.iso it can boot both a UEFI and BIOS VM.

UEFI Based VM-

All I have changed in that ISO is /boot/x86_64/loader/isolinux.cfg which buggers booting a UEFI VM.

Original ISO

chris@asus-roc:/data/chris/ISO>$sudo xorriso -indev openSUSE-Tumbleweed-DVD-x86_64-Current.iso -report_el_torito plain
[sudo] password for root: 
xorriso 1.5.6 : RockRidge filesystem manipulator, libburnia project.

xorriso : NOTE : Loading ISO image tree from LBA 0
xorriso : UPDATE :    5131 nodes read in 1 seconds
xorriso : NOTE : Detected El-Torito boot information which currently is set to be discarded
Drive current: -indev 'openSUSE-Tumbleweed-DVD-x86_64-Current.iso'
Media current: stdio file, overwriteable
Media status : is written , is appendable
Boot record  : El Torito , MBR isohybrid cyl-align-off
Media summary: 1 session, 2288427 data blocks, 4470m data,  964g free
Volume id    : 'openSUSE-Tumbleweed-DVD-x86_64'
El Torito catalog  : 20  1
El Torito images   :   N  Pltf  B   Emul  Ld_seg  Hdpt  Ldsiz         LBA
El Torito boot img :   1  BIOS  y   none  0x0000  0x00      4        7458
El Torito boot img :   2  UEFI  y   none  0x0000  0x00  11844         767
El Torito img path :   1  /boot/x86_64/loader/isolinux.bin
El Torito img opts :   1  boot-info-table isohybrid-suitable
El Torito img path :   2  /boot/x86_64/efi
chris@asus-roc:/data/chris/ISO>$

Original ISO supports EFI boot.

Of course, if file is not readable by you. But xorriso itself does not care whether you run it as root or not.

Damn it. It got me thinking. I did a copy of the original openSUSE-Tumbleweed-DVD-x86_64-Current.iso with my ISOMASTER software. It didn;t copy the UEFI boot portion, just the BIOS.

Looking for another ISO burner - stay tuned.

Am I correct that you only want to copy the ISO to a thumb drive?

I would use dd for that. But I wouldn’t call that “burning”. Thumb drives are very sensitive for heat.

I use SUSE Studio Imagewriter for writing iso images on USB pendrive

To clarify what I want to achieve -

I have at least 1 working laptop with a dead screen. I want to install tumblweed via ssh. My method is as follows -

  1. Take standard install iso openSUSE-Tumbleweed-DVD-x86_64-Current.iso and extract image to hard drive.
  2. Edit the /boot/x86_64/loader/isolinux.cfg and //EFI/BOOT/grub.cfg files so that they are set up for installation option by default and with the ssh options enabled.
  3. Copy said edited files back to an ISO for use in VM testing and real world installations.

So far only the BIOS based installs work as required because there is no UEFI boot option after creating an ISO with ISOMaster.

The original install ISO has 2 boot options for BIOS and UEFI -

chris@asus-roc:/data/chris/ISO>$xorriso -indev openSUSE-Tumbleweed-DVD-x86_64-Current.iso -report_el_torito plain
xorriso 1.5.6 : RockRidge filesystem manipulator, libburnia project.

xorriso : NOTE : Loading ISO image tree from LBA 0
xorriso : UPDATE :    5131 nodes read in 1 seconds
xorriso : NOTE : Detected El-Torito boot information which currently is set to be discarded
Drive current: -indev 'openSUSE-Tumbleweed-DVD-x86_64-Current.iso'
Media current: stdio file, overwriteable
Media status : is written , is appendable
Boot record  : El Torito , MBR isohybrid cyl-align-off
Media summary: 1 session, 2288427 data blocks, 4470m data,  935g free
Volume id    : 'openSUSE-Tumbleweed-DVD-x86_64'
El Torito catalog  : 20  1
El Torito images   :   N  Pltf  B   Emul  Ld_seg  Hdpt  Ldsiz         LBA
El Torito boot img :   1  BIOS  y   none  0x0000  0x00      4        7458
El Torito boot img :   2  UEFI  y   none  0x0000  0x00  11844         767
El Torito img path :   1  /boot/x86_64/loader/isolinux.bin
El Torito img opts :   1  boot-info-table isohybrid-suitable
El Torito img path :   2  /boot/x86_64/efi
chris@asus-roc:/data/chris/ISO>$

The generated ISO does not have UEFI.

chris@asus-roc:/data/chris/ISO>$xorriso -indev dummy.iso -report_el_torito plainxorriso 1.5.6 : RockRidge filesystem manipulator, libburnia project.

xorriso : NOTE : Loading ISO image tree from LBA 0
xorriso : UPDATE :    5131 nodes read in 1 seconds
xorriso : NOTE : Detected El-Torito boot information which currently is set to be discarded
Drive current: -indev 'dummy.iso'
Media current: stdio file, overwriteable
Media status : is written , is appendable
Boot record  : El Torito
Media summary: 1 session, 2249486 data blocks, 4394m data,  935g free
Volume id    : 'openSUSE-Tumbleweed-DVD-x86_64'
El Torito catalog  : 20  1
El Torito images   :   N  Pltf  B   Emul  Ld_seg  Hdpt  Ldsiz         LBA
El Torito boot img :   1  BIOS  y   none  0x0000  0x00     48      138703
El Torito img path :   1  /boot/x86_64/loader/isolinux.bin
El Torito img opts :   1  boot-info-table isohybrid-suitable
chris@asus-roc:/data/chris/ISO>$

My experience:

Prepare a USB drive with two partitions. One of those should be a small “vfat” partition, say 100M. And you can use “ext2” on the other partition.

Copy your modified iso files to the “ext2” partition.

Mount the “vfat” partition somewhere – I’ll assume “/mnt” for the sake of this post.

mkdir /mnt/grub2

Install grub2 into the VFAT partition. You can use:

grub2-install --target=x86_64-efi --removable --efi-directory=/mnt  --boot-directory=/mnt

You will then need to hand-craft a “grub.cfg” which you can base on the one on the iso (with suitable modifications). The “grub.cfg” goes in “/mnt/grub2”.

You will need to turn off secure-boot to boot this, or alternatively you will need to manually install shim.

I have done this, except with “--target=i386-efi” to handle a special case.

Nice idea - thanks :+1:

However is there a way to create, say a virtual USB drive? Formating and copying files to a physical USB stick is painfully slow on my PC when I’m testing edits.

I tried mounting ISOs as a loop device but as I learned the hard way those mounts are not editable.

It does not need to be USB; you can simply connect any disk image to VM. Using raw format allows loop-mounting it as well.

I seem to have stalled in resolving this issue fully though I am grateful for the feedback. Besides I’m spending a great deal of time working this out for just 1 laptop with a dead screen.

But what I have decided to do, based on what I have forgotten with initrd, is drop this for now but go back to UEFI/BIOS/GRUB school over the next few weeks (months?) and get reacquainted with boot processes etc. I may even sit my own exam :slight_smile:

Back to school!