2.1 Il boot

All’accensione di un PC avviene quella che in gergo è detta procedura di boot (bootstrap o semplicemente boot) del sistema.

Un bootstrap è un processo che viene effettuato per passi successivi: prima si fanno dei semplici passi, poi, sfruttando questi, se ne fanno altri sempre più complessi. Il termine bootstrap deriva dal detto anglosassone “Pulling yourself up by the bootstraps”, cioè “Tirarsi su a partire dai lacci delle scarpe”.

Questa si basa su fattori sia hardware che software secondo lo schema riportato nella fig. 2.1 e descritto di seguito.


pict
Figura 2.1: Schema del boot del sistema.

  1. L’hardware viene alimentato dalla corrente ed un apposito circuito, presente sulla motherboard, controlla la funzionalità sommaria degli altri circuiti principali anch’essi situati sulla motherboard stessa.

    La CPU inizia ad eseguire una procedura di inizializzazione del sistema, la cui prima istruzione si trova all’indirizzo di memoria FFFF0H (l’inizio degli ultimi 16 byte della memoria convenzionale1). Tale istruzione è un jump2, che indica alla CPU di eseguire le istruzioni contenute a partire da un’altro specifico indirizzo di memoria. Le istruzioni che vengono eseguite fanno parte di un insieme di routine (programmi) che viene detto BIOS (Basic Input/Output System) e sono memorizzate in un apposito circuito integrato di sola lettura (ROM, EPROM o EEPROM) della motherboard.

    Generalmente ci si riferisce ai programmi memorizzati nei circuiti integrati (ad accesso in sola lettura) col termine firmware, per distinguerli dal software che viene generalmente memorizzato in file, sulla memoria di massa.

  2. Le routine del BIOS effettuano quindi il POST (Power-On Self Test), ovvero la verifica del funzionamento di base dell’hardware del sistema. Se durante tale operazione viene trovato un malfunzionamento, la procedura si arresta e vengono emessi una serie di suoni dallo speaker del PC, che indicano, secondo un determinato codice (che dipende dal fornitore del BIOS), il tipo di problema che è stato incontrato.

    Viene eseguita una procedura di inizializzazione della scheda video (in genere contenuta in memoria a partire dall’indirizzo C000H), durante la quale è probabile che vengano visualizzate sullo schermo delle informazioni ad essa relative.

    Vengono ricercati ed eseguiti eventuali programmi di inizializzazione (driver) specifici di altri dispositivi. Ad esempio, generalmente viene eseguito il driver del controller ATA che si trova in memoria a partire dall’indirizzo C8000H.

    Viene quindi visualizzata la schermata di avvio relativa al BIOS.

    Viene controllata la funzionalità della memoria centrale (RAM) e durante il test viene visualizzato sullo schermo la quantità di memoria esaminata.

  3. Le routine del BIOS controllano il circuito di gestione degli interrupt, il PIC (Programmable Interrupt Controller), riconoscono gli hard disk ed i dispositivi Plug & Play (se il BIOS supporta questa funzionalità) e visualizzano quindi un prospetto della configurazione del sistema.
  4. Viene avviato il boot loader (v. sez. 2.1.1) secondo la sequenza sotto riportata
    1. Viene considerata la sequenza di avvio dei dischi impostata e ogni disco viene controllato per assicurarsi della sua presenza e del fatto che sia effettivamente avviabile (bootable) (questa caratteristica viene riconosciuta dai primi byte del suo MBR3);

      La sequenza con cui vengono scandite le unità a dischi nella fase di boot, può essere impostata dall’utente per mezzo dell’interfaccia messa a disposizione dal fornitore del BIOS, alla quale si può accedere nei momenti iniziali dell’avvio della macchina, generalmente premendo il tasto (o ).

    2. Viene caricato in memoria, a partire dall’indirizzo 7C00H, il primo settore del primo disco avviabile (il MBR) e viene eseguito il codice in esso contenuto, cioè il MBP (Master Boot Program);
    3. Il MBP carica un’altra parte del boot loader, lo SBP (Slave Boot Program), che prepara l’interfaccia utente per la scelta del sistema operativo da avviare;
    4. Dopo che l’utente ha scelto il sistema operativo, lo SBP avvia il processo di caricamento del sistema: nel caso di GNU/Linux procede al caricamento e all’avvio del kernel (il nucleo del sistema operativo) che a sua volta lancerà in esecuzione il processo iniziale necessario per il funzionamento del sistema.

Quella precedentemente descritta è la procedura di avvio del sistema, che viene eseguita in seguito ad un cold boot, cioè quando il sistema viene avviato prememndo il pulsante di accensione presente sul case (avvio a freddo - cold). Nel caso di riavvio software del sistema (senza intervenire manualmente sul pulsante di accensione), si parla invece di warm boot, ovvero un riavvio a caldo (warm), ed anche in tal caso viene eseguita la procedura di avvio del sistema, ma senza il POST.


  2.1.1 Il boot loader
  2.1.2 Il MBR - Master Boot Record
  2.1.3 Il boot da dischetto
  2.1.4 LOADLIN
  2.1.5 SYSLINUX
  2.1.6 GRUB
   2.1.6.1 Stadi di avvio
   2.1.6.2 Identificatori dei dispositivi
   2.1.6.3 Installazione
   2.1.6.4 Configurazione
  2.1.7 LILO
  2.1.8 initrd