Install Dual Boot with Existing small EFI Partition

I have Windows 11 Enterprise installed on my Laptop and want to install OpenSUSE Tumbleweed as Dual Boot option.

During installation it suggested to use the existing EFI Boot partition and mount that as /boot/efi, and create two additional partitions from the free space, root and swap.

After installation I got an Error when it tried to install the kernel.

Command ‘[[“/usr/bin/sdbootutil”,"add-all-kernels]]’
ERROR: No free space in /boot/efi for new kernel

The existing EFI Boot partition is only 100MB, and this is probably too small to install Dual Boot.

I cannot increase the size of the EFI Boot partition since it is the first partition before the Windows partition.

Is there any way to work around this problem?

User grub2-efi instead of grubbls.

1 Like

The simplest solution by far should be to install TW afresh, selecting grub-efi instead of the default grubbls. That default puts kernels on the VFAT ESP, while grub-efi keeps them in a traditional location, on a native Linux filesystem.

You could have been a little more specific.
At the Installation Summary it was set to GRUB BLS. I changed the configuration to use GRUB EFI instead.

This is how little disk space you need for Tumbleweed or Slowroll in your ESP (EFI System Partition) if you use the normal “grub2-efi” bootloader:

The default is now “grub2-bls” which copies all the kernels and the initrds to the ESP. But the traditional “grub2-efi” is just fine.

@DJViking One should really look at future proofing and increase the size of /boot/efi I use 4GB, it works fine with Windows 11…

lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
zram0       254:0    0   3.8G  0 disk [SWAP]
nvme0n1     259:0    0 953.9G  0 disk 
├─nvme0n1p1 259:1    0     4G  0 part /boot/efi
├─nvme0n1p2 259:2    0    16M  0 part <== windows
├─nvme0n1p3 259:3    0 249.3G  0 part  <== windows
├─nvme0n1p4 259:4    0   741M  0 part  <== windows
└─nvme0n1p5 259:5    0 699.9G  0 part /var
                                      /usr/local
                                      /home
                                      /root
                                      /srv
                                      /opt
                                      /.snapshots
                                      /

Only thing is grub-bls doesn’t support dual/multibooting, so either use efibootmgr -n X option or in the case of the Dell F12 to get to the BIOS boot menu and boot Windows 11 Pro.

…which is a crucial feature for a Linux distro IMHO. I don’t understand why grub-bls is the new default.

4 Likes

@shundhammer dunno, I rarely multiboot, that’s just a test system it had Leap 16.0 on it, just wanted to test with grub-bls… The features are there, just not implemented, that may be an option in the future, hence my comment about “Future Proofing”.

Oh @DJViking grub-efi works fine on 4GB, I’ve been using 4GB for a year now on systems since the move was first slated and also that was used on Aeon…

Hello. Whenever I dual-boot with Windows, I separate the boot/efi partitions for each system. That is, I have one boot/efi partition for Windows and another boot/efi partition for Linux.
This system has never caused me any problems, either with Windows or Linux updates.

1 Like

Actually it’s the idea behind the ESP that you only need one as a central place to boot any of the installed systems from.

1 Like

Triple boot: Windows 11 / Tumbleweed grub2-efi / Tumbleweed systemd-boot

  1. Windows 11
twfde:~ # lsblk -f /dev/nvme0n1p1 /dev/nvme0n1p2 /dev/nvme0n1p3 /dev/nvme0n1p4
NAME      FSTYPE FSVER LABEL       UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
nvme0n1p1 vfat   FAT32 SYSTEM_DRV  589C-AC99                                           
nvme0n1p2                                                                              
nvme0n1p3 ntfs         Windows-SSD 20009E4B009E27B4                                    
nvme0n1p4 ntfs         WINRE_DRV   AAC09FBAC09F8AE9                                    
twfde:~ # 
  1. Tumbleweed grub2-efi
twfde:~ # lsblk -f /dev/nvme0n1p1 /dev/nvme0n1p5 
NAME      FSTYPE FSVER LABEL      UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
nvme0n1p1 vfat   FAT32 SYSTEM_DRV 589C-AC99                                           
nvme0n1p5 btrfs                   32e3b88f-b3c0-47cd-8cc3-d1ae89542954                
twfde:~ # 
  1. Tumbleweed systemd-boot
twfde:~ # lsblk -f /dev/nvme0n1p6 /dev/nvme0n1p7
NAME      FSTYPE      FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
nvme0n1p6 crypto_LUKS 2           b7197945-0144-46f4-8ea0-565a470b45ed                
└─cr_root btrfs                   c029b5ff-b838-4364-ba98-f961222f4d21   35,3G    27% /
...
nvme0n1p7 vfat        FAT32 efi   6FBE-0CB6                             614,8M    40% /boot/efi
twfde:~ # 

Service purge-kernels reports success:

twfde:~ # systemctl status purge-kernels.service 
○ purge-kernels.service - Purge old kernels
     Loaded: loaded (/usr/lib/systemd/system/purge-kernels.service; enabled; preset: enabled)
     Active: inactive (dead) since Wed 2025-12-24 09:40:00 CET; 11min ago
   Duration: 249ms
 Invocation: 76f6d04646b1485f8d17a9eb673d1d22
    Process: 8347 ExecStart=/usr/bin/zypper -n purge-kernels (code=exited, status=0/SUCCESS)
    Process: 8348 ExecStartPost=/bin/rm -f /boot/do_purge_kernels (code=exited, status=0/SUCCESS)
   Main PID: 8347 (code=exited, status=0/SUCCESS)
        CPU: 275ms

Dez 24 09:40:00 twfde systemd[1]: Starting Purge old kernels...
Dez 24 09:40:00 twfde systemd[1]: Started Purge old kernels.
Dez 24 09:40:00 twfde zypper[8347]: Installierte Pakete werden gelesen...
Dez 24 09:40:00 twfde zypper[8347]: Säuberung von veralteten Kerneln wird vorbereitet...
Dez 24 09:40:00 twfde zypper[8347]: Konfiguration: latest,latest-1,running
Dez 24 09:40:00 twfde zypper[8347]: Kernel Release läuft: 6.18.2-1-default
Dez 24 09:40:00 twfde zypper[8347]: Kernel arch läuft: x86_64
Dez 24 09:40:00 twfde zypper[8347]: Paketabhängigkeiten werden aufgelöst...
Dez 24 09:40:00 twfde zypper[8347]: Keine auszuführenden Aktionen.
Dez 24 09:40:00 twfde systemd[1]: purge-kernels.service: Deactivated successfully.
twfde:~ # 

However it skips 6.17.3-1-default :

twfde:~ # du -hd1 /boot/efi/b04244407cec4d3abdec06daff3678cc
196M    /boot/efi/b04244407cec4d3abdec06daff3678cc/6.17.3-1-default
134M    /boot/efi/b04244407cec4d3abdec06daff3678cc/6.17.6-1-default
75M     /boot/efi/b04244407cec4d3abdec06daff3678cc/6.18.2-1-default
404M    /boot/efi/b04244407cec4d3abdec06daff3678cc
twfde:~ # 
1 Like

Ich habe auch mal ein Dual-Boot-System eingerichtet: openSUSE Tumbleweed und EndeavourOS.

Allerdings wurde der Bootloader ständig beschädigt.

Ich glaube, die beiden vertragen sich nicht.

Google Translation;

I also once set up a dual-boot system: openSUSE Tumbleweed and EndeavourOS.

However, the bootloader kept getting corrupted.

I think the two operating systems don’t get along.

When installing two or more operating systems on one computer, there are many options that do not work well and only a few that always work without problems.

  1. Disable Compatibility Support Module in UEFI
  2. Use separate EFI System Partitions for each system
1 Like