Quando accendete il computer, questo esegue una sorta di auto-verifica per controllare che tutto funzioni correttamente. Questa fase viene chiamata "auto-verifica di accensione" (dall'inglese "Power on self test"). A questo punto, un programma chiamato "bootstrap loader", che risiede nella memoria ROM del BIOS, cerca un settore di avvio (boot sector). Il settore di avvio è il primo settore di un disco, che contiene un piccolo programma capace di avviare un sistema operativo. I settori di avvio vengono marcati con il numero magico 0xAA55 = 43603 al byte 0x1FE = 510. Questo corrisponde agli ultimi due byte del settore. È in questo modo che l'hardware è in grado di riconoscere se un settore è di avvio oppure no.
Il bootstrap loader ha una lista di luoghi in cui cercare i possibili settori di avvio. Il mio vecchio computer cerca nel primo floppy drive e quindi nell'hard disk primario. I computer più moderni possono cercare un settore di avvio anche sul CD-ROM (NdT: recentemente anche tramite rete o dispositivi esterni come memory card o penne USB). Se trova un settore di avvio, lo carica in memoria e passa il controllo al programma in esso contenuto, che a sua volta carica il sistema operativo. In un tipico sistema Linux, questo programma corrisponde probabilmente alla prima parte del boot loader LILO (NdT: o di GRUB). Esistono diversi modi di configurare l'avvio del vostro sistema. Date uno sguardo al documento LILO User's Guide per maggiori dettagli, e alla sezione LILO per dei rimandi sull'argomento.
Ovviamente ci sarebbe molto altro da dire su quello che fa l'hardware di un PC. Ma questo non è il posto adatto per dirlo. Leggetevi magari uno dei numerosi libri sull'hardware dei PC.
Il computer immagazzina alcune informazioni su se stesso nella sua CMOS. Queste informazioni comprendono ad esempio il tipo di hard disk e di RAM presenti nel sistema. Il BIOS del computer contiene un programma che permette di modificare queste impostazioni. Per capire come accedervi, controllate i messaggi che compaiono sullo schermo quando accendete il computer. Sul mio computer, bisogna premere il tasto Canc prima che inizi ad avviarsi il sistema operativo.
Un ottimo modo per imparare a conoscere l'hardware di un PC è quello di costruirsi una macchina da soli con dei pezzi di seconda mano. Procuratevi un processore, almeno un 386, così da poter poi eseguire un sistema Linux agevolmente. Non vi costerà molto. Chiedete in giro, qualcuno potrebbe darvi alcuni dei pezzi di cui avrete bisogno.
Scaricate e compilate il programma Unios (avevano una homepage su http://www.unios.org, ma è scomparsa) e fatevi con questo un dischetto di avvio. Si tratta semplicemente del programma tipo "Ciao mondo!" avviabile, che consiste soltanto di un centinaio di righe di codice assembly. Sarebbe bene vederle convertite in un formato comprensibile dal compilatore assembler GNU.
Aprite l'immagine del dischetto di avvio di unios con un editor
esadecimale. Questa immagine è grande 512 byte, ossia esattamente un
settore. Individuate il numero magico 0xAA55. Fate lo stesso con il
settore di boot di un dischetto avviabile del vostro computer.
Potete utilizzare il comando dd
per copiarlo su un file:
dd if=/dev/fd0 of=myboot.sector
.
Fate molta attenzione a come usate if
(file di input)
e of
(file di output).
Date uno sguardo al codice sorgente del boot loader LILO.