Introduction
I know there are already some threads about the subkject itself, but my situation is slightly different than those, and the appraoch may differ.
I think it should work.
In my experience the difficult bit is the update if NVRAM variables in the PC’s firmware, so be careful with messages coming from update-bootloader…
Good luck
It seems that, there’s a move to have a “/efi” partition rather than “/boot/efi” –
And, with systemd-boot, an additional “Extended Boot Loader Partition” (XBOOTLDR) below “/boot” is also needed …
For what it’s worth, my current Tumbleweed GRUB2-EFI Desktop system –
(Yesterday, I re-created the EFI partition as FAT32 in place of the ages old FAT16 partition … )
# lsblk --fs /dev/sda
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
sda
├─sda1 vfat FAT32 E385-55AF 492,6M 1% /boot/efi
├─sda2 ext4 1.0 System_Root c59a64bf-b464-4ea2-bf3a-d3fd9dded03f 85G 15% /
└─sda3
└─cr_swap swap 1 cr_swap 18e6fb53-b340-41c8-8660-4988a173f445 [SWAP]
#
# LANG=C parted /dev/sda print
Model: ATA Intenso SSD Sata (scsi)
Disk /dev/sda: 120GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 525MB 524MB fat32 EFI system partition boot, esp
2 525MB 118GB 117GB ext4
3 118GB 120GB 2148MB swap
#
# LANG=C fdisk -l /dev/sda
Disk /dev/sda: 111.79 GiB, 120034123776 bytes, 234441648 sectors
Disk model: Intenso SSD Sata
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: 782CEFBA-9790-458F-9159-F55B7969408E
Device Start End Sectors Size Type
/dev/sda1 2048 1026047 1024000 500M EFI System
/dev/sda2 1026048 230246399 229220352 109.3G Linux filesystem
/dev/sda3 230246400 234441614 4195215 2G Linux swap
#
I had the feeling that, the EFI partition had to be the first partition on the disk – for OS compatibility reasons …
But I can’t find anything supporting that thought in the Boot Loader specifications – and also not in the GitHub discussion …
I don’t need other OS compatibilty, From what I know the EFI partition does not have to be the 1st, but I’m trying to find a method that would utmost require a boot from USB, chroot and undo the changes through fstab and update-bootloader.
I’m beginning to suspect that, simply remounting the existing FAT32 EFI system partition on “/efi” and, mounting “XBOOTLDR” on “/boot” would do the trick with the “systemd-boot” –
This ArchWiki text seems to support my suspicion:
Mount the ESP to /efi and additionally mount an “Extended Boot Loader Partition” (XBOOTLDR) to /boot.
This can be useful when a previously created ESP is too small to hold multiple boot loaders and/or kernels but the ESP cannot be easily resized (such as when installing Linux after Windows to dual boot.
This method is supported by at least systemd-boot.