Boot loader

Da Wikipedia, l'enciclopedia libera.

In informatica il boot loader è il programma che, nella fase di avvio (boot) del computer, carica il kernel del sistema operativo dalla memoria secondaria alla memoria primaria, permettendone l'esecuzione da parte del processore e il conseguente avvio del sistema. Il termine deriva dal fatto che il processo di avvio di un computer viene chiamato bootstrap (dal detto inglese to lift oneself by one's own bootstrap, "tirarsi su per le fibbie degli stivali"). Nel caso di più sistemi operativi installati sulla stessa macchina, il caricamento da parte del boot loader è preceduto dalla selezione del sistema operativo desiderato da parte dell'utente tramite il boot manager.

Compiti[modifica | modifica sorgente]

La funzione fondamentale di un boot loader è dunque caricare ed eseguire un kernel di sistema operativo. Nella maggior parte dei casi, questo richiede di accedere alla memoria di massa, per leggere il kernel di sistema operativo, e potenzialmente altri file. Nei casi più semplici, il boot loader contiene l'indirizzo dei blocchi di disco in cui sono memorizzati i file da caricare, e deve quindi essere aggiornato se questi file vengono modificati. L'accesso al disco spesso avviene attraverso le funzioni fornite dal firmware (il BIOS nei sistemi PC IBM compatibili). Alcuni boot loader posseggono la capacità di interpretare uno o più file system per trovare i file da caricare. In questo caso, possono anche caricare un file di configurazione dal disco, o permettere ad un utente avanzato di esplorare il disco alla ricerca di file da caricare. Alcuni boot loader sono in grado di utilizzare le funzionalità fornite da alcune schede di rete (tipicamente ethernet) per scaricare un kernel dalla rete, tipicamente via TFTP.

Funzionalità aggiuntive presenti in alcuni boot loader:

  • Molti kernel supportano la possibilità di ricevere parametri di avvio per configurare il loro comportamento; il boot loader si occupa di passarli al kernel, e in alcuni casi permette all'utente di editare questi parametri.
  • Alcuni kernel prevedono che altri file siano resi disponibili al kernel durante il boot (per esempio nei sistemi Unix-like è comune l'uso di initrd, un piccolo file system memorizzato in un file). Il caricamento di questi file viene gestito dal bootloader.
  • Un boot loader può mostrare all'utente un menù di possibili kernel da caricare, con relativi parametri, permettendo all'utente di scegliere quale sistema operativo avviare.
  • Un boot loader può richiedere una password per consentire l'avvio del sistema.

Funzionamento[modifica | modifica sorgente]

Il boot loader viene in molti casi installato in una posizione specifica di uno specifico dispositivo di memoria di massa, tipicamente nel primo blocco del primo disco ("primo" rispetto all'ordine con cui i dispositivi sono collegati al calcolatore), da dove viene caricato dal firmware del calcolatore.

Ad esempio, nell'architettura IBM compatibile il boot loader può essere memorizzato nel master boot record (MBR) del disco di avvio, oppure nel primo settore della partizione che ospita il sistema operativo (nel qual caso deve essere richiamato da un boot manager installato nel MBR).

Esistono alcune limitazioni imposte dalla tecnica e dai produttori di hardware e firmware per cui, al fine di aggirarle molti boot loader moderni operano ricorrendo al cosiddetto boot in due stadi, lo stage 1 e lo stage 2, divisione logica che rimarca diversi momenti della fase di avvio. Quanto alle limitazioni esse sono, per esempio, la possibilità di caricare dal dispositivo di boot nella memoria centrale solo una piccola quantità di byte e trovarla posizionata in un punto piuttosto sconveniente della memoria - è il caso emblematico dei sistemi basati sulla famiglia x86 che carica i primi 512 byte che incontra sul dispositivo di boot a partire dall'indirizzo 0x0000:0x7C00 in avanti (ultimo byte in 0x0000:0x7E00).

Esempio di boot a stadi[modifica | modifica sorgente]

Ecco una sommaria descrizione di un possibile boot a stadi:

Stage 1[modifica | modifica sorgente]

Lo stage 1, poc'anzi riferito anche come boot manager, si occupa di mansioni molto elementari e che possono essere codificate in relativamente poco spazio, come ricercare la prima partizione di boot sul disco di boot, cercare, caricare il secondo stadio, più complesso ed esteso, in memoria e passargli il controllo. In questo stadio possono essere effettuate anche minime inizializzazioni di sistema utili al secondo stadio ma non è sempre il caso.

Stage 2[modifica | modifica sorgente]

Lo stage 2 è il vero e proprio gestore di avvio del programma esecutivo o del sistema operativo. Esso è molto più sofisticato, complesso ed esteso del primo stadio e si occupa principalmente, ma non solo, di scegliere quale kernel caricare in memoria per poi cedergli il controllo. Esso comincia ad assomigliare più nel dettaglio ad un vero e proprio sistema operativo per quanto minimale: è tuttavia più corretto chiamarlo programma esecutivo poiché manca di molte delle caratteristiche dei sistemi operativi moderni quali la multiprogrammazione, la gestione delle risorse e così via.

Un singolo boot loader è in grado di caricare molti tipi kernel (e quindi molti sistemi operativi) differenti su partizioni diverse. Naturalmente può essere caricato un solo kernel per volta.

Stage 3[modifica | modifica sorgente]

Se volete provare un Sistema Operativo come Ubuntu non vi resta altro che, scaricare VirtualBox scegliere come Sistema Operativo Linux, versione Ubuntu (scaricare la iso di Ubuntu). Una volta fatto questo riavviate VirtualBox e il BootLoader leggerà il vostro Sistema Operativo Virtuale (VirtualBox è un programma che simula i sistemi operativi le iso dovete caricarle voi, non cè nulla di concreto).

Boot loader più conosciuti[modifica | modifica sorgente]

Voci correlate[modifica | modifica sorgente]

Informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di Informatica