This is an archive of past FreeBSD releases; it's part of the FreeBSD Documentation Archive.

L'MBR, e gli Stadi di Avvio Uno, Due, e Tre

7.3 L'MBR, e gli Stadi di Avvio Uno, Due, e Tre

7.3.1 MBR, /boot/boot0

L'MBR di FreeBSD è posizionato in /boot/boot0. Questa è una copia dell'MBR, perché il vero MBR deve essere posizionato su una parte speciale del disco, fuori dell'area di FreeBSD.

boot0 è molto semplice, poiché il programma nell'MBR può essere lungo solo 512 byte. Se avete installato l'MBR di FreeBSD ed avete vari sistemi operativi installati allora vedrete una schermata simile a questa al momento dell'accensione:

Esempio 7-1. Screenshot di boot0

    F1 DOS
    F2 FreeBSD
    F3 Linux
    F4 ??
    F5 Drive 1
    
    Default: F2

Altri sistemi operativi, in particolare Windows 95, sono noti per l'abitudine a sovrascrivere un MBR esistente con il proprio. Se accade questo, o si vuole rimpiazzare l'MBR pre-esistente con quello di FreeBSD va usato il seguente comando:

    # fdisk -B -b /boot/boot0 dispositivo

Dove dispositivo è il dispositivo dal quale si avvia, come ad0 per il primo disco IDE, ad2 per il primo disco ide sul secondo canale, da0 per il primo disco SCSI, e così via.

Se sei un utente Linux, comunque, e preferisci che sia LILO a controllare il processo di boot, puoi modificare /etc/lilo.conf per avviare FreeBSD, o selezionare Leave The Master Boot Record Untouched durante il processo di installazione di FreeBSD. Se hai installato il boot manager di FreeBSD, puoi ritornare a Linux e modificare il file di configurazione di LILO, /etc/lilo.conf aggiungendo la seguente opzione:

    other=/dev/hdXY
    table=/dev/hdb
    loader=/boot/chain.b
    label=FreeBSD

il che permetterà l'avvio di FreeBSD e Linux via LILO. Nel nostro esempio, usiamo XY per determinare quale drive e quale partizione. Se si sta usando un drive SCSI, si dovrà cambiare /dev/hdXY per leggere qualcosa di simile a /dev/sdXY, dove usiamo ancora la sintassi XY. L'opzione loader=/boot/chain.b può essere omessa se avete entrambi i sistemi operativi sullo stesso drive. Ora potete eseguire /sbin/lilo -v per fare effettuare i cambiamenti al sistema; ciò dovrebbe poter essere verificato grazie ad un messaggio su schermo.

7.3.2 Stadio Uno, /boot/boot1, e Stadio Due, /boot/boot2

Concettualmente il primo ed il secondo stadio sono parte dello stesso programma, sulla stessa area del disco. Per limitazioni sullo spazio sono stati divisi in due, ma li installerai sempre insieme.

Essi si trovano sul settore di avvio della partizione di avvio, che è dove boot0, o ogni altro programma nell'MBR si aspetta di trovare il codice per proseguire la procedura di avvio. I file nella cartella /boot sono copie dei file reali, che sono immagazzinati fuori dal filesystem di FreeBSD.

boot1 è molto semplice, poiché può essere lungo solo 512 byte, e conosce solo lo stretto necessario del disklabel di FreeBSD, il quale memorizza le informazioni sulle slice, per trovare ed eseguire boot2.

boot2 è leggermente più sofisticato, e conosce il filesystem di FreeBSD abbastanza da potervi trovare dei file, e può fornire una semplice interfaccia per scegliere quale kernel o loader eseguire.

Poiché il loader è molto più complesso, e fornisce una gradevole interfaccia di facile utilizzo alla configurazione di avvio, boot2 in genere lo esegue, ma in precedenza era incaricato di lanciare il kernel direttamente.

Esempio 7-2. Screenshot di boot2

    >> FreeBSD/i386 BOOT
    Default: 0:ad(0,a)/kernel
    boot:

Se mai avrai bisogno di rimpiazzare il boot1 ed il boot2 installati, usa disklabel(8).

    # disklabel -B discoslice

Dove discoslice sono il disco e la slice dal quale avviare, come ad esempio ad0s1 per la prima slice sul primo disco IDE.

Modalità Pericolosamente Dedicata: Se si usa solo il nome del disco, come ad0, nel comando disklabel(8) si creerà un disco pericolosamente dedicato, senza slice. Quasi sicuramente non è questo quello che si vorrà fare, quindi controlla due volte il comando disklabel(8) prima di premere Invio.

7.3.3 Stadio Tre, /boot/loader

