zaterdag 11 april 2026

Grub 2 dedicated menu met chainloading op een UEFI systeem

We gaan een dedicated grub configuratie maken om een standaard opstart menu te krijgen waarbinnen zowel verschillende linux distributies als een geïnstalleerde windows partritie kan worden aangeroepen.

Ik ga er van uit dat je een NVM SSD in het systeem hebt.

De eerste partitie wordt daarin aangeduid met /dev/nvme0n1p1

Als je een gewone harddisk of SSD hebt, dan heeft deze de naam /dev/sda en de eerste partitie /dev/sda1

In dat geval vervang je nvme0n1 voor sda en nvme0n1p1 voor sda1

In deze uitleg ga ik er van uit dat je in een werkende Linux Mint omgeving werkt. Ik gebruik het liefste xed om tekstfiles te bewerken. in plaats van xed kun je ook nano in de terminal gebruiken. Vervang in ieder commando "xed"in "nano". Als je een gnome omgeving gebruikt kun je gedit gebruiken en in kde kedit. De teksteditor nano werkt altijd.

Een dedicated GRUB partitie met een onaantastbaar hoofdmenu moet je zo zien:
De PC start op met een keurig hoofdmenu dat verwijst naar verschillende operating systemen. Ieder OS heeft een eigen opstarter. Het hoofdmenu laad alleen de OS starters.
Belangrijk om te weten is dat GRUB een andere notatie van drives en partities hanteert dan Linux:

GRUB gebruikt andere notatie:

Linux           GRUB
/dev/nvme0n1p5 of /dev/sda5            (hd0,gpt5)
/dev/nvme0n1p9 of /dev/sda9            (hd0,gpt9)

GRUB moet niet in de EFI partitie worden gezet. GRUB installaties worden daar vaak overschreven door updates van WINDOWS. In plaats van (hd0,gpt5) kan ook gebruik genaaklt worden van de UUID van de betreffende partitie. Dat is robuster als je later nieuwe partities tussenvoegt en de partitie volgnummers wijzigen.

Ik maak een dedicated grub partitie aan in /dev/nvme0n1p9 en geeft deze een FAT32 indeling. Dat doe je het gemakkelijkst met een programma zoals GParted. Kies een ruimte van zo'n 100Mb achteraan in de partitieschema's. 

In de EFI structuur doen we dit:

EFI/
  Boot/
  Microsoft/
  ubuntu/

En op de dedicated GRUBpartitie /dev/nvme0n1p9 doen we net alsof daar een volwaardige linux staat. Met dit verschil dat we het grub menu in grub.cfg handmatig kunnen aanpassen en eenvoudig mooie namen kunnen geven aan onze besturingssystemen.

Om alles robuust te houden gebruiken we niet hd0,gptx, maar de UUID nummers van de partities. Als je later een partitie tussenvoegt en de partitie volgnummers wijzigen zal het OS toch de juiste partitie blijven vinden.

Ik ga er van uit dat het programma efibootmgr is geinstalleerd. Zo niet:

sudo apt install efibootmgr

Installeren

In Linux Mint verwijst /boot/efi naar: nvme0n1p1 en die behoeven we daarom niet apart te mounten. De dedicated grub partitie die we eerder hebben aangemaakt mounten we wel apart met:

sudo mkdir -p /mnt/master-efi
sudo mount /dev/nvme0n1p9 /mnt/master-efi

Let erop dat je de juiste naam gebruikt als jouw partitie niet /dev/nvme0n1p9 is

In de dedicated GRUB partitie gaan we deze structuur plaatsen: 

EFI/
├── BOOT/
│   └── BOOTX64.EFI          ← fallback → jouw GRUB
├── MASTER/
│   ├── grubx64.efi          ← GRUB binary
│   ├── grub.cfg             ← loader (klein!)
│   └── grub_main.cfg        ← jouw echte menu
├── Microsoft/
└── (eventueel ubuntu_backup)

