Has anyone used iPXE to boot Garuda?

I was wondering if anyone has made an iPXE script to netboot Garuda for installation. I run a local instance of Netboot XYZ on my network via the LinuxServer IO container.

Typically I just use one of the existing images on netboot.xyz, but since Garuda isn't available there, I tried my hand at making one on my local environment with no luck. I've never tried it before, but my steps were:

  • Downloaded the gnome build iso and extracted it
  • Pointed the kernel and initrd to the chipset ucode imgs and the initramfs img
  • Added a Garuda entry to my local menu files

After selecting the build, it downloads and starts loading fine, but it fails part way through loading the preboot environment, and just drops me to a shell in the partially loaded setup, erroring with:

:: Mounting '/dev/disk/by-label' to '/run/miso/bootmnt'
Waiting 30 seconds for device /dev/disk/by-label
ERROR: '/dev/disk/by-label' device did not show up after 30 seconds

Anyone have any ideas? Has anyone else made an iPXE boot setup for Garuda?

For reference, the relevant portion of my current config looks like this:

:boot
imgfree
set url ${live_endpoint}/garuda/${garuda_version}
kernel ${url}/boot/vmlinuz-x86_64 
initrd ${url}/boot/intel_ucode.img
initrd ${url}/boot/amd_ucode.img
initrd ${url}/boot/initramfs-x86_64.img
imgargs vmlinuz-x86_64 initrd=intel_ucode.img initrd=amd_ucode.img initrd=initramfs-x86_64.img archisobasedir=garuda ${ipparam} archiso_http_srv=${url} verify=n ip=dhcp net.ifnames=0 BOOTIF=01-${netX/mac} cgroup_no_v1=all
boot

I've never tried to write my own before, especially with an unfamiliar distro, so I'm sure I probably made errors here. That said, Arch works with the default config provided by netboot, and I know that it does connect and download all the relevant files for Garuda from my local environment correctly, and it clearly at least starts loading the preboot environment. I'm just not sure if I'm passing the boot configurations correctly or if I may need different files than the ones I extracted from the ISOs.

Thanks

Good to hear that Garuda will now be used in companies.

I'm sorry I think you may have commented in the wrong thread? This is purely for use in my homelab environment because I hate having to make and keep physical media to play around with different distros, so I'm not sure where the implication that I was looking to set it up for a company could have come from.

I think I understand the error, but I don't pretend to know the best way to work around it. The drive label defaults to the USB label name (for the installation USB.) The bootstrap is timing out because it can't find a drive with that label. In network boot case, the drive label needs to be something other than a liveUSB, presumably the label of the drive where the ISO image/archive is stored. The label being searched for can be edited in the /boot/grub/kernels.cfg. What that edit should look like is what I don't understand.

My guess is that this is considered a non-standard install and would't be officially supported. However, if you do solve it, posting your solution would be helpful to the community.

2 Likes

This actually wound up being a huge help! I began digging around /boot/grub/kernels.cfg and realized that Garuda seems to use Manjaro's miso, which means that the arguments I passed weren't the right ones because I incorrectly assumed they'd be the same commands used by arch. I changed my kernel config so that it now reads:

:boot
imgfree
set url ${live_endpoint}/garuda/${garuda_version}
kernel ${url}/boot/vmlinuz-x86_64 misobasedir=garuda misolabel=GARUDA_GNOME_SOARING_ miso_http_srv=${url} ${ipparam} nouveau.modeset=1 i915.modeset=1 radeon.modeset=1 driver=free tz=UTC lang=en_US keytable=us initrd=intel_ucode.img initrd=amd_ucode.img initrd=initramfs-x86_64.img ${cmdline}
initrd ${url}/boot/amd_ucode.img
initrd ${url}/boot/intel_ucode.img
initrd ${url}/boot/initramfs-x86_64.img
boot

This let me get further, but unfortunately I ran into a different issue:
overlayfs: unrecognized mount option "lowerdir=" or missing value

Any ideas?

Sorry, that's one error I've never seen! It may have something to do with fstab or a path problem. Booting has a lot of moving parts - this error probably occurs after grub transfers control to kernel startup, but that is just a guess.