Chainloading Qubes from Debian grub

Hey y’all,

I have Debian 13 installed on my laptop and want to try out Qubes. I installed it without installing the bootloader. I’ve been trying to add and boot it from the grub menu without success. I’ve tried a few different things, adding a menu entry chainloading grubx64.efi, which brings me to a different grub command line. Trying the Xen efi gives an error saying something about an image needing to be loaded and I think an ACPI error.

I tried loading the config file but that just shows the debian grub background, freezes, and says something about a crap ton of unknown symbols.

I want to get a functioning Qubes boot entry on my Debian grub menu. I tried adding it to my UEFI boot menu anyways but there’s nothing on the temp boot menu/in UEFI settings and it disappears after rebooting.

I am going to try updating my BIOS and trying chainloading the Xen efi again but I don’t see this being a permanent solution as I assume the version number in the efi file name changes with updates.

1 Like

I tried updating the bios but am still having the same problem(s). This is my current config:
`setparams ‘Qubes OS’

insmod part_gpt

insmod btrfs

insmod ext2

set root=‘hd1,gpt1’

configfile /EFI/qubes/grub.cfg

chainloader /EFI/qubes/grubx64.efi`

I get this message upon trying to boot this config.

`EndEntire

file path: /ACPI(a0341de,0)/PCI(1,2)/PCI(0,0)/UnknounMessaging(17)/HD(1,1000,96000,29b9772578099144,2,2)/File(\efi\qubes)/File(grubx64.efi)/EndEntire

Press any key to continue…`

Pressing a key brings me to your basic black low res bash shell.

This is way out of my league, but I’m interested

Is this the whole config? Also, why both configfile and chainloader are present? Isn’t .efi supposed to point to its own config?

Have you tried EFI/BOOT/BOOTX64.EFI?

Something like this seems more logical to me:

menuentry 'qubes' {
  chainloader (hd1.gpt1)/EFI/BOOT/BOOTX64.EFI
}

Or maybe this:

menuentry 'qubes' {
  configfile /EFI/qubes/grub.cfg
}

I’ve found both here: https://unix.stackexchange.com/questions/343632/uefi-chainloading-grub-from-grub

Yeah it totally works, just tested with a grub on a debian live ISO.

I have ignored all menu entries, got into grub command line and loaded grub config with:

> . (hd1.gpt1)/efi/qubes/grub.cfg

Then grub sourced the config and returned me to a command line screen. I then escaped from command line (literally press ESC) and have returned to the list of menu entries, with qubes-related entries now added to it (I checked, they work).

I suggest you also try tinkering from grub command line instead of editing configs and reloading, its faster and more interactive.

Also I haven’t figured out yet how to chainload from grub command line, thus loading the config.


Yep, I can’t chainloader (hd1,gpt1)/efi/qubes/grubx64.efi either, as well as boot/bootx64.efi, with the same error.

Good news though, loading config without saving context as a menuentry works:

menuentry 'chainqubes' {
  configfile (hd1,gpt1)/efi/qubes/grub.cfg
}

I cracked it, you’ve almost got there :slight_smile: :

menuentry 'chainmeharder' {
  set root=(hd1,gpt1)
  chainloader /efi/qubes/grubx64.efi
}

This chainloads right. Your mistake is typo in set root (why not parenthesis?). When I have been testing, not setting root resulted in an empty grub console (just the way you had it).

:frowning: unfortunately it still doesn’t like this.
![PXL_20251104_030001183|663x500](upload://xpc0HUPqRJNh 6k6y3tjQHQntfw8.jpeg)

I’ve tried googling that message it gives to no avail.

Ah the pic didn’t show up. Still getting this message:

/EndEntire
file path: /ACPI(a0341d0,0)/PCI(1,2)/PCI(0,0)/UnknownMessaging(17)/HD(1,1000, 96000, 29b9772578099144,2,2)/File(\efi\qubes)/File(grubx64.efi)/EndEntire

Oh yeah I tried installing with it automatically adding a uefi entry, and that just takes me to that black uefi shell.

Pressing exit does nothing for any of this.

/EndEntire is not an error, if it writes /EndEntire and then something like “Failed to load image” that’s an error.

It it just writes /EndEntire, invoke boot (if you’re in console)

The menuentry just works.

Ah I saw the UnknownMessaging thing in there and thought something was wrong.

I did actually get the “failed to load image” part yesterday.

I did type boot but the Xen efi said something like “no config file” and the grubx64 one went back to a black terminal. Don’t think “configfile /efi/qubes/grub.cfg” or ”. /efi/qubes/grub.cfg" did anything of substance either.

Oh yeah I did do "set root=(hd0,gpt1)” (used the parenthesis) before any of this.

Oh yeah on one of them I believe I saw a “welcome to grub” message flash very briefly before going to the command line, pressing esc still does nothing though.

Then check your paths, maybe it can’t find the image. If you’re using chainloader with correctly set root, grubx64.efi refers to the configuration, thus no need to use configure at all.

chainloader doesn’t work with xen.efi for me either, it only works if I give it grubx64.efi.

Just to be clear, you don’t need to hit esc with chainloader, only if you’re loading config from grub console (i.e. if you’re running “configfile /efi/qubes/grub.cfg” or ”. /efi/qubes/grub.cfg") . Even configfile menuentry returns the menu, not console.

A good way to troubleshoot this would be to get a grub console and then use ls to make sure the config is there. Once you find it, load it into the current grub session with configfile or . and hit esc to return into menu, you should have qubes boot options at this point.

I also would like to note that you used configfile and . without specifying the drive. Use full path with drive for the sake of troubleshooting or make absolutety sure that root is correct and these commands work with set root.

Good point about specifying the full path and making sure root is set right.

Did all of that, still have “welcome to grub” flash briefly and go to a command line with chainloading grubx64, and the config file just takes me to a command line.

:sob: This sucks I really wanted to try out qubes.