Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "Cestino/Grub/Legacy"
Differenze tra le versioni 37 e 38
Versione 37 del 08/06/2007 05.53.46
Dimensione: 15232
Commento:
Versione 38 del 08/09/2007 16.44.29
Dimensione: 15268
Commento: da revisionare
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 2: Linea 2:
#format wiki
Linea 220: Linea 221:
CategoryAmministrazione CategoryAmministrazione CategoryDaRevisionare

BR

Introduzione

Grand Unified Bootloader (GRUB) è il boot loader predefinito di Ubuntu. Il boot loader è il programma che viene avviato subito dopo il BIOS durante l'accensione del computer, e si preoccupa di scegliere e avviare un sistema operativo fra quelli presenti nel computer. In genere GRUB riconosce automaticamente i sistemi operativi presenti e li inserisce in un menù iniziale, ma volendo si può modificare manualmente questo menu, ad esempio nel caso raro in cui un sistema non venga riconosciuto correttamente oppure se si vuole personalizzare le impostazioni d'avvio.

L'installazione di GRUB

GRUB viene automaticamente installato da Ubuntu. Se però in seguito si è installato un Sistema Operativo (come MS-Windows) che sovrascrive GRUB e ignora la presenza di altri sistemi operativi, o se si è installato un secondo boot loader e ora si vuole tornare a GRUB, ci si trova nella necessità di ripristinare GRUB, seguendo la guida [:RipristinoGrub].

L'installazione predefinita di GRUB prevede la modifica dell'MBR (Master Boot Record, il primo settore del disco fisso), in modo che GRUB sia il primo boot loader ad essere caricato, e la creazione dei file necessari all'avvio nella directory /boot, che diventa la directory radice di GRUB (da non confondere con la directory di root del sistema /). Il file di configurazione di GRUB è /boot/grub/menu.lst, basta modificarlo e al successivo avvio GRUB si comporterà di conseguenza.

Anchor(avvio_interattivo)

Avvio interattivo del sistema

I comandi necessari per fare partire un sistema possono essere inseriti interattivamente all'avvio di GRUB, quando compare il menù con una voce per ogni sistema operativo installato: premendo il tasto "c" si ha accesso alla linea di comando di GRUB, in cui si possono inserire da zero i comandi per far partire un sistema operativo qualunque; invece, spostandosi su una voce a scelta e premendo il tasto "e" è possibile modificare le opzioni di avvio per quella specifica voce. GRUB può leggere le varie partizioni e visualizzare i nomi dei file, e grazie all'autocompletamento è impossibile sbagliare il percorso dei file o i nomi dei comandi. In questo modo è facile fare velocemente molte prove con kernel o parametri di boot diversi al volo; se si verifica un errore che blocca il caricamento del kernel basta riavviare il sistema e provare un'opzione diversa. Trovati i parametri giusti si possono [#modifiche_permanenti rendere permanenti le modifiche] in modo che non sia più necessario inserirle a mano.

Immagine(Icone/Piccole/note.png,,left) BR Alcuni caratteri visualizzati sullo schermo potrebbero non corrispondere a quelli visualizzati sulla tastieraBR BR

Far partire un sistema Linux

Il primo comando da dare è root, che imposta il disco fisso e la partizione in cui si trova la directory radice di GRUB. Trovate questa informazione nel file /etc/fstab. Se fosse /dev/hda3, dovremmo scrivere al prompt di GRUB :

root (hd0,2)

Premere invio per accettare il comando e poter inserire il prossimo comando. Attenzione che GRUB numera le partizioni partendo da 0, quindi il numero della partizione è 1 in meno rispetto al numero sotto Ubuntu.

Il secondo comando è kernel e indica il percorso del file contenente l'immagine del kernel e le varie opzioni da passare ad esso. Se l'immagine del kernel si trova in /boot/vmlinuz-2.6.20-15-generic, scriveremo nel prompt di grub come secondo comando:

kernel          /boot/vmlinuz-2.6.20-15-generic root=/dev/hda1 ro locale=it_IT quiet splash

L'autocompletamento permette di scegliere il file corretto. Le opzioni più comuni sono:

  • root=: indica al kernel qual è la partizione contenente la directory root del sistema.

  • ro: accede inizialmente alle partizioni in sola lettura. È buona norma inserirlo sempre.

  • splash: chiede di mostrare a video una immagine durante il caricamento del sistema.

  • locale: indica la lingua da utilizzare.

Se il kernel che si vuole avviare usa l'initrd (di solito tutti i kernel ufficiali delle distro lo usano) bisogna caricare anche l'immagine del ramdisk. In questi casi, il terzo comando da dare sarà:

initrd /boot/initrd.img-2.6.20-15-generic

l'immagine si trova sempre nella stessa partizione/directory del suo kernel.

Immagine(Icone/Piccole/warning.png,,left) Un kernel creato con un'initrd associato, non può essere avviato senza di esso; se si tenta di usare immagini initrd di altri kernel, o di far partire senza initrd un kernel che necessita di esso, il sistema non partirà dando un Kernel Panic. BR BR

