You are not logged in.
Pages: 1
My config:
- Multi-boot Linux/Windows
- /efi is on separate partition
- /boot is on separate partition
When updating system it stopped because boot was running out of disc space.
I created a new XBOOTLDR partition, which I also referenced in fstab via UUID. Unmounted old boot, mounted new boot partition. Update went well.
When rebooting/starting up then the old kernel is still used, aborting startup. Reason is that the old kernel is loaded whilst /lib/modules/ has new modules only, preventing vfat partitions being mounted. Both, efi and boot are vfat.
I managed to get back into the system by copying the new kernel from the new partition to the old partition. This is not a sustainable solution.
How can I make systemd-boot to use new boot partition and not the old one anymore? What step am I missing? I updated systemd-boot and bootctl output does look good. After startup /boot is mounted to new partition.
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 476,9G 0 disk
├─nvme0n1p1 259:1 0 200M 0 part /efi
├─nvme0n1p2 259:2 0 128M 0 part
├─nvme0n1p3 259:3 0 308,7G 0 part
├─nvme0n1p4 259:4 0 1,1G 0 part
├─nvme0n1p5 259:5 0 18,9G 0 part
├─nvme0n1p6 259:6 0 1,5G 0 part
├─nvme0n1p7 259:7 0 145,3G 0 part /
├─nvme0n1p8 259:8 0 191M 0 part
└─nvme0n1p9 259:9 0 1G 0 part /boot
$ blkid (excerpt)
/dev/nvme0n1p1: LABEL_FATBOOT="ESP" LABEL="ESP" UUID="7C91-EEE7" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI system partition" PARTUUID="2bc77312-5f5e-4583-aff5-dbab1dbbd773"
/dev/nvme0n1p8: SEC_TYPE="msdos" LABEL_FATBOOT="boot" LABEL="boot" UUID="1CDC-637A" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="boot" PARTUUID="eab5f367-6505-4927-89cc-ed3fc076fdba"
/dev/nvme0n1p9: SEC_TYPE="msdos" UUID="29D1-12E5" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="80dd5565-c237-47ab-9be0-bf3b70194fb3"
$ cat /etc/fstab
# Static information about the filesystems.
# See fstab(5) for details.
# <file system> <dir> <type> <options> <dump> <pass>
# /dev/nvme0n1p7
UUID=944efd0f-ff0b-4bfd-801c-c8e7ec5fb329 / btrfs rw,relatime,ssd,discard=async,space_cache=v2,subvolid=5,subvol=/ 0 0
# /dev/nvme0n1p8 LABEL=boot
#UUID=1CDC-637A /boot vfat rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2
# /dev/nvme0n1p9 LABEL=
UUID=29D1-12E5 /boot vfat rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2
# /dev/nvme0n1p1 LABEL=ESP
UUID=7C91-EEE7 /efi vfat rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2
Last edited by schimpfj (2025-10-06 16:41:56)
Offline
https://wiki.archlinux.org/title/System … g_XBOOTLDR
lsblk -o NAME,PARTTYPENAME,MOUNTPOINTS,UUID,FSTYPE
And you did run "bootctl --esp-path=/efi --boot-path=/boot install" after mounting the XBOOTLDR partition to /boot ?
For clarification: the old kernel (you're booting from) is on 1CDC-637A and not on 7C91-EEE7 ?
What happens if you change the partition type GUID of 1CDC-637A away from XBOOTLDR so you have only one partition of that type?
(Make sure to have some live distro at hand in case this results in the system not booting at all anymore)
Online
Thank you for looking into this and your suggestion.
I did not run "bootctl --esp-path=/efi --boot-path=/boot install" but "bootctl update" mentioned slightly further down on that page. I just did run the "...install" now as you suggested but no change.
Correct, the old kernel is on 1CDC-637A and used for booting. But new kernel got installed on 29D1-12E5. 7C91-EEE7 is /efi:
$ lsblk -o NAME,PARTTYPENAME,MOUNTPOINTS,UUID,FSTYPE
NAME PARTTYPENAME MOUNTPOINTS UUID FSTYPE
sda
└─sda1 W95 FAT32 (LBA) /run/media/jochen/ARCH_202510 8662-EA46 vfat
nvme0n1
├─nvme0n1p1 EFI System /efi 7C91-EEE7 vfat
├─nvme0n1p2 Microsoft reserved
├─nvme0n1p3 Microsoft basic data be3cc8e4-36b1-48dc-bfb4-408722464ce9 BitLocker
├─nvme0n1p4 Windows recovery environment E060C82360C80270 ntfs
├─nvme0n1p5 Windows recovery environment 60EEC869EEC83954 ntfs
├─nvme0n1p6 Windows recovery environment 9438727A38725B66 ntfs
├─nvme0n1p7 Linux filesystem / 944efd0f-ff0b-4bfd-801c-c8e7ec5fb329 btrfs
├─nvme0n1p8 Linux extended boot 1CDC-637A vfat
└─nvme0n1p9 Linux extended boot /boot 29D1-12E5 vfat
I renamed the old kernel (1CDC-637A), executed the "bootctl ... install" mentioned above and restarted. I ended up getting prompted whether I want to boot Windows some firmware. Selecting Windows I got prompted for Windows restore key.
Last edited by schimpfj (2025-10-05 15:40:05)
Offline
Sorry for the delay - did you try to change the partition type of nvme0n1p8? (Theory being that only the first one is considered)
Online
I didn't dare. Was trying to keep old partition as backup but will give it a try. However, might take me a while, maybe tonight (CEST).
Offline
You're not supposed to delete any partitions!
Just change he partition type away from XBOOTLDR/"Linux extended boot"
Edit: this is entirely reversible from a live system boot.
Last edited by seth (2025-10-06 06:47:21)
Online
That has done the trick. I changed the partition type and now it is booting correctly. Thank you so much for your swift support, much appreciated.
I learned quite some new lessons during this exercise. I assumed changing partition type will erase partition, to name one. Also, there can only be one XBOOTLDR, for another.
I will mark this thread as closed.
Last edited by schimpfj (2025-10-06 16:45:11)
Offline
Pages: 1