preLINUX

Il boot loader GRUB

GRUB in parte si sostituisce al Master Boot Code, in parte si installa subito dopo il MBR e prima della prima partizione. L'operazione viene effettuata in automatico quando si installa un sistema Linux. Qualche sistema operativo non-Linux cancella questa parte di disco e, quando ciò capita, è necessario reinstallare GRUB (grub-install /dev/sda). La stessa riga di comando va eseguita qualora si tratti di riparare un sistema danneggiato o di sostituire file di configurazione persi.

GRUB presenta, all'avvio della macchina e in caso di presenza di più Sistemi Operativi (se ne esiste uno solo questo viene avviato e non viene presentato alcun menù), un menù da cui si può scegliere quale sistema avviare fra quelli installati nel HD. GRUB si basa su alcuni file di configurazione dislocati in varie directory attraverso i quali se ne possono controllare le azioni.

$ less /boot/grub/grub.cfg

# 
# DO NOT EDIT THIS FILE 
# 
# It is automatically generated by grub-mkconfig using templates 
# from /etc/grub.d and settings from /etc/default/grub 
# 
...

Il file principale che contiene le informazioni visualizzate nel menù di avvio è /boot/grub/grub.cfg ma, come riportato anche nelle prime righe del file, si tratta di un file generato, per esempio, per mezzo del comando update-grub (forma semplificata del comando suggerito grub-mkconfig) in conseguenza al contenuto di altri file.

Un primo file con le impostazioni generali è /etc/default/grub:

$ less /etc/default/grub

# If you change this file, run 'update-grub' afterwards to update 
# /boot/grub/grub.cfg. 
# For full documentation of the options in this file, see: 
#   info -f grub -n 'Simple configuration' 

GRUB_DEFAULT=0 
...
GRUB_TIMEOUT=10 
...

Le opzioni che possono interessare maggiormente sono:

Le scelte del menù di avvio sono ricavate dai file presenti in /etc/grub.d:

$ ls /etc/grub.d/ 
00_header        10_linux      20_memtest86+  30_uefi-firmware  41_custom 
05_debian_theme  20_linux_xen  30_os-prober   40_custom         README 

Il file README spiega il significato di tali file:

$ less /etc/grub.d/README
All executable files in this directory are processed in shell expansion order. 

  00_*: Reserved for 00_header. 
  10_*: Native boot entries. 
  20_*: Third party apps (e.g. memtest86+). 

The number namespace in-between is configurable by system installer and/or 
administrator.  For example, you can add an entry to boot another OS as 
01_otheros, 11_otheros, etc, depending on the position you want it to occupy in 
the menu; and then adjust the default setting via /etc/default/grub.

I file sono script elaborati nell'ordine del numero contenuto nel nome e se si vuole modificare l'ordine inserendo la voce di un sistema personalizzato si può usare come numero d'ordine 01, 11 ecc... anche se il modo più semplice di modificare il sistema da avviare per default è di intervenire in /etc/default/grub.

Dopo eventuali modifiche del contenuto dei file suddetti è necessario rigenerare il file /boot/grub/grub.cfg, con il comando update-grub, in modo che sia sincronizzarlo con le modifiche effettuate.

http://ennebi.solira.org