Per avviare il sistema, basta premere il tasto "b" se si sta editando una voce, oppure dare il comando boot se si sta usando la linea di comando di GRUB:

boot

Windows, BeOS, OpenBSD

Alcuni sistemi operativi hanno requisiti particolari, per esempio possono richiedere che la loro partizione sia contrassegnata come "attiva", o che sia una partizione primaria; oltretutto questi sistemi operativi hanno routine specifiche che si occupano dell'avvio, quindi con essi non funziona il comando "kernel" di Grub.

Fondamentalmente, tre sistemi operativi richiedono attenzioni particolari: Windows, BeOS e OpenBSD. Per avviare uno di questi sistemi operativi bisogna usare i seguenti comandi:

rootnoverify (hd1,0)
makeactive
chainloader +1
boot

rootnoverify specifica qual è la partizione di Windows (nel nostro caso la prima partizione del secondo disco è hd1,0, corrispondente in Linux a /dev/hdb1);BR makeactive rende la partizione attiva (condizione essenziale per Windows);BR chainloader istruisce sul fatto di leggere la prima traccia di tale partizione;BR boot fa partire il sistema.

FreeBSD

FreeBSD ha un sistema di organizzazione delle directory abbastanza particolare. Nell'esempio si assume che FreeBSD sia installato nella seconda partizione del secondo disco:

root (hd1,1,a)
kernel /boot/loader

Per approfondire il sistema di partizionamento di FreeBSD consultare la BSD-FAQ-it.

Anchor(modifiche_permanenti)

Rendere permanenti le modifiche

Tutte le opzioni qui esposte vanno inserite nel file di configurazione di GRUB, identificato dal percorso /boot/grub/menu.lst e modificabile tramite un qualunque editor di testo, a patto che si abbiano i privilegi amministrativi. Per esempio, è possibile digitare in un terminale il comando:

sudo nano /boot/grub/menu.lst

Configurare il comportamento di GRUB

GRUB è in grado di avviare automaticamente un sistema operativo prescelto qualora entro un certo lasso di tempo non venga premuto alcun tasto sulla tastiera:

default         0
timeout         5

Nell'esempio, GRUB attende la pressione di un tasto per cinque secondi (timeout 5), dopodiché avvia il primo sistema operativo (default 0) incontrato nel suo file di configurazione (percorso dall'alto verso il basso). Modificare queste impostazioni secondo le proprie esigenze.

È possibile far comparire il menu d'avvio oppure nasconderlo alla vista, nel qual caso comparirà solo la scritta "Press 'ESC' to enter the menu..." e bisognerà appunto premere il tasto Esc per far comparire il menu:

hiddenmenu

per nascondere il menu, assicurarsi che non ci siano caratteri cancelletto "#" all'inizio della riga; per visualizzare il menu, è sufficiente aggiungere un carattere cancelletto a inizio riga.

Configurare le voci del menu d'avvio

Per ogni sistema operativo bisogna scrivere un blocco di comandi corrispondente. Il primo comando da inserire nel blocco è title, un nome a piacere che apparirà nel menu d'avvio per quel sistema; seguono i comandi già visti nella sezione [#avvio_interattivo avvio interattivo]. Per esempio:

title     Prima Distribuzione
root      (hd0,0)
kernel    /boot/vmlinuz-2.6.20-15-generic root=/dev/hda1 ro locale=it_IT quiet splash
initrd    /boot/initrd.img-2.6.20-15-generic
boot

title     Prima Distribuzione (con kernel ricompilato manualmente)
root      (hd0,0)
kernel    /boot/vmlinuz-2.6.20-mio-kernel root=/dev/hda1 ro vga=791
boot

title     Seconda distribuzione
root      (hd0,2)
kernel    /boot/vmlinuz-2.6.20-15-generic root=/dev/hda3 ro locale=it_IT quiet splash
initrd    /boot/initrd.img-2.6.20-15-generic
boot

title     Windows XP
rootnoverify (hd1,0)
makeactive
chainloader +1
boot