Il loader è l'ultimo stadio della procedura di avvio divisa in tre, e si trova sul filesystem, generalmente come /boot/loader.

Il loader viene inteso come un metodo user-friendly per la configurazione, tramite l'uso di un insieme di comandi integrati facili da usare, che ha dietro un potente interprete con un insieme di comandi più complesso.

7.3.3.1 Sequenza di Operazioni del Loader

Durante l'inizializzazione, il loader controllerà la console e i dischi, e cercherà di capire da quale disco si stia avviando. Imposterà le variabili di conseguenza, ed avvierà un interprete al quale potranno essere passati i comandi dell'utente in maniera interattiva o attraverso uno script.

Poi il loader leggerà /boot/loader.rc, che in maniera predefinita legge /boot/defaults/loader.conf che imposta dei valori di default ragionevoli per le variabili e legge /boot/loader.conf per i cambiamenti locali a quelle variabili. loader.rc poi agisce su queste variabili, caricando i moduli ed il kernel selezionati.

Infine, di default, il loader attende 10 secondi la pressione di un tasto, ed avvia il kernel se non viene interrotto. Se invece viene interrotto, viene presentato all'utente un prompt in grado di comprendere un semplice insieme di comandi, dal quale l'utente può impostare precisamente le variabili, scaricare dalla memoria tutti i moduli, o caricarli, ed infine avviare o ri-avviare.

7.3.3.2 Comandi Integrati nel Loader

Questi sono i comandi usati più comunemente. Per una discussione completa su tutti i comandi disponibili, guarda loader(8).

autoboot secondi

Procede nell'avvio del kernel se non viene interrotto nell'intervallo di tempo specificato, in secondi. Mostra un conto alla rovescia, e l'intervallo predefinito è di 10 secondi.

boot [-opzioni] [nomekernel]

Procede immediatamente all'avvio del kernel, con le opzioni date, se ce ne sono, e con il kernel con il nome fornito, se esiste.

boot-conf

Va avanti con gli stessi moduli della configurazione automatica, basati sulle variabili, come accade al boot. Questo ha senso solo se prima usate unload, e cambiate delle variabili, più comunemente kernel.

help [argomento]

Mostra un messaggio d'aiuto letto da /boot/loader.help. Se l'argomento dato è index, allora elenca tutti gli argomenti disponibili.

include nomefile ...

Processa il file con il nome dato. Il file viene letto, e interpretato riga per riga. Un errore blocca il comando include immediatamente.

load [-t tipo] nomefile

Carica il kernel, il modulo del kernel, o il file del tipo specificato, con il nome specificato. Ogni argomento dopo nomefile viene passato al file.

ls [-l] [percorso]

Mostra un elenco dei file nel percorso dato, o nella directory root, se non ne viene specificato uno. Se è specificato -l, verranno mostrate anche le dimensioni dei file.

lsdev [-v]

Elenca tutti i dispositivi dai quali potrebbe essere possibile caricare moduli. Se viene specificata l'opzione -v, verranno stampati dettagli maggiori.

lsmod [-v]

Mostra i moduli caricati. Se viene specificato -v, verranno stampati dettagli maggiori.

more nomefile

Mostra i file specificati, con una pausa ad ogni LINES visualizzato.

reboot

Riavvia immediatamente il sistema.

set variabile, set variabile=valore

Imposta le variabili di ambiente del loader.

unload

Rimuove tutti i moduli caricati.

7.3.3.3 Esempi sul Loader

Qui ci sono alcuni esempi pratici sull'uso del loader:

  • Per avviare semplicemente il vostro kernel abituale, ma in modalità singolo utente:

        boot -s
    
  • Per scaricare dalla memoria i moduli e il kernel normali, e poi caricare solo il vecchio (o un altro) kernel:

        unload
        load kernel.old
    

    Si può usare kernel.GENERIC per riferirsi al kernel generico che viene fornito nel disco d'installazione, o kernel.old per riferirsi al kernel installato precedentemente (quando hai aggiornato o configurato il kernel, ad esempio).

    Nota: Usa il comando seguente per caricare i soliti moduli con un altro kernel:

        unload
        set kernel="kernel.old"
        boot-conf
    
  • Per caricare uno script di configurazione del kernel (uno script automatizzato che faccia le cose che faresti tu normalmente configurando il kernel all'avvio):

        load -t script_configurazione_utente /boot/kernel.conf
    

Questo, ed altri documenti, possono essere scaricati da ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Per domande su FreeBSD, leggi la documentazione prima di contattare <questions@FreeBSD.org>.
Per domande su questa documentazione, invia una e-mail a <doc@FreeBSD.org>.