You are not logged in.
Hello,
I am currently trying to install Arch Linux on a dual-boot system with Windows 10.
I followed the install guide in the wiki and want to use systemd-boot with the XBOOTLDR method as described here in the wiki .
Then I installed the bootloader with bootctl --esp-path=/efi --boot-path=/boot install and created the configuration files.
After rebooting the system as described in the last step, the only entries in the systemd-boot menu are "Windows Boot Manager" and "Reboot into Firmware Interface".
I would expect that the menu also shows my configured Arch Linux entry from the Linux extended boot partition (see config below).
This is my partition layout:
Disk /dev/nvme2n1: 1.82 TiB, 2000398934016 bytes, 3907029168 sectors
Disk model: Samsung SSD 970 EVO Plus 2TB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: AEA93E3A-FAAF-4443-B4D0-622CE41EEC6A
Device Start End Sectors Size Type
/dev/nvme2n1p1 2048 206847 204800 100M EFI System
/dev/nvme2n1p2 206848 239615 32768 16M Microsoft reserved
/dev/nvme2n1p3 239616 3905952635 3905713020 1.8T Microsoft basic data
/dev/nvme2n1p4 3905953792 3907026943 1073152 524M Windows recovery environment
Disk /dev/nvme1n1: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: Samsung SSD 970 EVO Plus 1TB
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 59E5BC17-3CD5-419F-A8CC-9FA7B9B6B271
Device Start End Sectors Size Type
/dev/nvme1n1p1 2048 67110911 67108864 32G Linux swap
/dev/nvme1n1p2 67110912 71305215 4194304 2G Linux extended boot
/dev/nvme1n1p3 71305216 1953525134 1882219919 897.5G Linux filesystem
I use the following partitions:
/dev/nvme2n1p1 as the EFI system partition (already created by the Windows installation)
/dev/nvme1n1p2 as the boot partition (it is formatted as FAT32 and has the "Linux extended boot" flag set, not encrypted)
/dev/nvme1n1p3 as my LUKS encrypted root partition mapped at /dev/mapper/cryptroot
I created the following arch.conf at /boot/loader/entries/arch.conf :
title Arch Linux
linux /vmlinuz-linux
initrd /amd-ucode.img
initrd /initramfs-linux.img
options cryptdevice=/dev/nvme1n1p3:cryptroot root=/dev/mapper/cryptroot
This is my loader.conf at [/efi/loader/loader.conf]
default arch.conf
The config is also detected when running bootctl commands in chroot mode from the install ISO.
bootctl list outputs the following:
Boot Loader Entries:
title: Arch Linux (default)
id: arch.conf
source: /boot/loader/entries/arch.conf
linux: /vmlinuz-linux
initrd: /amd-ucode.img
/initramfs-linux.img
options: cryptdevice=/dev/nvme1n1p3:cryptroot root=/dev/mapper/cryptroot
title: 01-archiso-x86_64-linux.conf
id: 01-archiso-x86_64-linux.conf
source: /sys/firmware/efi/efivars/LoaderEntries-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
title: 02-archiso-x86_64-speech-linux.conf
id: 02-archiso-x86_64-speech-linux.conf
source: /sys/firmware/efi/efivars/LoaderEntries-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
title: 03-archiso-x86_64-ram-linux.conf
id: 03-archiso-x86_64-ram-linux.conf
source: /sys/firmware/efi/efivars/LoaderEntries-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
title: EFI Shell
id: auto-efi-shell
source: /sys/firmware/efi/efivars/LoaderEntries-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
title: Reboot Into Firmware Interface
id: auto-reboot-to-firmware-setup
source: /sys/firmware/efi/efivars/LoaderEntries-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f
bootctl outputs the following:
System:
Firmware: UEFI 2.70 (American Megatrends 5.17)
Secure Boot: disabled
Setup Mode: setup
TPM2 Support: no
Boot into FW: supported
Current Boot Loader:
Product: systemd-boot 249.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
✓ Boot loader sets ESP information
WARNING: The boot loader reports a different ESP UUID than detected!
ESP: /dev/disk/by-partuuid/e9e0fc4f-6152-4e76-a665-4537741866fc
File: └─/EFI/BOOT/BOOTX64.EFI
Random Seed:
Passed to OS: no
System Token: set
Exists: yes
Available Boot Loaders on ESP:
ESP: /efi (/dev/disk/by-partuuid/6ed3076b-303e-495c-b9e6-a5610f29e7eb)
File: └─/EFI/systemd/systemd-bootx64.efi (systemd-boot 249.5-3-arch)
File: └─/EFI/BOOT/bootx64.efi (systemd-boot 249.5-3-arch)
Boot Loaders Listed in EFI Variables:
Title: Linux Boot Manager
ID: 0x0002
Status: active, boot-order
Partition: /dev/disk/by-partuuid/6ed3076b-303e-495c-b9e6-a5610f29e7eb
File: └─/EFI/SYSTEMD/SYSTEMD-BOOTX64.EFI
Title: Windows Boot Manager
ID: 0x0000
Status: active, boot-order
Partition: /dev/disk/by-partuuid/6ed3076b-303e-495c-b9e6-a5610f29e7eb
File: └─/EFI/MICROSOFT/BOOT/BOOTMGFW.EFI
Boot Loader Entries:
$BOOT: /boot (/dev/disk/by-partuuid/01947f36-afa1-e84c-811f-6890d088ece8)
Default Boot Loader Entry:
title: Arch Linux
id: arch.conf
source: /boot/loader/entries/arch.conf
linux: /vmlinuz-linux
initrd: /amd-ucode.img
/initramfs-linux.img
options: cryptdevice=/dev/nvme1n1p3:cryptroot root=/dev/mapper/cryptroot add_efi_memmap
The kernel images are also in the correct location (on the boot partition where the arch.conf file is also located).
That's the content of the /boot directory:
/boot/
├── 5453c9f56bc64a0993b8483d3f286c25
├── amd-ucode.img
├── EFI
│ └── Linux
├── initramfs-linux-fallback.img
├── initramfs-linux.img
├── loader
│ └── entries
│ └── arch.conf
└── vmlinuz-linux
That's the content of the EFI directory:
/efi
├── EFI
│ ├── Boot
│ │ └── bootx64.efi
│ ├── Microsoft
│ │ ├── (Windows stuff here)
│ └── systemd
│ └── systemd-bootx64.efi
├── loader
│ ├── loader.conf
│ └── random-seed
└── System Volume Information
That's my /etc/fstab :
# Static information about the filesystems.
# See fstab(5) for details.
# <file system> <dir> <type> <options> <dump> <pass>
# /dev/mapper/cryptroot
UUID=1529f761-77b5-4f8c-9e40-b2bd6c4417e9 / ext4 rw,relatime 0 1
# /dev/nvme1n1p2
UUID=714A-0596 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2
# /dev/nvme2n1p1
UUID=9696-41B3 /efi vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2
# /dev/nvme1n1p1
UUID=a53626c1-8610-43bc-9d9f-90e0f077569b none swap defaults 0 0
I really don't know what I should try next, so thank you in advance for any help!
Last edited by schnaaabeltier (2021-11-15 10:49:49)
Offline
The XBOOTLDR partition may need to be on the same physical disk as the ESP for systemd-boot to recognize it.
Offline
Wiki wrote:The XBOOTLDR partition may need to be on the same physical disk as the ESP for systemd-boot to recognize it.
Thanks, this worked.
Offline
I wonder if the XBOOTLDR partition needs to be right after the ESP partition? I am trying to split up a combined ESP/boot partition, to facilitate coexistence with OpenSUSE using GRUB with a LUKS encrypted root - I used gparted to shrink the combined vfat ESP/BOOT, and created a new XBOOTLDR as ext3 in the free space, but it has 3rd position since 2 already existed as the LUKS root. So EFI is 1, XBOOTLDR is 3. They are on the same drive. bootctl list show entries from both partitions, but when I boot I only see the entries from ESP.
Offline
I wonder if the XBOOTLDR partition needs to be right after the ESP partition? I am trying to split up a combined ESP/boot partition, to facilitate coexistence with OpenSUSE using GRUB with a LUKS encrypted root - I used gparted to shrink the combined vfat ESP/BOOT, and created a new XBOOTLDR as ext3 in the free space, but it has 3rd position since 2 already existed as the LUKS root. So EFI is 1, XBOOTLDR is 3. They are on the same drive. bootctl list show entries from both partitions, but when I boot I only see the entries from ESP.
Converting the XBOOTLDR partition to vfat fixed the issue.
Offline