![]()
![]()
GRUB 2 is de vervanger van GRUB en is een bootloader, inclusief een programma om GRUB te configureren. Voor Ubuntu is GRUB 2 geïntroduceerd in versie 9.10. Op dit moment is het nog volop in ontwikkeling. De laatste versie 1.97 is stabiel. De grootste verschillen met GRUB 1 is dat menu.lst vervangen is door grub.cfg en dat de partitienummering anders is.
De configuratie van GRUB 2 staat in de volgende bestandshierarchie:
| Bestand/Folder | Betekenis |
|---|---|
| /boot/grub | In deze folder leest de bootloader het configuratiebestand /boot/grub/grub.cfg. Het bestand grub.cfg bevat het menu en wordt met behulp van de bestanden in /etc/grub.d en /etc/default/grub gemaakt. In deze folder staan naast het grub.cfg bestand meerdere *.mod bestanden. Deze worden door de bootloader geladen wanneer het noodzakelijk is. |
| /etc/default/grub | Dit bestand bevat de algemene variabelen en kan door de administrator (root) gewijzigd worden. Als je hier wijzigingen maakt, dan moet je /boot/grub/grub.cfg bijwerken met het commando update-grub. |
| /etc/grub.d | Iin deze folder staan een aantal shell scripts die in volgorde van nummering als templates fungeren voor update-grub om het bestand /boot/grub/grub.cfg te genereren. |
Het bestand /boot/grub/grub.cfg
Het is niet de bedoeling dat het read-only configuratiebestand /boot/grub/grub.cfg handmatig gewijzigd wordt. Het kan worden bijgewerkt met behulp van het commando sudo update-grub, wat een verkort commando is voor sudo /usr/sbin/grub-mkconfig -o /boot/grub/grub.cfg. Het bestand grub.cfg wordt ook automatisch bijgewerkt bij een kernel update.
Het bestand /etc/default/grub
De eerste 4 variabelen in /etc/default/grub zijn belangrijk voor de correcte werking van GRUB 2.
| Variabele | Betekenis |
|---|---|
| GRUB_DEFAULT | Deze variabele wordt gezet voor het automatisch starten van bepaald besturingssysteem of linuxkernel. Deze variabele kan 3 waarden hebben:
Deze variabele moet je dus wijzigen om een ander besturingssysteem dan het huidige besturingssysteem als standaard te kiezen bij een dual boot. |
| GRUB_HIDDEN_TIMEOUT | Deze variabele specificeert in seconden hoelang het splash image getoond moet worden. Standaard staat deze op 0. Dit betekent dat het splash image niet getoond wordt en GRUB direct geladen wordt. Zet deze variabele op een aantal seconden als je het splash image wilt zien. Het grubmenu krijg je door op de Shift-toets te drukken tijdens het tonen van het splash image. |
| GRUB_HIDDEN_TIMEOUT_QUIET | Deze variabele wordt gebruikt voor het laten zien van het aftellen. Standaard staat deze op true. Dit betekent dat je het niet zichtbaar is. Je kan als je deze variabele gezet hebt, nog steeds met de Shift-toets het grubmenu in. Zet deze variabele op false als je het aftellen wilt zien. |
| GRUB_TIMEOUT | Deze variabele specificeert in seconden hoelang het grubmenu getoond moet worden als er geen keuze gemaakt wordt. Deze variabele wordt bij uitvoeren overschreven door de GRUB_HIDDEN_TIMEOUT variabele als deze niet uitgecommentarieerd is (door # aan het begin van de regel). De waarde -1 specificeert dat het menu getoond wordt totdat er een keuze gemaakt wordt door de gebruiker. |
De folder /etc/grub.d
Het grubmenu wordt samengesteld aan de hand van de volgende scripts:
| Script | Betekenis |
|---|---|
| 00_header | Dit script bevat de settings voor onder ander het default menu item, de timeout en de grafische mode. Dit script wordt opgebouwd aan de hand van het betand /etc/default/grub. Je hoeft hier dus geen wijzigingen in te maken. |
| 05_debian_theme | Dit script bevat de settings voor de achtergrond van het grubmenu, de tekstkleuren, highlighting van de keuze in het menu en thema. Indien er geen splash image gedefinieerd is wordt het monochromatisch thema gekozen als standaard menu-thema. |
| 10_linux | Dit script zoekt alle kernels van het huidige besturingssysteem op de root-partitie om in het menu te tonen. |
| 20_memtest86+ | Dit script zoekt naar het /boot/memtest86+.bin bestand om in het menu te tonen. |
| 30_os-prober | Dit script zoekt naar linux kernels van het niet huidige besturingssysteem en andere besturingssytemen, zoals Microsoft Windows en Apple OSX. |
| 40_custom | Dit script kan gebruikt worden om extra menu entries op te voeren. Deze worden in het bestand /boot/grub/grub.cfg geplaatst met behulp van update-grub2. Alle tekst onderaan dit script wordt een op een gekopieerd naar het grub.cfg bestand. |
Het mag wel duidelijk zijn dat het voorloopnummer van de bestandsnaam aangeeft in welke volgorde deze in het grubmenu worden opgenomen. Dit werkt net als het init.d systeem. Je kan dus ook eigen uitvoerbare scripts creëren met een nummer die tussen, voor of na de huidige reeks vallen om opgenomen te worden in het grub.cfg bestand.
Grub-install
Het commando grub-install <opties> <grub-device> schrijft een startbaar (bootable) image op een startbaar partitie (grub-device). Zie grub-install --help voor de opties.
Update-grub
Het commando sudo update-grub schrijft een een nieuw /boot/grub/brub.cfg bestand. Vergeet dus niet na het maken van wijzigingen in de GRUB 2 bestandshierarchie om dit commando uit te voeren.
Waarschuwing
Wellicht overbodig, maar pas op met het maken van wijzigen in de GRUB 2 bestandshierarchie. Je kan de bootloader om zeep helpen met een verkeerde wijziging.
Troubleshooting
Als je niet meer in Ubuntu komt dan moet je herstarten met de Ubuntu Live CD in de CD-tray. Mount je boot device. Welke dat is kan je zien in Systeem –> Beheer –> GParted. Doe de mount als volgt:
sudo mkdir /mnt/ubuntu
sudo mount -t ext4 /mnt/ubuntu
sudo vi /mnt/ubuntu/boot/grub/grub.cfg
en corrigeer de wijziging.
Let op: dit is de enige keer dat je direct het bestand grub.cfg wijzigt. Anders kom je het systeem niet meer in. Onthoudt dat je de wijziging ook weer doorvoert op de correcte plaats in de bestandshierarchie van GRUB 2.



Leo,
Bedankt voor deze instructies op een rijtje. Enigszins bekend met menu.lst was het nu eerst weer de weg zoeken ;-)
Zo vroeg ik me onlangs af of er ook een grafisch programma zou zijn waarmee je dit kunt beheren. Zo kwam ik uit bij StartUp Manager (kortweg: SUM).
Zie bijvoorbeeld http://www.ubuntugeek.com/startup-manager-change-settings-in-grub-grub2-and-usplash.html
Daarmee wordt het beheren van Grub een stuk eenvoudiger. Na installatie nestelt het programma zich in het Beheer-menu van GNOME.
Comment door Martijn — november 8, 2009 @ 10:11 pm |
Klopt, ik weet het en ken StartUp Manager. Het is oorspronkelijk ontwikkeld voor GRUB en nu aangepast voor GRUB 2. Het is nog niet helemaal compleet, vandaar dat ik het nog niet getest hebt. Wel goed om te horen dat wat er al voor GRUB 2 is aangepast werkt. Dank.
Comment door Leo — november 9, 2009 @ 8:49 pm |
Hebben jullie een manier gevonden om de verschillende linux images te verwijderen of te skippen? Ik heb inmiddels 2.6.31-14 t/m 16 in mijn lijst staan, en ik denk dat ik 14 & 15 nooit meer ga booten.
Is er een manier om de lijst op te schonen?
Comment door Martijn — december 7, 2009 @ 9:11 pm |
Ik heb afgelopen weekend die lijst opgeschoond door uit de /boot-map het oudste vmlinuz image te verwijderen.
Dat heb ik laten volgen door een “sudo update-grub” (sans quotes) om grub bij te werken.
Ik meen me te herinneren dat je met de vorige Grub kon aangeven tot hoeveel kernels de lijst beperkt moet blijven, maar een dergelijke optie kan ik nu niet meer vinden.
Comment door Martijn (Ubuntu-startpagina) — december 8, 2009 @ 12:28 am |
Ja, helemaal goed, dank daarvoor!
Comment door Martijn — december 8, 2009 @ 5:32 pm |
Dag Leo,
Ik heb net met heel veel moeite een schone installatie van 9.10 voor elkaar gekregen, nadat ik enkele maanden me nauwelijks met Ubuntu had beziggehouden. Bovendien verliep de update 8.04-8.10-9.04 zo slecht dat ik via Gparted alles eraf moest halen. Daarom de vraag: kan ik deze startup-manager veilig installeren? In 8.04 gebruikte ik hem wel en daar werkte deze goed.
Groet,
Winus
Comment door Winus van Asselt — december 17, 2009 @ 5:24 pm |
Winus, ja dat kan, maar deze startup-manager ondersteunt GRUB2 nog niet volledig. Het is echter wel te gebruiken. De auteur werkt aan een nieuwe versie voor GRUB2.
Comment door Leo — december 17, 2009 @ 9:40 pm |
Hallo Leo,
Ik heb net Ubuntu 9.10 geinstalleerd op mijn Vista 64bit machine. Ubuntu start gewoon, maar als ik Vista wil opstarten komt alleen ‘Grub’ in beeld en dan kom ik weer in het Grub menu. Ik heb Grub opnieuw geinstalleerd zoals beschreven (in de handleiding, vanaf de CD), maar geen effect.
Wat kan ik doen? ik moet ook echt weer aan de slag in Vista…
entry is
insmod ntfs
set root=(hd0,1)
search –no-floppy –fs-uuid –set 86e….(etc)
chainloader +1
GNU grub version 1.97~beta 4
groet
Stefan
Comment door stefan flos — december 20, 2009 @ 3:30 pm |
In het GRUB menu moet een entry staan (de laatste) om Windows te starten. Als deze er niet staat dan is het volgende de gemakkelijkste manier om deze terug te krijgen:
- installeer os-prober via Synaptic (als deze niet al geïnstalleerd is) en
- voer het volgende commando in een terminalvenster uit:
sudo update-grub.Comment door Leo — december 20, 2009 @ 9:27 pm |
Hallo leo, Die entry naar windows Vista staat er maar die werkt dus niet. De details van die entry heb ik aangegeven. Ik heb Grub opnieuw geinstalleerd vanaf de CD en daarna update-grub gedaan. Maar het werkt nog steeds niet. Hoe krijg ik Vista aan de gang? Welke entry kan ik proberen. Kan ik Vista met de hand starten (command line). Ubuntu doet het gewoon goed.
Comment door stefan flos — december 21, 2009 @ 7:49 am |
Stefan,
Mogelijk heb je hier iets aan: http://blogs.koolwal.net/2008/12/28/windows-xpvista-dual-boot-does-not-boot-from-grub2-or-grub-pc/
Daarin staan wat wijzigingen van Grub naar Grub2 met betrekking tot het nummeren van partities.
Krijg je ook een bepaalde foutmelding als je Vista probeert te starten? Misschien kan die namelijk ook verder helpen.
Als het totaal niet lukt met Grub dan kun je ook de zaak omdraaien: de bootloader van Windows Vista gebruiken en daaraan Ubuntu toevoegen:
http://www.aeroxp.org/board/index.php?showtopic=7768
Comment door Martijn (Ubuntu-startpagina) — december 21, 2009 @ 9:14 am |
OK, dan gaan we het volgende proberen: het herstellen van de bootpartitie (wordt een lang verhaal maar goed).
1) Boot je PC met een Windows XP CD en ga de recovery mode in. Het kan ook zijn dat je vanuit de boot een recovery menu in kan. Eenmaal in de recovery mode voer de volgende commando’s uit:
fixboot
fixmbr
Je kan nu Windows XP starten, maar je bent wel de Ubuntu opstartmogelijkheid kwijt. Dat gaan we nu herstellen.
2) Boot je PC met een Ubuntu Live CD (je doet er goed aan de laatste versie van de Ubuntu website te downloaden).
Open een terminalvenster en voer het commando
sudo fdisk -luit. Je ziet het volgende:leo@gandalf:~$ sudo fdisk -l[sudo] password for leo:
Schijf /dev/sda: 750.2 GB, 750156374016 bytes255 koppen, 63 sectoren/spoor, 91201 cilinders
Eenheid = cilinders van 16065 * 512 = 8225280 bytes
Schijf-ID: 0xbe4862c7
Apparaat Opstart Begin Einde Blokken ID Systeem/dev/sda1 1 1191 9566676 12 Compaq diagnostiek
/dev/sda2 * 1192 2436 10000462+ 83 Linux
/dev/sda3 2437 3183 6000277+ 82 Linux wisselgeheugen
/dev/sda4 3184 91201 707004585 83 Linux
leo@gandalf:~$
Het device waarbij in de boot (of opstart) kolom een sterretje staat is de boot partitie.
De eerste Linux partitie is de partitie waar het Ubuntu besturingssysteem opstaat. Deze is normaal gesproken kleiner dan de andere Linux partitie.
In mijn voorbeeld is dat dezelfde partitie. In jou geval zal dat een andere zijn.
Noteer de Linux partitie. We gaan voor de rest van het verhaal even uit van /dev/sda4.
Mount nu de Linux partitie door het commando
sudo mount /dev/sda4 /mntVoer het commando
ls /mntuit.Je moet nu (ongeveer) het volgende zien:
bin cdrom etc initrd.img lib lib64 media opt root selinux sys var vmlinuz.oldboot dev home initrd.img.old lib32 lost+found mnt proc sbin srv tmp usr vmlinuz
Zie je totaal iets anders dan heb je de verkeerde Linux partitie gemount. Unmount dan dit device weer met het commando
umount /mnten mount de andere Linux partitie.Mount de boot partitie (alleen als deze afwijkt van de Linux partitie). We gaan voor het voorbeeld even uit van /dev/sda1 als boot device. Mount het met het commando
sudo mount /dev/sda1 /mnt/bootHerinstalleer grub met het commando
sudo grub-install /dev/sda --root-directory=/mnt(LET OP: je moet hier de schijf /dev/sda gebruiken en niet de partitie)Boot en controleer of je nu wel in Windows XP komt.
Nou ik ben benieuwd.
Comment door Leo — december 21, 2009 @ 10:30 am |
Leo, Alles geprobeerd maar van de regen in de drup.
Allereerst kwam ik dit tegen:
Thanks for the article! Just a note, on a fresh install of karmic koala, update-grub2 is not installed, however you can acquire it by typing:
$sudo apt-get install grub-pc
The notes say update-grub is the same, but when I ran it, it wanted to create menu.lst and not grub.conf:
Testing for an existing GRUB menu.lst file …
Could not find /boot/grub/menu.lst file. Would you like /boot/grub/menu.lst generated for you? (y/N) n
Not creating /boot/grub/menu.lst as you wish
After installing the above package and running update-grub it seems identical to update-grub2.
Hope this helps a bit…
Verder gebruik ik Vista en omdaar de bootpartitie te updaten moet je het volgende doen:
You can use bootrec /fixboot or bootrec /fixmbr in the “command prompt” of
the DVD :
Boot on the Vista DVD. Choose country. Next. Choose keyboard. Next.
Don’t choose “install now” but “system recovery options” . If it is proposed
to repair at the end of the search, answer “no”. Deselect all lines and clic
“next”
Choose “command prompt”
Type bootrec /? to access the bootrec help
A usefull command is also :
bootrec /rebuildbcd
Ook dat geprobeerd, maar geen effect.
Ik ga nu alles opnieuw installeren en dan bekijk ik het wel.
PS ik gebruik een nieuwe PC dus de schade is nog beperkt…
Als het daarna wel goed gaat met ubuntu dan laat ik nog van met horen.
groet
Stefan
Comment door stefan flos — december 21, 2009 @ 12:41 pm |
Ik snap jou antwoord niet of je moet iets totaal anders gedaan hebben dan wat ik voorgesteld had.
Comment door Leo — december 21, 2009 @ 4:04 pm
Halle Leo,
Allereest: ik waardeer de tijd die je besteed aan het meedenken. Ik heb geprobeert te doen wat je hebt voorgesteld, echter ik gebruik vista (64bit). Vandaar mijn antwoord: de XP manier werkt niet, de vista manier zou moeten werken om fixboor en fixmbr uit te voeren. Toen ik dat gedaan had kon ik echter vista nog niet opstarten. Dus jouw tweede deel heb ik niet kunnen uitvoeren.
Om een lang verhaal in te korten: ik heb Vista opnieuw geinstalleerd, daarna ubuntu 9.04 en dat werkt prima samen. ik denk dat er misschien een bug zit in ubuntu 9.1 en Grap 2. Ubuntu 9.04 kan ik upgraden naar 9.10.
Ik hou je op de hoogte mocht er nog iets fout gaan.
Stefan
Comment door stefan flos — december 21, 2009 @ 5:19 pm |