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 30 e 31
Versione 30 del 05/05/2007 16.15.50
Dimensione: 16729
Autore: DavideLuigi
Commento:
Versione 31 del 05/05/2007 17.07.40
Dimensione: 16642
Autore: DavideLuigi
Commento:
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 32: Linea 32:
Il secondo comando è '''kernel''' e indica il percorso del file contenente l'immagine del kernel e le varie opzioni da passare ad esso. Poniamo che il file sia `/boot/vmlinuz-2.6.20-15-generic`. Supponiamo che la partizione contenente la directory di root del sistema sia `/dev/hda1`, 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
}}}

Partendo dalla ''root di GRUB'', che è `/boot` sotto linux, il file del kernel è semplicemente in `/`. In ogni caso l'autocompletamento permette di scegliere il file corretto. Gli ultimi due parametri sono:
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 /vmlinuz-2.6.20-15-generic root=/dev/hda1 ro locale=it_IT quiet splash
}}}

Partendo dalla ''root di GRUB'', che è `/boot` sotto linux, il file del kernel è semplicemente in `/`. In ogni caso 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.
Linea 39: Linea 39:

 * '''vga=791''': fa partire il sistema in ''frame buffer'' (console ad alta risoluzione). Per maggiore informazione consultare la sezione [#framebuffer Riconoscimento modalità video].

A questo punto basta dare il comando '''boot''' per fare partire il sistema: {{{
boot
}}}

 * '''splash''': chiede di mostrare a video una immagine durante il caricamento del sistema.
 * '''locale''': indica la lingua da utilizzare.
## * '''
vga=''': fa partire il sistema in ''frame buffer'' (console ad alta risoluzione). Per maggiore informazione consultare la sezione [#framebuffer Riconoscimento modalità video].
Linea 56: Linea 51:
ovviamente avvalendoci il più possibile dell'autocompletamento per facilitare le cose. Notate come in questo caso abbiamo inserito '''/boot''' perchè non c'è una partizione di boot ma essa è una sotto-directory di root ovvero '''(hd0,6)''' ('''/dev/hda7''' in gergo linux).

Se avete un kernel che usa l'initrd (di solito tutti i kernel ufficiali delle distro, ma io sconsiglio di usare l'initrd se invece vi ricompilate il kernel) prima di dare il comando '''boot''' dovrete caricare anche l'immagine del ramdisk. Ovvero scrivere (dopo aver caricato il kernel) il seguente comando nel prompt di grub (Linea di comando di grub - Appare al boot premendo il tasto 'e' seguito da 'c'): {{{
initrd /initrd.img-2.6.6-s26-mio-kernel
ovviamente avvalendoci il più possibile dell'autocompletamento per facilitare le cose. Notate come in questo caso abbiamo inserito `/boot` perchè non c'è una partizione di boot ma essa è una sotto-directory di root ovvero '''(hd0,6)''' (`/dev/hda7` in gergo linux).

Se il kernel che si vuole avviare usa l'initrd (di solito tutti i kernel ufficiali delle distro) bisogna caricare anche l'immagine del ramdisk. Quindi il terzo comando da dare sarà: {{{
initrd /initrd.img-2.6.20-15-generic
Linea 65: Linea 60:

A questo punto basta dare il comando '''boot''' per fare partire il sistema: {{{
boot
}}}

BR

Introduzione

Grand Unified Bootloader (GRUB) è il boot loader predefinito di Ubuntu. Il boot loader è il programma che viene richiamato direttamente dal 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. All'avvio comparirà il classico menù con una voce per ogni sistema operativo installato. Spostandosi su una voce a scelta e premendo il tasto "e" si entra in modalità editing e si possono modificare le opzioni di avvio per quella voce, oppure 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. GRUB può leggere le varie partizioni e visualizzare i nomi dei file, e grazie all'autocompletamento si è sicuri di non sbagliare il percorso o i nomi dei file. In questo modo è facile fare velocemente molte prove con kernel o parametri di boot diversi, al volo, senza dover modificare alcun file; 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 inserirli a mano.

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 partizione partendo da 0, quindi il numero della partizione è 1 in meno rispetto al numero sotto linux.

Immagine(Icone/Piccole/note.png,,left) BR Ricordate che con la tastiera italiana, all'avvio, le parentesi si fanno con Maiusc+0 e Maiusc+1, mentre lo slash con Maiusc+- ed il segno di uguale con Maiusc+ì. BR BR

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          /vmlinuz-2.6.20-15-generic root=/dev/hda1 ro locale=it_IT quiet splash

Partendo dalla root di GRUB, che è /boot sotto linux, il file del kernel è semplicemente in /. In ogni caso 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 avete il kernel di una seconda distro sempre nella partizione di boot /dev/hda3 basta cambiare il nome del file del kernel e l'opzione root=/dev/hda4 per indicare la corretta partizione di root della seconda distro.

Se invece il file del kernel della seconda distribuzione risiede in una directory diversa da /boot presente nella partizione /dev/hda3 (per esempio la partizione di root della seconda distribuzione), basta indicare il percorso completo a grub. Supponiamo che la partizione contenente il kernel della seconda distribuzione sia /dev/hda7 e che questa sia la root della seconda distro, per caricare il kernel scriveremo:

kernel (hd0,6)/boot/vmlinuz-2.6.6-altra-distro root=/dev/hda7 ro vga=791

ovviamente avvalendoci il più possibile dell'autocompletamento per facilitare le cose. Notate come in questo caso abbiamo inserito /boot perchè non c'è una partizione di boot ma essa è una sotto-directory di root ovvero (hd0,6) (/dev/hda7 in gergo linux).

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

initrd /initrd.img-2.6.20-15-generic

oppure:

initrd (hd0,6)/initrd.img-2.6.6-altra-distro

a seconda di dove si trova l'immagine (si trova sempre nella stessa partizione/directory del suo kernel). BR

Immagine(Icone/Piccole/warning.png,,left) Un kernel partirà solo con la sua immagine initrd; quindi, se provate ad usare immagini initrd di altri kernel, o a far partire senza initrd un kernel che necessita di esso,il sistema non partirà dando un Kernel Panic. BR BR

A questo punto basta dare il comando boot per fare partire il sistema:

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 (prendiamo come esempio Windows):

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

Uno dei motivi per cui GRUB ha una nomenclatura tutta particolare dei dischi è dovuto al fatto che il programma è stato pensato per avviare anche kernel non-linux, uno su tutti, quello di FreeBSD.

FreeBSD ha, infatti, un sistema di organizzazione delle directory abbastanza particolare. Nell'esempio assumiamo 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 che specifica il nome 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 (puoi scrivere quello che vuoi)
root      (hd0,2)
kernel /vmlinuz-2.6.6s26-mio-kernel root=/dev/hda4 ro vga=791
boot

title     Seconda Distribuzione (puoi scrivere quello che vuoi)
root      (hd0,2)
kernel (hd0,6)/boot/vmlinuz-2.6.6-altra-distro root=/dev/hda7 ro vga=791
initrd (hd0,6)/initrd.img-2.6.6-altra-distro
boot

Seguendo questo schema si possono aggiungere voci a piacere, ma si consiglia di provare prima 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 dopo la parola chiave title della voce che si desidera proteggere, come nell'esempio:

title Prima Distribuzione (puoi scrivere quello che vuoi)
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
savedefault
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 i sistemi operativi che si desidera proteggere, come da esempio:

title Prima Distribuzione (puoi scrivere quello che vuoi)
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


  • Autore originario: Antonio Ingargiola (MailTo(debian@fastwebnet.it))

  • Si ringrazia: Fabrizio Ciacchi per aver scritto i paragrafi su come bootare sistemi non Linux e sull'uso della password.