We geven in de terminal de volgende opdracht:

sudo grub-install \
  --target=x86_64-efi \
  --efi-directory=/boot/efi \
  --bootloader-id=MASTER \
  --recheck

Daarmee wordt het volgende bestand aangemaakt:
/boot/efi/EFI/MASTER/grubx64.efi

We plaatsen nu ons eigen dedicated hoofdmenu:

sudo xed /boot/efi/EFI/MASTER/grub_main.cfg

en plakken daarin:

set timeout=30
set default=1

# ---- Windows 11 ----
menuentry "Windows 11" {
    insmod part_gpt
    insmod fat
    search --no-floppy --fs-uuid --set=root F811-D6D1
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

# ---- Linux entries ----
menuentry "Linux Mint 22.3" {
    insmod ext2
    search --no-floppy --fs-uuid --set=root c079e007-51a4-41b2-a736-16108b16a840
    configfile /boot/grub/grub.cfg
}

menuentry "Linux Mint 22.3 voor AI server" {
    insmod ext2
    search --no-floppy --fs-uuid --set=root a43f95de-a0df-488d-99e8-64bb67f1c79d
    configfile /boot/grub/grub.cfg
}

# ---- UEFI/BIOS Setup ----
menuentry "UEFI firmware setup" {
    fwsetup
}

# ---- Extra opties ----
menuentry "Reboot" {
    reboot
}

menuentry "Power Off" {
    halt
}


Let op dat je zelf de juiste UUID nummers gebruikt en niet de mijne klakkeloos overneemt. De getallen achter --set=root moeten dus direct vanuit jouw systeem gekopieerd worden. De UUID van een windows stseem bestaat uit 4-4 tekens.
Voor EXT4 bestandssystemen voor Linux is dat nummer aanzienlijk langer en bestaat dat uit 8-4-4-4-12 tekens.

Nu maken we een loader aan:

sudo xed /boot/efi/EFI/MASTER/grub.cfg

en plakken daarin:

search --fs-uuid --set=root F811-D6D1
set prefix=($root)/EFI/MASTER
configfile $prefix/grub_main.cfg

Hierna stellen we een  terugvaloptie in:

sudo cp /boot/efi/EFI/MASTER/grubx64.efi \ /boot/efi/EFI/BOOT/BOOTX64.EFI


Dit zorgt er voor dat het blijft werken na een BIOS reset, windows installatie of per ongeluk wissen van boot entries.

Nu maken we een boot entry:

sudo efibootmgr -c \
  -d /dev/nvme0n1 \
  -p 1 \
  -L "MASTER GRUB" \
  -l '\EFI\MASTER\grubx64.efi'

We checken de boot volgorde:

efibootmgr

Onthoud het nummer van onze nieuwe MASTER GRUB entry. We passen de bootvolgorde eventueel aan zodat onze entry als eerste bekeken wordt:

sudo efibootmgr -o XXXX,....

Waarbij XXXX het nummer van onze MASTER GRUB is. De andere nummers plaatsen we direct daarachter gescheiden door een komma.
Bijvoorbeeld:

sudo efibootmgr -o 0005,0000,0003,0004,0002

Daarna verwijderen we de oude GRUB naar een backup plaats.

sudo mv /boot/efi/EFI/ubuntu /boot/efi/EFI/ubuntu_backup

zodat linux updates deze setup niet kunnen overschrijven.

Als je nu reboot moet je als het goed is jouw nieuwe menu zien en kunnen booten in iedere entry. na een update van een van de linuxen of windows moet het blijven werken.

-----------------------------------------------------------------------------------------------------------

ALLEEN GEBRUIKEN ALS BOVENSTAAND NIET WERKT
Deze versie werkt met iets andere namen en werkt momenteel op mijn systeem.
________________________________________________________________________

We gaan een dedicated grub configuratie maken om een standaard opstart menu te krijgen waarbinnen zowel verschillende linux distributies als een geïnstalleerde windows partritie kan worden aangeroepen.

Ik ga er van uit dat je een NVM SSD in het systeem hebt.

De eerste partitie wordt daarin aangeduid met /dev/nvme0n1p1

Als je een gewone harddisk of SSD hebt, dan heeft deze de naam /dev/sda en de eerste partitie /dev/sda1

In dat geval vervang je nvme0n1 voor sda en nvme0n1p1 voor sda1

In deze uitleg ga ik er van uit dat je in een werkende Linux Mint omgeving werkt. Ik gebruik het liefste xed om tekstfiles te bewerken. in plaats van xed kun je ook nano in de terminal gebruiken. Vervang in ieder commando "xed"in "nano". Als je een gnome omgeving gebruikt kun je gedit gebruiken en in kde kedit. De teksteditor nano werkt altijd.

Een dedicated GRUB partitie met een onaantastbaar hoofdmenu moet je zo zien:
De PC start op met een keurig hoofdmenu dat verwijst naar verschillende operating systemen. Ieder OS heeft een eigen opstarter. Het hoofdmenu laad alleen de OS starters.
Belangrijk om te weten is dat GRUB een andere notatie van drives en partities hanteert dan Linux:
GRUB gebruikt andere notatie:


Linux                                       GRUB
/dev/nvme0n1p5 of /dev/sda5             (hd0,gpt5)
/dev/nvme0n1p9 of /dev/sda9             (hd0,gpt9)

GRUB moet niet in de EFI partitie worden gezet. GRUB installaties worden daar vaak overschreven door updates van WINDOWS. In plaats van (hd0,gpt5) kan ook gebruik genaaklt worden van de UUID van de betreffende partitie. Dat is robuster als je later nieuwe partities tussenvoegt en de partitie volgnummers wijzigen.

Ik maak een dedicated grub partitie aan in /dev/nvme0n1p9 en geeft deze een FAT32 indeling. Dat doe je het gemakkelijkst met een programma zoals GParted. Kies een ruimte van zo'n 100Mb achteraan in de partitieschema's. 

In de EFI structuur doen we dit:

EFI/
  Boot/
  Microsoft/
  ubuntu/

En op de dedicated GRUBpartitie /dev/nvme0n1p9 doen we net alsof daar een volwaardige linux staat. Met dit verschil dat we het grub menu in grub.cfg handmatig kunnen aanpassen en eenvoudig mooie namen kunnen geven aan onze besturingssystemen.

Om alles robuust te houden gebruiken we niet hd0,gptx, maar de UUID nummers van de partities. Als je later een partitie tussenvoegt en de partitie volgnummers wijzigen zal het OS toch de juiste partitie blijven vinden.

Ik ga er van uit dat het programma efibootmgr is geinstalleerd. Zo niet:

sudo apt install efibootmgr

Installeren

In Linux Mint verwijst /boot/efi naar: nvme0n1p1 en die behoeven we daarom niet apart te mounten. De dedicated grub partitie die we eerder hebben aangemaakt mounten we wel apart met:

sudo mkdir -p /mnt/master-efi
sudo mount /dev/nvme0n1p9 /mnt/master-efi
Let erop dat je de juiste naam gebruikt als jouw partitie niet /dev/nvme0n1p9 is

In de dedicated GRUB partitie gaan we deze structuur plaatsen: 

EFI/
├── BOOT/
│   ├── BOOTX64.EFI          ← fallback → jouw GRUB
│   └── grub.cfg             ← loader (klein!)
├── MASTER/
│   ├── grubx64.efi          ← GRUB binary
│   └── grub.cfg             ← jouw echte menu
├── Microsoft/
└── (eventueel ubuntu_backup)

We geven in de terminal de volgende opdracht:

sudo grub-install \
  --target=x86_64-efi \
  --efi-directory=/boot/efi \
  --bootloader-id=MASTER \
  --recheck

Daarmee wordt het volgende bestand aangemaakt:
/boot/efi/EFI/MASTER/grubx64.efi

We plaatsen nu ons eigen dedicated hoofdmenu:

sudo xed /boot/efi/EFI/MASTER/grub.cfg

en plakken daarin:

set timeout=30
set default=1

# ---- Windows 11 ----
menuentry "Windows 11" {
    insmod part_gpt
    insmod fat
    search --no-floppy --fs-uuid --set=root F811-D6D1
    chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

# ---- Linux entries ----
menuentry "Linux Mint 22.3" {
    insmod ext2
    search --no-floppy --fs-uuid --set=root c079e007-51a4-41b2-a736-16108b16a840
    configfile /boot/grub/grub.cfg
}

menuentry "Linux Mint 22.3 voor AI server" {
    insmod ext2
    search --no-floppy --fs-uuid --set=root a43f95de-a0df-488d-99e8-64bb67f1c79d
    configfile /boot/grub/grub.cfg
}

# ---- UEFI/BIOS Setup ----
menuentry "UEFI firmware setup" {
    fwsetup
}

# ---- Extra opties ----
menuentry "Reboot" {
    reboot
}

menuentry "Power Off" {
    halt
}


Let op dat je zelf de juiste UUID nummers gebruikt en niet de mijne klakkeloos overneemt. De getallen achter 
--set=root
moeten dus direct vanuit jouw systeem gekopieerd worden. De UUID van een windows stseem bestaat uit 4-4 tekens. Voor EXT4 bestandssystemen voor Linux is dat nummer aanzienlijk langer en bestaat dat uit 8-4-4-4-12 tekens.

Nu maken we een loader aan:

sudo xed /boot/efi/EFI/BOOT/grub.cfg

en plakken daarin:

search --fs-uuid --set=root F811-D6D1
set prefix=($root)/EFI/MASTER
configfile $prefix/grub.cfg

Hierna stellen we een  terugvaloptie in:

sudo cp /boot/efi/EFI/MASTER/grubx64.efi \ /boot/efi/EFI/BOOT/BOOTX64.EFI


Dit zorgt er voor dat het blijft werken na een BIOS reset, windows installatie of per ongeluk wissen van boot entries.

Nu maken we een boot entry:

sudo efibootmgr -c \
  -d /dev/nvme0n1 \
  -p 1 \
  -L "MASTER GRUB" \
  -l '\EFI\MASTER\grubx64.efi'

We checken de boot volgorde:

efibootmgr

Onthoud het nummer van onze nieuwe MASTER GRUB entry. We passen de bootvolgorde eventueel aan zodat onze entry als eerste bekeken wordt:

sudo efibootmgr -o XXXX,....

Waarbij XXXX het nummer van onze MASTER GRUB is. De andere nummers plaatsen we direct daarachter gescheiden door een komma.

Bijvoorbeeld:
sudo efibootmgr -o 0005,0000,0003,0004,0002

Daarna verwijderen we de oude GRUB naar een backup plaats.

sudo mv /boot/efi/EFI/ubuntu /boot/efi/EFI/ubuntu_backup

zodat linux updates deze setup niet kunnen overschrijven.

Als je nu reboot moet je als het goed is jouw nieuwe menu zien en kunnen booten in iedere entry. na een update van een van de linuxen of windows moet het blijven werken.






dinsdag 7 april 2026

UEFI Boot volgorde aanpassen

Om de opstartschema's (boot entries) in het UEFI BIOS te hernoemen, zodat je duidelijk kunt zien welke entry bij welk besturingssysteem hoort, kun je de efibootmgr-tool gebruiken. Deze tool laat je toe om UEFI boot entries te beheren, inclusief het hernoemen, verwijderen en wijzigen van de volgorde.

Dit heb je nodig als je een dedicated grub menu hebt gemaakt die in een aparte partitie staat en onafhankelijk is van andere geinstalleerde operating systems.

Stap 1: Installeer efibootmgr (indien niet aanwezig)

sudo apt update sudo apt install efibootmgr

Stap 2: Bekijk de huidige UEFI boot entries


sudo efibootmgr -v

Je ziet een lijst met entries, bijvoorbeeld:

Boot0000* ubuntu Boot0001* Windows Boot Manager Boot0002* grub_p5 Boot0003* grub_p7

Elke entry heeft een
BootXXXX-nummer (bijv. Boot0000),
een naam (bijv.
ubuntu) en een pad naar de EFI-bestanden.

Stap 3: Maak een nieuwe UEFI boot entry

Gebruik het volgende commando om een entry te hernoemen.
Vervang BootXXXX door het nummer van de entry die je wilt
hernoemen en geef een nieuwe naam op.

Voorbeeld: Hernoem Boot0000 van "ubuntu" naar "Linux Mint 22.2".

Je moet eerst een nieuwe maken en kunt dan eventueel de oude verwijderen.

Bijvoorbeeld:

sudo efibootmgr -c -L "Linux Mint 22.2" -l /EFI/ubuntu/grubx64.efi

Uitleg van de opties:

  • -c: Maak een nieuwe boot entry aan (je kunt geen bestaande entry direct hernoemen, dus je maakt een nieuwe met dezelfde EFI-bestanden en verwijdert de oude).
  • -L: De nieuwe naam voor de boot entry.
  • -l: Het pad naar het EFI-bestand (gebruik dubbele backslashes: \\).

Belangrijk:

  • Het pad naar het EFI-bestand moet exact overeenkomen met wat je ziet in de uitvoer van efibootmgr -v.
  • Als je een nieuwe entry maakt, kun je de oude verwijderen (zie Stap 4).

Om de opstartschema's (boot entries) in het UEFI BIOS te hernoemen, zodat je duidelijk kunt zien welke entry bij welk besturingssysteem hoort, kun je de efibootmgr-tool gebruiken. Deze tool laat je toe om UEFI boot entries te beheren, inclusief het hernoemen, verwijderen en wijzigen van de volgorde.

Stap 4: Stel de boot volgorde in (optioneel)

Als je de volgorde van de boot entries wilt wijzigen, 
check eerst met:

sudo efibootmgr -v

gebruik dan:

sudo efibootmgr -o XXXX,YYYY,ZZZZ
bijvoorbeeld:
sudo efibootmgr -o 0001,0004,0002

Om de juiste als eerste te plaatsen. In principe wordt de eerste entry opgestart.
De boot/grub die daarin is geplaatst bepaalt welk opstartmenu het eerste wordt getoond.
De andere worden normaliter niet gebruik

Stap 5: Controleer de gewijzigde UEFI boot entries

Voer opnieuw uit om te controleren of de wijzigingen zijn doorgevoerd:

sudo efibootmgr -v

Check nu eerst op het opstartmenu goed werkt door de PC te herstarten.

Stap 6: Verwijder een oude UEFI boot entry(optioneel)

Start de PC eerst op om te testen of de nieuwe entry werkt.
Bekijk dan eerst welke er nu zijn:

sudo efibootmgr -v

Als je een nieuwe entry hebt gemaakt en de oude wilt verwijderen, gebruik dan:

sudo efibootmgr -b BootXXXX -B

Vervang
BootXXXX door het nummer van de entry die je wilt verwijderen.

bijvoorbeeld

sudo efibootmgr -b 0004 -B

Ik adviseer om de bootentry voor windows NOOIT te verwijderen,
maar als tweede (of derde) entry te laten staan.

Grub 2 dedicated menu met chainloading op een UEFI systeem

We gaan een dedicated grub configuratie maken om een standaard opstart menu te krijgen waarbinnen zowel verschillende linux distributies als...