Seguendo questo schema si possono aggiungere voci a piacere, ma prima si consiglia di [#avvio_interattivo provare i comandi interattivamente] dal prompt di grub. Se in ogni blocco viene inserito, prima del comando boot, il comando savedefault e il comando default 0 viene modificato in default save, all'avvio GRUB (dopo il timeout) sceglierà il sistema scelto nel precedente avvio.

Impostare una password

GRUB permette di impostare una password per diversi scopi. Prima di tutto, occorre creare la password digitando in un terminale il comando grub-md5-crypt, il quale chiederà di inserire due volte la password (una è di conferma), e restituirà a video la password cifrata con algoritmo MD5. Copiare il risultato ottenuto, quindi aprire il file di configurazione di GRUB usando i privilegi amministrativi.

Anchor(proteggere_avvio_interattivo)

Proteggere l'accesso all'avvio interattivo

Per far sì che venga chiesta la password ogni qual volta si tenti di accedere all'avvio interattivo di GRUB (digitando il tasto "e"), è sufficiente inserire la seguente riga prima delle voci del menu:

password --md5 VostraPasswordCifrata

Per esempio:

password --md5 $1$DrTDy1$nPlz3ke5jkS6rX8M3/3zA.

Si potranno avviare liberamente i sistemi operativi corrispondenti alle voci già presenti, ma per modificare le opzioni di avvio verrà chiesta la password.

Proteggere l'avvio dei sistemi operativi

Se si vuole proteggere con una password l'avvio di un sistema operativo, aggiungere il comando password nel blocco della voce che si desidera proteggere, come nell'esempio:

title Prima Distribuzione
root (hd0,2)
kernel /vmlinuz-2.6.6s26-mio-kernel root=/dev/hda4 ro vga=791
initrd /initrd.img-2.6.6-s26-mio-kernel
password --md5 VostraPasswordCifrata
boot

È possibile scegliere una diversa password per ogni sistema operativo di cui si desidera proteggere l'avvio.

In alternativa, è possibile far sì che la stessa password che [#proteggere_avvio_interattivo protegge il menu interattivo] protegga anche l'avvio di sistemi operativi a scelta. È sufficiente inserire il comando lock nei blocchi relativi ai sistemi operativi che si desidera proteggere, come da esempio:

title Prima Distribuzione
lock
root (hd0,2)
kernel /vmlinuz-2.6.6s26-mio-kernel root=/dev/hda4 ro vga=791
initrd /initrd.img-2.6.6-s26-mio-kernel
boot

Usare update-grub

Quando installate un nuovo kernel (binario o ricompilato che sia) contenuto in un pacchetto debian, verrà eseguito lo script update-grub che cercherà nuovi kernel in /boot e li inserirà in menu.lst.

Questo script può anche essere eseguito a mano se si ricompila un kernel senza creare un pacchetto debian o se vuole ripristinare velocemente il menu.lst. Le voci per i vari kernel inserite da update-grub sono racchiuse tra la linea:

### BEGIN AUTOMAGIC KERNELS LIST

e la linea:

### END DEBIAN AUTOMAGIC KERNELS LIST

al di fuori di questo blocco potrete inserire tutte le vostre configurazioni che non volete siano modificate da update-grub (ad. kernel fissi, o qualsiasi altro comando grub).

Nel blocco "automagico" non vengono inseriti solo le voci dei vari kernel ma anche dei commenti che servono a personalizzare il comportamento di update-grub. Basterà modificare i commenti che cominciano con un solo # (quelli che cominciano con ## vengono ignorati anche da update-grub). Se ad esempio vogliamo che ogni nuovo kernel sia inserito solo una volta (senza la seconda voce recovery) e che venga sempre usato il framebuffer basta modificare le apposite righe di menu.lst nel seguente modo:

# kopt=root=/dev/hda9 ro vga=791

 ... ... ...

# alternative=false

ovviamente quella partizione (/dev/hda9) deve essere la root dei kernel che si vuole inserire automagicamente. Notare che non si deve decommentare la linea altrimenti update-grub lo ignorerà e verrà considerato un comando grub.

Anchor(framebuffer)

Riconoscimento modalità video

Una funzionalità forse poco nota, ma utile in certi casi è la capacità di grub di riconoscere al volo le modalità supportate in frame buffer dalla scheda video tramite il comando vbeprobe. È anche possibile testare una modalità video tramite il comando testvbe:

Grub mostrerà delle sfumature orizzontali multicolori che scorrono, alla risoluzione del modo scelto. Scelto un modo (ad esempio 0x103), potrà fare partire il sistema in quella modalità aggiungendo il parametro vga=numero alla linea del kernel, dove numero è il numero del modo più 200 esadecimale (indicato con 0x200). Questa operazione è molto semplice: basta aggiungere 2 alla prima cifra del modo, ad esempio se vogliamo il modo 0x103 dovremo passare al kernel vga=0x303.

Si può anche inserire la modalità video in decimale convertendo con una calcolatrice scientifica il numero passato al kernel: nell'esempio è equivalente scrivere vga=0x303 o vga=771.

Ricordo che per usare il frame buffer deve essere abilitato il supporto nel kernel. Tutti i kernel binari delle distribuzioni hanno questo supporto attivato, ma se vi ricompilate un vostro kernel dovrete ricordarvi di attivare il supporto frame buffer.

Installare GRUB su un floppy

Installare GRUB su un floppy permette di fare partire qualsiasi sistema anche con MBR (Master Boot Record - Il primo settore del disco fisso) corrotto. Per installare GRUB su di un floppy basta eseguire i seguenti comandi:

sudo mke2fs /dev/fd0
sudo mount -t ext2 /dev/fd0 /mnt
sudo grub-install --root-directory=/mnt fd0
sudo umount /mnt

Ulteriori risorse


CategoryAmministrazione CategoryDaRevisionare