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.
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.
Belangrijk om te weten is dat GRUB een andere notatie van drives en partities hanteert dan Linux:
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.
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:
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.
Geen opmerkingen:
Een reactie posten
Opmerking: Alleen leden van deze blog kunnen een reactie posten.