Boot loader

programma che carica il kernel

Il boot loader è un programma che carica il kernel di un sistema operativo e ne permette l'avvio. 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").

Compiti

  • Il boot loader deve caricare ed eseguire un kernel di sistema operativo.
    • Questo richiede di accedere alla memoria di massa, e potenzialmente di interpretare un filesystem per trovare il file del kernel.
    • Alcuni boot loader sono in grado di scaricare un kernel dalla rete.
  • Molti kernel supportano la possibilità di ricevere parametri di avvio, e il boot loader si occupa di passarli al kernel.
  • Alcuni kernel prevedono che un piccolo file system sia reso disponibile durante il boot (per esempio initrd nei sistemi Unix-like). Questo file system iniziale viene gestito dal bootloader.
  • Un boot loader può mostrare all'utente un menù di possibili kernel, con relativi parametri, permettendo all'utente di scegliere quale sistema operativo avviare.

Realizzazione

Il boot loader può essere installato 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 solitamente si parla di boot in due stadi, lo stage 1 e lo stage 2, divisione logica che rispecchia la divisione fisica di molti boot loader moderni. Limitazioni di questo genere 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).

Stage 1

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

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.

Per ulteriori informazioni circa quel che accade durante l'azione del boot loader, vedere la voce relativa alla fase di bootstrap.

Boot loader famosi