• Vastliggende pagina
  • Info
  • Bijlages

Grub 2 eigen menu keuzes

Het is mogelijk in GRUB 2 eigen menukeuzes aan het opstart menu toe te voegen als de opdracht update-grub wordt uitgevoerd. Dit werkt met scriptbestanden. Een leeg 40_custom scriptbestand is beschikbaar in de map /etc/grub.d/ voor gebruik of als een voorbeeld voor een eigen, nieuw scriptbestand.

  • De naam van het bestand bepaalt de plaats van de keuze in het menu. Scriptbestanden met een numerieke bestandsnamen worden eerst opgenomen, gevolgd door de alfabetische bestandsnamen.
    • Om een menukeuze bovenaan het menu te plaatsten kan het scriptbestand bijvoorbeeld 06_xxx genoemd worden.

  • Het scriptbestand moet uitvoerbaar worden gemaakt met de opdracht "sudo chmod +x /etc/grub.d/bestandsnaam".
  • De inhoud van het scriptbestand wordt toegevoegd aan grub.cfg als de opdracht update-grub wordt uitgevoerd.

  • In tegenstelling tot grub.cfg kunnen scriptbestanden naar wens worden aangepast. Iedere gebruiker kan eigenaar zijn van de scriptbestanden.

  • Scriptbestanden zijn statisch. Het script zal niet wijzigen als nieuwe kernels worden toegevoegd of verwijderd.

Info (!) Als een menukeuze bovenaan het menu wordt toegevoegd kan het nodig zijn de DEFAULT= instelling in /etc/default/grub aan te passen. Let op: de 1e keuze=0, de 2e=1, enz.

Een aangepaste menukeuze maken

De gebruiker kan er voor kiezen bestand /etc/grub.d/40_custom te bewerken of een eigen, nieuw scriptbestand (in de map /etc/grub.d) te maken. De eenvoudigste manier is om een goed werkende keuze uit bestand /boot/grub/grub.cfg te kopiëren en naar wens te wijzigen.

  • Net als in het bestand /etc/grub.d/40_custom moeten de eerste twee regels van een aangepast bestand in /etc/grub.d zijn:

    • #!/bin/sh

      exec tail -n +3 $0

  • De gebruiker kan een bestaande menukeuze uit /boot/grub/grub.cfg kopiëren of een keuze van de oude versie van GRUB gebruiken. Om een keuze uit menu.lst van de vorige GRUB versie te gebruiken:

    • Een back-up van dit bestand kan in de map /boot/grub als er een upgrade is gedaan van GRUB naar GRUB 2.

    • De volgende aanpassingen aan het oude GRUB formaat moeten worden gedaan om het in GRUB 2 te gebruiken:
      • title veranderen in menuentry. De lijn moet eindigen met een { teken.

      • root veranderen in set root =

      • kernel wijzigen in linux

      • De nummers van schijfpartitie (sda4, sdb6) moet worden veranderd. GRUB en GRUB 2 tellen de partities anders. De eerste partitie voor GRUB 2 is 1, niet 0. Apparaten tellen wel nog steeds vanaf 0.

      • Gebruik andere goed werkende GRUB 2 menukeuzes als voorbeeld van het juiste formaat.
  • Algemene regels voor eigen menukeuzes:
    • De eerste regel van de keuze moet beginnen met het woord menuentry en eindigen met een { teken.

    • De tekst tussen aanhalingestekens (") zal verschijnen op de GRUB 2 menu. Pas de tekst naar wens aan.
    • De laatste regel van de menukeuze moet worden afgesloten met een } teken.

    • Laat geen lege spatie(s) achteraan een regel staan.

    • De set root = regel moet wijzen naar de schijfpartitie met de GRUB2 /boot map (sdXY).

    • De root verwijzing in de Linux regel moet wijzen naar de systeempartitie.

      • Als GRUB 2 de juiste kernel niet kan vinden probeer dan de UUID eens te vervangen door de schijfpartitie notatie, bijvoorbeeld: /dev/sda6.

* Een voorbeeld keuze gekopieerd uit grub.cfg met eigen aanpassingen.

  • menuentry "My Default Karmic" {

    set root=(hd0,1)

    search --no-floppy --fs-uuid --set cb201140-52f8-4449-9a95-749b27b58ce8

    linux /boot/vmlinuz-2.6.31-11-generic root=UUID=cb201140-52f8-4449-9a95-749b27b58ce8 ro quiet splash

    initrd /boot/initrd.img-2.6.31-11-generic

    }

  • Een voorbeeld keuze voor een geinstalleerde versie van de SystemRescueCD op schijfpartitie sda8.
    • menuentry "System Rescue CD" {

      set root=(hd0,8)

      linux /sysrcd/rescuecd subdir=sysrcd setkmap=us

      initrd /sysrcd/initram.igz

      }

  • Een voorbeeld keuze voor een andere GRUB opstartinstallatie.
    • menuentry "Grub 1 Bootloader" {

      set root=(hd0,8)

      chainloader +1

      }

Verwijderen van keuzes uit Grub 2

  • Automatisch
    • Kernels die gewist worden met Synaptic, worden automatisch ook uit grub.cfg gewist.

    • Andere besturingssystemen die van de computer worden gewist, worden automatisch uit het grubmenu gewist door het uitvoeren van de opdracht sudo update-grub.
  • Handmatig.
    • Om te voorkomen dat een scriptbestand in de map /etc/grub.d menukeuzes toevoegt, kan het bestand niet-uitvoerbaar worden gemaakt (sudo chmod -x /etc/grub.d/scriptbestand) of helemaal worden gewist.
    • memtest86+: Als het niet gewenst is om de keuze memtest86+ op te nemen in het menu, kan de opdracht sudo chmod -x /etc/grub.d/20_memtest86+ worden uitgevoerd. Het bestand blijft aanwezig maar zal niet worden gebruikt door de opdracht update-grub.

    • Recovery mode: Om geen Recovery mode-keuzes voor de aanwezige kernels te tonen, kan bestand /etc/default/grub worden gewijzigd en de volgende regel worden toegevoegd:

      • GRUB_DISABLE_LINUX_RECOVERY=true
    • Als in een eigen scriptbestand in de map /etc/grub.d/ meerdere keuzes zijn opgenomen, kan een keuze worden gewist.

    • Aanpassingen worden pas actief in een nieuw grub2-menu nadat de aanpassing is verwerkt in grub.cfg door het uitvoeren van een "update-grub" opdracht.

Opdrachtregel en herstelopties

Er zijn meerdere mogelijkheden om bij problemen met GRUB 2 de computer toch te starten. Als er nog een menu wordt getoond kunnen instellingen alsnog worden aangepast. Als GRUB 2 tegen een ernstige fout aanloopt wordt een herstel (resque) mode gestart. Er is een mogelijkheid om via een beperkte opdrachtregel GRUB 2 te herstellen. Als uitsluitend het woord "Grub" zonder menu of opdrachtregel wordt getoond zal grub moeten worden hersteld met behulp van een LiveCD.

Kijk hier voor meer informatie over de opdrachtregel en herstelopties van GRUB 2.

Meer informatie


CC-BY-SA

CategoryOverig

community/Grub2/EigenMenuKeuzes (laatst bewerkt op 2012-01-26 20:01:28 door testcees)