Learn Linux, 101: Boot the system | Cerca per titolo, autore, parola chiave | ||||||||
Learn Linux, 101: Boot the system By Ian Shields. Quando accendiamo un computer, il computer deve caricare un sistema operativo, prima di poter eseguire un qualsiasi compito. Il processo di caricamento di un sistema operativo è chiamato booting, o bootstrapping, termine che indica chiaramente come il processo di accensione di un computer sia un processo di autoaccensione, realizzato tramite un boot loader. Alcuni aspetti del processo di booting sono comuni a molti sistemi, ma esistono alcuni aspetti, legati all'hardware in uso, che sono, invece, specifici di una particolare architettura. Il materiale presente in questo tutorial è relativo ai sistemi x86 e x86_64 che utilizzano il BIOS per il booting del sistema. Per superare alcune limitazioni legate all'architettura x86 a 16 bit, che utilizza BIOS, Intel sviluppò un nuovo sistema, in sostituzione al BIOS, che utilizzava Extensible Firmware Interface (EFI) e la GUID Partition Table (GPT), sviluppato in particolare per Intel Itanium e per le arhitetture IA64. Intel interruppe lo sviluppo di EFI nel 2005, per farlo confluire nello sviluppo di Unified Extensible Firmware Interface (UEFI), particolarmente studiato per i dischi fissi più grandi di 2TByte e per i sistemi Windows 8. Prima di addentrarci nei boot loader, quali LILO, GRUB e GRUB2, vediamo come un PC, storicamente, ha sempre eseguito il boot. Un codice, chiamato BIOS (B_asic _I_nput _O_utput _S_ervice) è memorizzato in una memoria non-volatile, quale una ROM, EEPROM o una flash memory. Questo è il codice che viene eseguito immediatamente dopo l'accensione del computer. Il suo compito è di verificare che tutti i componenti della macchina siano presenti (power-on self test o POST). Inoltre, il BIOS identifica il disco fisso o removibile contrassegnato come disco di boot (boot drive) e carica in memoria il primo settore di quel disco (512 byte), contenente il cosiddetto Master Boot Record (MBR). Il MBR contiene anche la tabella delle partizioni. Quindi, il codice eseguibile contenuto nel MBR è addirittura inferiore ai 512 byte. Il MBR è presente in tutti i dischi, anche nei vecchi dischi floppy, o nei CD, o nei DVD, o nelle penne USB, e nel MBR c'è sempre un codice eseguibile, anche solo per stampare a monitor il messaggio: “Non-bootable disk in drive A:”. Questo codice, caricato dal BIOS in memoria, viene chiamato "first stage boot loader", o "the stage 1 boot loader". Il Master Boot Record (MBR) standard usato dai sistemi operativi MS DOS, PC DOS, Windows cerca nella tabella delle partizioni la partizione primaria del disco di boot (boot drive) marcata come "attiva", ne carica in memoria il primo settore, passando il controllo all'inizio del codice caricato. Questo pezzo di codice è noto anche come "the partition boot record". Il partition boot record è, in realtà, un altro stadio 1 del boot loader, ma ha abbastanza intelligenza per scaricare alcuni blocchi di dati dalla partizione. Il codice presente in questi blocchi di dati è chiamato "the stage 2 boot loader". Lo "stage 2 loader" si incarica di caricare il resto del sistema operativo. Tutto questo funziona bene in un sistema che abbia installato un solo sistema operativo. Come fare se desideriamo scegliere tra più sistemi operativi? Possiamo utilizzare un programma (quale DOS FDISK) che ci permetta di modificare la partizione attiva: in questo caso, una volta apportata la modifica, sarà sufficiente spegnere e riaccendere il computer. Un po' macchinoso! Inoltre, un disco può avere solo quattro partizioni primarie. Inoltre, il MBR standard può avere una sola partizione primaria attiva e non può eseguire il boot del sistema da una partizione logica. Che fare? Una soluzione è installare un programma che possa essere invocato sia dal partition boot record di una partizione attiva, sia direttamente dal master boot record. Questi programmi sono i boot loader, tra i più noti dei quali troviamo, su Linux:
Naturalmente, potendo passare il controllo ad un qualche programma che abbia più di 512 byte di codice, le restrizioni previste dai MBR tradizionali cadono: il sistema operativo potrà essere caricato da una partizione logica o, addirittura, da una partizione esterna al disco di boot. Non solo. Un boot manager può anche caricare in memoria un altro boot manager (chain loading): per esempio, un boot manager allocato nel MBR può caricare un boot loader allocato in un "partition boot record". Questo è ciò che quasi sempre accade quando un Linux boot loader deve far partire una partizione Windows o DOS, oppure quando un Linux boot loader di un sistema (LILO, per esempio) deve avviare un differente Linux boot loader (GRUB, per esempio), presente in una diversa partizione. Per superare le limitazioni dell'architettura BIOS 16-bit x86, Intel introdusse, per Intel Itanium e le architetture IA64, un nuovo sistema, Extensible Firmware Interface (EFI) e la GUID Partition Table (GPT). Nel 2005, Intel interruppe lo sviluppo di EFI, cedendo il progetto all'Unified Extensible Firmware Interface Forum, che oggi lo sviluppa come Unified Extensible Firmware Interface (UEFI). UEFI divenne popolare soprattutto per i sistemi con dischi fissi di dimensioni maggiori ai 2 TB e per i sistemi Windows® 8. UEFI esiste a 32 bit o a 64 bit. È possibile avere un 32-bit UEFI su un processore a 64 bit, ma un boot loader deve essere compatibile con UEFI: un 32-bit boot loader per 32-bit UEFI ed un 64-bit boot loader per 64-bit UEFI. Molte implementazioni UEFI, ma non tutte, possono essere eseguite sia in UEFI mode, sia in BIOS mode, così da permettere l'uso di un boot loader che non supporti UEFI. Tuttavia, swe il sistema supporta solo UEFI, è necessario dotarsi di un UEFI boot loader, come GRUB2. Quando accendiamo un computer, il Basic Input Output Service (BIOS) esegue un self test. Eseguito il self test, il BIOS carica in memoria il MBR, normalmente dal primo settore (512-byte) del disco di boot. Per salvare, nel file test.bin, il Master Boot Record ( il primo settore, di 512 byte, del primo disco fisso ), eseguite il comando: sudo dd if=/dev/sda of=test.bin bs=512 count=1 Per leggere il file, in notazione esadecimale, eseguite il comando: od -x test.bin In un disco fisso, il MBR carica in memoria uno stage 1 boot loader, LILO o GRUB per un sistema Linux, presente in un altro settore di 512-byte. Lo stage 1 boot loader, a sua volta, carica in memoria una sequenza di record chiamata stage 2 boot loader (o stage 1.5 loader), il quale, a sua volta, carica il sistema operativo.
|
|||||||||
Learn Linux, 101: Boot the system | Disclaimer: questo è un link a contenuti ospitati su server esterni. |