Search code examples
linuxsystemdbootloaderarchlinuxmanjaro

Manjaro not showing up in systemd-boot


After hours of trying I'm not able to get Manjaro (Luks, btrfs, lvm) to show up in my systemd-boot menu, and I can't figure out why.

Manjaro is set up with Luks encryption, a btrfs file system, and with LVMs. Boot manager is installed at /boot/efi

Previous to Manjaro, I was already dual booting PopOS and Windows, which were set up with systemd-boot. I have installed Manjaro with the architect image, and selected systemd-boot as the bootloader. After rebooting, the only entry that showed up was Windows. The PopOS entry I managed to fix by chroot'ing into the installation and running update-initramfs.

What I have tried:

  1. Running sudo mkinitcpio -p linux59 inside chroot
  2. Running sudo boot --path="/mnt/boot/efi install" from my host (Pop)
  3. Manually adding the file /boot/efi/loader/entries/Manjaro.conf:
    title Manjaro Linux 5.9
    linux /vmlinuz-5.9-x86_64
    initrd /intel-ucode.img  // Tried with and without this line
    initrd /initramfs-5.9-x86_64.img
    options root=UUID=MFQTMb-ndrw-puyp-3O2T-F7QN-NQmZ-3Ss9LL rw 
    rootflags=subvol=/@ cryptdevice=UUID=6e319df0-69f0-41bd-bf20-d4261d97d67e

Output of sudo lsblk -f - Manjaro is installed on /dev/nvme1n1p4

nvme1n1                                                                                                             
├─nvme1n1p1   vfat        FAT32                               01E2-E38F                               153.2M    69% /mnt/boot/efi
├─nvme1n1p2   vfat        FAT32                               01E2-DF09                                 1.6G    59% /recovery
├─nvme1n1p3   crypto_LUKS 2                                   b7bb66dd-8690-4eca-b881-bf7e662a9336                  
│ └─cryptdata LVM2_member LVM2 001                            aDQNBf-0A0i-KFCs-wUfm-LwGR-FhjC-f7zc9q                
│   └─data-root
│             ext4        1.0                                 445a21c7-c3f4-45bb-b752-8b91c0cb4196      7.9G    90% /
└─nvme1n1p4   crypto_LUKS 1                                   6e319df0-69f0-41bd-bf20-d4261d97d67e                  
  └─cryptroot LVM2_member LVM2 001                            MFQTMb-ndrw-puyp-3O2T-F7QN-NQmZ-3Ss9LL                
    └─vg0-root--lv
              btrfs                                           cb3b0f4f-3639-4b20-9154-f1254bff5fd3    279.8G     3% /mnt/home
  1. sudo sdboot-manage gen - this didn't do anything, I suspect because I have my loader/entries in /boot/efi instead of /boot

What suprised my is that the config entry for PopOS looks different:

title Pop!_OS
linux /EFI/Pop_OS-445a21c7-c3f4-45bb-b752-8b91c0cb4196/vmlinuz.efi
initrd /EFI/Pop_OS-445a21c7-c3f4-45bb-b752-8b91c0cb4196/initrd.img
options root=UUID=445a21c7-c3f4-45bb-b752-8b91c0cb4196 ro quiet loglevel=0 systemd.show_status=false splash rcutree.rcu_idle_gp_delay=1 mem_sleep_default=deep

Also Pop uses a /etc/crypttab, and Manjaro doesn't. All of these differences of course don't need to necessarily mean anything, though.


Solution

  • Solved the issue. As the boot files were installed in /boot, but the bootloader was installed in /boot/efi, the relative path was the latter rather than the former. Solved it by copying the boot files to a dir inside /boot/efi