Just installed a freshly downloaded Qubes R4.1.0 beta1 on my system. Got greeted with a Reboot and select proper boot device. Check UEFI troubleshooting page to set up efi and realize now it uses grub. Can you guys plz help me set it up in the right way.
do you mean that, there’s no qubes os entry in bootloader menu ? and can you tell. are you using dual boot / dual disk / trying to install to usb stick ?
Fresh new installation on an SSD using usb installer. No Qubes selection menu appears when booted. No other operating system installed.
attach your qubes os installation media, and boot into qubes os rescue, continue and enter your disk pass.
mount /dev/sdX1 /mnt/efi ## your /boot/efi device mount /dev/sdX2 /mnt ## your /boot device efibootmgr -v -c -u -L QubesOS -l /EFI/qubes/grubx64.efi -d /dev/sdX -p 1 ## you can change QubesOS to any name you like umount /mnt/efi umount /mnt poweroff ## i prefer poweroff than reboot, my device issue.
Tried those steps, and still it doesn’t work
efibootmgr -v in the shell, can you take a full pict of the output ?
oh my bad, so sorry it should be
-d /dev/sdX -p 1, in your case here’s the code :
efibootmgr -v -c -u -L QubesOS -l /EFI/qubes/grubx64.efi -d /dev/sda -p 1
Tried the corrected command still the same error. Might try reinstalling the Qubes all over again. Thanks for your help though
So I decided to investigate the grubx64.efi and found out that it’s entirely empty!
/boot/efi/EFI/BOOT folder are there any files end with .efi and .cfg? if yes : do
efibootmgr -v -c -u -L QubesOS -l /EFI/BOOT/*.efi -d /dev/sda -p 1
Note : change * with filename you found inside. ex : BOOTX64.efi
Another option is rebuild the bootloader :
Some firmware will not recognize the default Qubes EFI configuration. As such, it will have to be manually edited to be bootable. This will need to be done after every kernel and Xen update to ensure you use the most recently installed versions.
- Copy the
/boot/efi/EFI/BOOT/(the contents of
/boot/efi/EFI/BOOTshould be identical to
/boot/efi/EFI/qubesbesides what is described in steps 2 and 3):
cp -r /boot/efi/EFI/qubes/. /boot/efi/EFI/BOOT
mv /boot/efi/EFI/BOOT/xen.cfg /boot/efi/EFI/BOOT/BOOTX64.cfg
/boot/efi/EFI/BOOT/BOOTX64.efi. For example, with Xen 4.8.3 (you may need to confirm file overwrite):
cp /boot/efi/EFI/qubes/xen-4.8.3.efi /boot/efi/EFI/qubes/xen.efi cp /boot/efi/EFI/qubes/xen-4.8.3.efi /boot/efi/EFI/BOOT/BOOTX64.efi
- Point boot manager :
efibootmgr -v -c -u -L QubesOS -l /EFI/BOOT/BOOTX64.efi -d /dev/sdX -p 1
Checked the efi/EFI/BOOT directory and it’s empty
Tried copying qubes files to BOOT but there’s no xen.cfg file but instead there’s grub.cfg
fonts grub.cfg grubx64.efi xen-4.14.2.efi
Also I assume that the above steps apply to Qubes 4.0.4?
No it would work to with 4.1, here’s your :
cp -r /boot/efi/EFI/qubes/. /boot/efi/EFI/BOOT mv /boot/efi/EFI/BOOT/grub.cfg /boot/efi/EFI/BOOT/BOOTX64.cfg cp /boot/efi/EFI/qubes/xen-4.12.2.efi /boot/efi/EFI/qubes/xen.efi cp /boot/efi/EFI/qubes/xen-4.12.2.efi /boot/efi/EFI/BOOT/BOOTX64.efi efibootmgr -v -c -u -L QubesOS -l /EFI/BOOT/BOOTX64.efi -d /dev/sda -p 1
Hey tried this, now boot device does show up but ends with this error:
xen 4.14.2 (c/s) EFI loader
Using configuration file ‘BOOTX64.cfg’
No Dom0 kernel image specified.
sorry been a while, i forgot to reply.
Boot into your qubes os rescue, continue and enter your disk pass / you can do with other system to make easier copy paste command.
Mount your /boot and /boot/efi partition into /mnt (boot) and /boot/efi (/mnt/efi) (the command below i provide to you if you use my mounting recommendation).
GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="gfxterm" GRUB_CMDLINE_LINUX="rd.luks.uuid=luks-<YOUR DISK UUID> rd.luks.uuid=luks-<YOUR SECOND DISK UUID> rd.lvm.lv=qubes_dom0/root rd.lvm.lv=qubes_dom0/swap plymouth.ignore-serial-consoles rd.driver.pre=btrfs rhgb quiet" GRUB_DISABLE_RECOVERY="true" GRUB_THEME="/boot/grub2/themes/qubes/theme.txt" GRUB_CMDLINE_XEN_DEFAULT="console=none dom0_mem=min:1024M dom0_mem=max:4096M ucode=scan smt=off gnttab_max_frames=2048 gnttab_max_maptrack_frames=4096" GRUB_DISABLE_OS_PROBER="true" copy above text to your /etc/default/grub then run grub2-mkconfig /mnt/efi/EFI/BOOT/BOOTX64.cfg
umount /mnt and /mnt/efi
Note: you can check your disk uuid with ```ls -l /dev/disk/by-uuid/
if you just have 1 disk, delete additional "rd.luks.uuid=luks- in /etc/default/grub
if you have 2 disk, the first uuid is nvme0n1p3, second is nvme1n1p1 or sda3 and sdb1
everything should be work now.
So after doing some deep digging and researching countless articles all over the internet, I found the solution right on the Qubes OS’s UEFI troubleshooting page and I was finally able to successfully boot the system. So I followed the guide to create a xen.cfg file and fill it with the current values. Then using this guide which was also suggested by you, I got to the point where the boot entry was visible in the boot menu, but after starting it ended up with a no kernel image found error. So I copied the vmlinuz kernel and initramfs files to
mnt/efi/EFI/BOOT. And when I rebooted it started to load the OS. So then I decided to make an efi entry for the grub bootloader (since grub.efi, grub.cfg where in the BOOT folder) and to my surprise grub did show up and loaded by default. Interesting thing is if I decide to remove BOOTX64.efi entry with
efibootmgr -b <boot order number> -B and its related files, grub doesn’t work. So I have to keep both the entries in order to start QubesOS.
I might try your latest suggestion to check if I can start with just the grub entry. Thanks for your help and you have been a great!