You are not logged in.

#1 2023-05-30 11:00:39

vr4b4c
Member
Registered: 2008-12-30
Posts: 37

[SOLVED] systemd-boot missing Arch entry - separate /efi and /boot

I am missing Arch entry after Installation, and after installation reboot I see only the followin:

GPT fdisk (gdisk)
Reboot into Firmware Interface
Boot in 4s.

Where the "GPT fdisk (gdisk)" leads to "Error loading \EFI\tools\gdisk_x64.efi: Unsupported"

This is an Dell XPS 13 9350 FHD Notebook, with 1TB NVMe disk, with separated /efi and /boot partition and encrypted btrfs. I created correct EFI (ef00) and boot (ea00) partition, formated as Fat32, and ecrypted 100GB btrfs as seen below. And this is an systemd-boot, Grub is not an option.

root@archiso ~ # sgdisk -p /dev/nvme0n1 
Disk /dev/nvme0n1: 1953525168 sectors, 931.5 GiB
Model: Samsung SSD 970 EVO Plus 1TB            
Sector size (logical/physical): 512/512 bytes
Disk identifier (GUID): 497A8B73-64E1-4132-9999-D9F4743C9882
Partition table holds up to 128 entries
Main partition table begins at sector 2 and ends at sector 33
First usable sector is 34, last usable sector is 1953525134
Partitions will be aligned on 2048-sector boundaries
Total free space is 1740664173 sectors (830.0 GiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         1050623   512.0 MiB   EF00  EFI
   2         1050624         3147775   1024.0 MiB  EA00  ARCH_BOOT
   3         3147776       212862975   100.0 GiB   8300  ARCH_LUKS
root@archiso ~ # 

About the btrfs loyout and how it is mounted:

export disk="/dev/nvme0n1"
cryptsetup luksOpen ${disk}p3 archroot
export sv_opts="rw,noatime,compress-force=zstd:1,space_cache=v2,discard=async"
mount -o ${sv_opts},subvol=@ /dev/mapper/archroot /mnt
mount -o ${sv_opts},subvol=@home /dev/mapper/archroot /mnt/home
mount -o ${sv_opts},subvol=@snapshots /dev/mapper/archroot /mnt/.snapshots
mount -o ${sv_opts},subvol=@cache /dev/mapper/archroot /mnt/var/cache
mount -o ${sv_opts},subvol=@libvirt /dev/mapper/archroot /mnt/var/lib/libvirt
mount -o ${sv_opts},subvol=@log /dev/mapper/archroot /mnt/var/log
mount -o ${sv_opts},subvol=@tmp /dev/mapper/archroot /mnt/var/tmp
mount -o rw,noatime ${disk}p1 /mnt/efi
mount -o rw,noatime ${disk}p2 /mnt/boot

root@archiso ~ # mount
...
/dev/mapper/archroot on /mnt type btrfs (rw,noatime,compress-force=zstd:1,ssd,discard=async,space_cache=v2,subvolid=256,subvol=/@)
/dev/mapper/archroot on /mnt/home type btrfs (rw,noatime,compress-force=zstd:1,ssd,discard=async,space_cache=v2,subvolid=257,subvol=/@home)
/dev/mapper/archroot on /mnt/.snapshots type btrfs (rw,noatime,compress-force=zstd:1,ssd,discard=async,space_cache=v2,subvolid=258,subvol=/@snapshots)
/dev/mapper/archroot on /mnt/var/cache type btrfs (rw,noatime,compress-force=zstd:1,ssd,discard=async,space_cache=v2,subvolid=259,subvol=/@cache)
/dev/mapper/archroot on /mnt/var/lib/libvirt type btrfs (rw,noatime,compress-force=zstd:1,ssd,discard=async,space_cache=v2,subvolid=260,subvol=/@libvirt)
/dev/mapper/archroot on /mnt/var/log type btrfs (rw,noatime,compress-force=zstd:1,ssd,discard=async,space_cache=v2,subvolid=261,subvol=/@log)
/dev/mapper/archroot on /mnt/var/tmp type btrfs (rw,noatime,compress-force=zstd:1,ssd,discard=async,space_cache=v2,subvolid=262,subvol=/@tmp)
/dev/nvme0n1p1 on /mnt/efi type vfat (rw,noatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro)
/dev/nvme0n1p2 on /mnt/boot type vfat (rw,noatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro)
root@archiso ~ # 

bootctl installed with:

[root@archiso /]# bootctl --esp-path=/efi --boot-path=/boot install
Created "/efi/EFI".
Created "/efi/EFI/systemd".
Created "/efi/EFI/BOOT".
Created "/efi/loader".
Created "/boot/loader".
Created "/boot/loader/entries".
Created "/boot/EFI".
Created "/boot/EFI/Linux".
Copied "/usr/lib/systemd/boot/efi/systemd-bootx64.efi" to "/efi/EFI/systemd/systemd-bootx64.efi".
Copied "/usr/lib/systemd/boot/efi/systemd-bootx64.efi" to "/efi/EFI/BOOT/BOOTX64.EFI".
Random seed file /efi/loader/random-seed successfully written (32 bytes).
Created EFI boot entry "Linux Boot Manager".
[root@archiso /]# 

while trying to debug:

[root@archiso /]# bootctl
System:
      Firmware: UEFI 2.40 (American Megatrends 5.11)
 Firmware Arch: x64
   Secure Boot: disabled (disabled)
  TPM2 Support: no
  Boot into FW: supported

Current Boot Loader:
      Product: systemd-boot 253.4-1-arch
     Features: ✓ Boot counting
               ✓ Menu timeout control
               ✓ One-shot menu timeout control
               ✓ Default entry control
               ✓ One-shot entry control
               ✓ Support for XBOOTLDR partition
               ✓ Support for passing random seed to OS
               ✓ Load drop-in drivers
               ✓ Support Type #1 sort-key field
               ✓ Support @saved pseudo-entry
               ✓ Support Type #1 devicetree field
               ✓ Boot loader sets ESP information
          ESP: /dev/disk/by-partuuid/028f0200-e411-4347-abbd-285dbec224d1
         File: └─/EFI/systemd/systemd-bootx64.efi

Random Seed:
 System Token: set
       Exists: yes

Available Boot Loaders on ESP:
          ESP: /efi (/dev/disk/by-partuuid/028f0200-e411-4347-abbd-285dbec224d1)
         File: ├─/EFI/systemd/systemd-bootx64.efi
               └─/EFI/BOOT/BOOTX64.EFI

Boot Loaders Listed in EFI Variables:
        Title: Linux Boot Manager
           ID: 0x0000
       Status: active, boot-order
    Partition: /dev/disk/by-partuuid/028f0200-e411-4347-abbd-285dbec224d1
         File: └─/EFI/systemd/systemd-bootx64.efi

Boot Loader Entries:
        $BOOT: /boot (/dev/disk/by-partuuid/3f8dd110-674c-4914-941e-f9c97f0c4f8a)
        token: arch

Default Boot Loader Entry:
         type: Boot Loader Specification Type #1 (.conf)
        title: GPT fdisk (gdisk)
           id: gdisk.conf
       source: /efi//loader/entries/gdisk.conf
          efi: /efi//EFI/tools/gdisk_x64.efi
[root@archiso /]# 


[root@archiso /]# cat /efi/loader/entries/arch.conf
title Arch Linux Encrypted Btrfs
linux /boot/vmlinuz-linux 
initrd /boot/intel-ucode.img 
initrd /boot/initramfs-linux.img
options cryptdevice=UUID=67f3a7b6-773b-4f99-a410-e404d3736ba2:archroot root=UUID=67f3a7b6-773b-4f99-a410-e404d3736ba2 rootflags=subvol=@ rw
[root@archiso /]# cat /efi/loader/loader.conf 
#timeout 3
#console-mode keep
default arch
timeout 4
editor 1
[root@archiso /]# 


[root@archiso /]# bootctl list
         type: Boot Loader Specification Type #1 (.conf)
        title: GPT fdisk (gdisk) (default) (selected)
           id: gdisk.conf
       source: /efi//loader/entries/gdisk.conf
          efi: /efi//EFI/tools/gdisk_x64.efi

         type: Boot Loader Specification Type #1 (.conf)
        title: Arch Linux Encrypted Btrfs (not reported/new)
           id: arch.conf
       source: /efi//loader/entries/arch.conf
        linux: /efi//boot/vmlinuz-linux (No such file or directory)
       initrd: /efi//boot/intel-ucode.img (No such file or directory)
               /efi//boot/initramfs-linux.img (No such file or directory)
      options: cryptdevice=UUID=67f3a7b6-773b-4f99-a410-e404d3736ba2:archroot root=UUID=67f3a7b6-773b-4f99-a410-e404d3736ba2 rootflags=subvol=@ rw

         type: Automatic
        title: Reboot Into Firmware Interface
           id: auto-reboot-to-firmware-setup
       source: /sys/firmware/efi/efivars/LoaderEntries-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
[root@archiso /]# 



[root@archiso /]# tree /boot
/boot
├── EFI
│   └── Linux
├── initramfs-linux-fallback.img
├── initramfs-linux.img
├── intel-ucode.img
├── loader
│   ├── entries
│   └── entries.srel
└── vmlinuz-linux

5 directories, 5 files
[root@archiso /]# tree /efi
/efi
├── EFI
│   ├── BOOT
│   │   └── BOOTX64.EFI
│   ├── Dell
│   │   └── logs
│   │       └── diags_current.xml
│   ├── systemd
│   │   └── systemd-bootx64.efi
│   └── tools
│       ├── gdisk_x64.efi
│       └── shellx64.efi
└── loader
    ├── entries
    │   ├── arch.conf
    │   └── gdisk.conf
    ├── loader.conf
    └── random-seed

9 directories, 9 files
[root@archiso /]# 

Not sure why this is missing "No such file or directory", as seen above from tree there are files:

Any help is welcome.

Last edited by vr4b4c (2023-05-30 14:54:55)

Offline

#2 2023-05-30 11:09:57

Raynman
Member
Registered: 2011-10-22
Posts: 1,539

Re: [SOLVED] systemd-boot missing Arch entry - separate /efi and /boot

vr4b4c wrote:

Not sure why this is missing "No such file or directory", as seen above from tree there are files:

There is no "boot" directory in /efi.

https://wiki.archlinux.org/title/System … ng_loaders

Offline

#3 2023-05-30 12:21:40

Scimmia
Fellow
Registered: 2012-09-01
Posts: 11,465

Re: [SOLVED] systemd-boot missing Arch entry - separate /efi and /boot

Make sure to read the first line in that link, the config file isn't even in the correct place.

Online

#4 2023-05-30 13:12:06

jl2
Member
From: 47° 18' N 8° 34' E
Registered: 2022-06-01
Posts: 251
Website

Re: [SOLVED] systemd-boot missing Arch entry - separate /efi and /boot

EDIT: sorry i didn't know installing xbootldr was so easy. thanks for pointing out, scimmia

Last edited by jl2 (2023-05-30 13:33:05)


Why I run Arch? To "BTW I run Arch" the guy one grade younger.
And to let my siblings and cousins laugh at Arsch Linux...

Offline

#5 2023-05-30 13:21:41

Scimmia
Fellow
Registered: 2012-09-01
Posts: 11,465

Re: [SOLVED] systemd-boot missing Arch entry - separate /efi and /boot

jl2 wrote:

[
You don't need /boot and /efi partitions. UEFI can only read one and can't read the second one. get rid of one partition. I would remove the /efi, it's way easier because then you don't need to reconfigure mkinitcpio.
then reinstall systemd-boot.

This is all incorrect. That is the point of an XBOOTLDR partition.

Online

#6 2023-05-30 14:36:58

vr4b4c
Member
Registered: 2008-12-30
Posts: 37

Re: [SOLVED] systemd-boot missing Arch entry - separate /efi and /boot

systemd-boot will search for boot menu items in esp/loader/entries/*.conf and additionally in boot/loader/entries/*.conf if using XBOOTLDR. Note that entries in esp can only use files (e.g. kernels, initramfs, images, etc.) in esp. Similarly, entries in boot can only use files in boot.

Does this means even I have /efi (ef00) and /boot (ea00) partition, i need to put entries in /boot/loader/entries/ as this is place where Archlinux puts kernel initramfs etc?

After I moved the arch.conf and gdisk.conf from /efi to /boot/loader/entries/ now bootctl list find the files, and also on Notebook start I see entries. I guess the loader.conf need to stay on /efi/loader/ . Not sure if this with double "//" in bootctl list could be an issue in future.

[root@archiso /]# bootctl list
         type: Boot Loader Specification Type #1 (.conf)
        title: GPT fdisk (gdisk) (default) (selected)
           id: gdisk.conf
       source: /boot//loader/entries/gdisk.conf
          efi: /boot//EFI/tools/gdisk_x64.efi

         type: Boot Loader Specification Type #1 (.conf)
        title: Arch Linux Encrypted Btrfs (not reported/new)
           id: arch.conf
       source: /boot//loader/entries/arch.conf
        linux: /boot//vmlinuz-linux
       initrd: /boot//intel-ucode.img
               /boot//initramfs-linux.img
      options: cryptdevice=UUID=67f3a7b6-773b-4f99-a410-e404d3736ba2:archroot root=UUID=67f3a7b6-773b-4f99-a410-e404d3736ba2 rootflags=subvol=@ rw

         type: Automatic
        title: Reboot Into Firmware Interface
           id: auto-reboot-to-firmware-setup
       source: /sys/firmware/efi/efivars/LoaderEntries-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
[root@archiso /]#

Archlinux does boot with correct UUID of /dev/nvme0n1p3 and root subvol.

Last edited by vr4b4c (2023-05-30 15:02:22)

Offline

Board footer

Powered by FluxBB