Boot Loaders | Cerca per titolo, autore, parola chiave | ||||||||
Boot Loaders Tratto da Red Hat Enterprise Linux 3 Reference Guide, 2003. Quando accendiamo un computer, un programma speciale, chiamato boot loader, si occupa di caricare in memoria il sistema operativo. Il boot loader, normalmente, si trova nel disco fisso primario del sistema ed ha il solo compito di caricare in memoria il kernel o il sistema operativo. GNU GRand Unified Boot loader o GRUB è un boot loader che permette all'utente di scegliere il sistema operativo o il kernel da caricare in memoria e di passare argomenti al kernel. L'inizio del processo di boot varia a seconda della piattaforma hardware usata, ma, una volta trovato e caricato in memoria, dal boot loader, il kernel, il processo di boot diventa lo stesso per qualsiasi piattaforma o architettura. Qui ci occupiamo fondamentalmente dell'architettura x86. Quando un computer x86 viene acceso, il processore cerca, alla fine della memoria di sistema un programma chiamato Basic Input/Output System o BIOS e lo esegue. Il BIOS si occupa, innanzitutto, di connettersi con le periferiche di sistema, ovviamnente a bassissimo livello, un livello quasi fisico. Per questo motivo, il BIOS viene salvato, in modalità di sola lettura (read-only), in una memoria permanente, così da essere sempre reperibile. Il BIOS cerca e verifica quali periferiche siano collegate al sistema, poi cerca una valida periferica (floppy, CD-ROM, disco fisso o hard drive) dalla quale eseguire il boot del sistema. Il BIOS, quindi, carica in memoria i primi 512 byte (primo settore, o Master Boot Record o MBR) del disco di boot. Il MBR contiene le istruzioni macchina (boot loader) per eseguire il boot del sistema e la tabella delle partizioni. Quando il BIOS carica in memoria il boot loader, passa ad esso il controllo del processo di boot. I boot loader per le piattaforme x86 (GRUB o LILO) sono divisi in almeno due fasi: la prima fase è quel breve pezzo di codice presente nel MBR, il cui unico scopo è di localizzare il boot loader del secondo stadio (o fase), caricandone in memoria una prima piccola parte (i primi 512 byte della partizione di boot). Con LILO, il boot loader del secondo stadio (second stage boot loader) utilizza le informazioni scritte nel MBR, per determinare le opzioni di boot da presentare all'utente. Questo comporta che ad ogni modifica di configurazione oppure ad ogni aggiornamento manuale del kernel occorrerà rieseguire il comando: /sbin/lilo -v -v per apportare le necessarie modifiche al MBR. GRUB, invece, è capace di leggere le partizioni ext2 e ext3, così da poter caricare il suo file di configurazione durante il boot del sistema. Quando il second stage boot loader viene caricato in memoria, all'utente viene presentato un menu dei diversi sistemi operativi o kernel disponibili, tra i quali l'utente selezionerà quello da caricare in memoria. Non appena il second stage boot loader riceve l'informazione su quale kernel caricare, cerca il corrispondente file binario nella directory: /boot/ A questo punto, il boot loader trasferisce nella memoria del sistema l'immagine iniziale temporanea del disco appropriata alla scelta dell'utente (initial RAM disk image), o initrd (initial ramdisk). Si tratta di una immagine di un filesystem elementare, che il kernel utilizzerà per caricare i moduli necessari al boot completo del sistema. Una volta caricati in memoria il kernel e l'immagine initrd del disco temporaneo, il boot loader trasferisce il controllo del processo di boot al kernel. Una volta caricato in memoria, il kernel inizializza e configura la memoria del computer e l'hardware collegato al sistema, inclusi i processori, i sistemi di I/O e le periferiche di memoria (i dischi). Poi, cerca, in un punto predeterminato della memoria, l'immagine compressa initrd, decomprime il file, monta il filesystem temporaneo, utilizzandolo per caricare tutti i moduli necessari (driver). Poi, inizializza le periferiche virtuali (LVM, RAID), prima di eseguire l'unmount del disco temporaneo initrd. A questo punto, il kernel crea e monta la partizione di sola lettura root, liberando tutta la memoria inutilizzata. Ora, il kernel è in memoria e pienamente operativo. Ma non è stata ancora caricata alcuna applicazione utente, quindi il sistema non può ricevere alcun input. Il sistema, in questo stato iniziale è del tutto inutile. Per creare un ambiente utente, il kernel esegue il padre di tutti i processi: /sbin/init
|
|||||||||
Boot Loaders | Disclaimer: questo è un link a contenuti ospitati su server esterni. |