7 Dettagli Tecnici

(Contributo di Randall Hopper, )

Questa sezione prova a fornire abbastanza informazioni di base sugli hard disk e sul processo di avvio così da essere poi capaci di determinare le cause dei problemi più frequenti che potreste affrontare al momento dell'installazione e della configurazione di più sistemi operativi. Inizia con un linguaggio semplice, così potresti voler scorrere la pagina fino a quando non ti sembri difficile e cominciare quindi da quel punto a leggere.

7.1 Introduzione agli Hard Disk

Sono generalmente usati tre termini fondamentali per descrivere l'allocazione dei dati sull'hard disk: Cylinders (Cilindri), Heads (Testine), e Sectors (Settori). Non è particolarmente importante sapere esattamente cosa significano questi termini e quale sia il loro compito specifico, ma interessa sapere che, insieme, identificano dove si trovano fisicamente i dati sull'hard disk.

Ogni hard disk ha un particolare numero di cilindri, di testine, e di settori per ogni parte di cilindro relativa a una singola testina (che generalmente viene chiamato track, o traccia). Questi dati contribuiscono a determinare la geometria fisica del disco dell'hard disk. Ci sono generalmente 512 byte per settore, e 63 settori per traccia, mentre il numero di cilindri e testine varia a seconda del tipo di hard disk. In questo modo puoi trovare la quantità di dati che il disco potrebbe contenere semplicemente calcolando:

(numero di cilindri) × (numero di testine) × (63 settori/traccia) × (512 byte/settore)

Per esempio, sul mio Western Digital AC31600 EIDE, questo è:

(3148 cilindri) × (16 testine) × (63 settori/traccia) × (512 byte/settore)

che sarebbe 1,624,670,208 byte, o circa 1.6 Giga.

Puoi scoprire la geometria fisica del disco (cioè il numero di cilindri, testine, e il fattore settori/tracciati) del tuo hard disk usando ATAID o altri programmi reperibili su Internet. Probabilmente il tuo hard disk ti è stato venduto con queste informazioni. Comunque stai attento: se stai usando l'opzione LBA del BIOS (vedi la Sezione 7.3), non puoi usare un qualsiasi programma per conoscere la geometria fisica. Questo perché molti programmi (ad esempio MSD.EXE o l'fdisk di FreeBSD) non identificano la geometria fisica del disco, fanno invece riferimento alla geometria traslata (Numeri virtuali usando LBA). Continua a leggere per saperne di più.

Un altro aspetto interessante di questi termini. Dati 3 numeri—un numero di cilindri, un numero di testine, e un numero di settori per tracciato—si può identificare uno specifico settore assoluto (un blocco di 512 byte di dati) sull'hard disk. I cilindri e le testine sono numerati partendo da 0, e i settori sono numerati partendo da 1.

Per quelli che sono interessati a dettagli più tecnici, informazioni sulla geometria dei dischi, settori di avvio, BIOS, e altro, possono trovare grandi quantità di informazioni in Internet. Basta fare una ricerca con Lycos, Yahoo e altri digitando boot sector o master boot record. Tra le numerose informazioni utili che si possono trovare c'è il pacchetto di documentazione How It Works (in italiano “Come Funziona”) di Hale Landis. Guarda la Sezione 6 per alcuni puntatori a questo pacchetto.

Ok, troppa terminologia finora. Adesso parliamo del processo di avvio.

7.2 Il Processo di Avvio

Sul primo settore del tuo disco (Cyl 0, Head 0, Sector 1) risiede il Master Boot Record (MBR). Questo contiene una mappa del tuo disco. Identifica fino a 4 partizioni, ciascuna delle quali è uno spazio, una parte, di quel disco. FreeBSD chiama queste partizioni slices per evitare confusione con le sue partizioni, di cui ora non parleremo. Ciascuna partizione può contenere un sistema operativo diverso.

Ogni elemento che rappresenta una partizione presente nell'MBR ha un Partition ID, un valore Start Cylinder/Head/Sector, e un valore End Cylinder/Head/Sector. Il Partition ID mostra di che tipo di partizione si tratta (di che sistema operativo) e i valori di inizio/fine dicono dove questa si trova. La Tabella 1 mostra una lista di partition ID più comuni.

Tabella 1. Partition ID

ID (hex) Descrizione
01 DOS12 primaria (12-bit FAT)
04 DOS16 primaria (16-bit FAT)
05 DOS estesa
06 DOS primaria di grande dimensione (> 32MB)
0A OS/2®
83 Linux (EXT2FS)
A5 FreeBSD, NetBSD, 386BSD (UFS)

Nota che non tutte le partizioni sono avviabili (per esempio quelle DOS estese). Alcune lo sono, altre no. Ciò che rende una partizione avviabile è la configurazione del Partition Boot Sector che si trova all'inizio di ciascuna partizione.

Quando configuri il tuo boot manager preferito, questo cerca gli elementi nella tavola delle partizioni sull'MBR di tutti i tuoi hard disk e fa in modo che tu possa dare un nome a tutte gli elementi della lista. Quindi all'avvio, il boot manager viene invocato da un codice particolare presente nell'MBR del primo hard disk che viene rilevato sul tuo sistema. Questo guarda la tavola delle partizioni dell'MBR corrispondente alla partizione che hai scelto, usa l'informazione sullo Start Cylinder/Head/Sector per quella partizione, carica il Partition Boot Sector per quella partizione, e sli dà il controllo. Quel settore di avvio per la partizione contiene abbastanza informazioni per cominciare a caricare il sistema operativo di quella partizione.

Un particolare che abbiamo sorvolato e che è importante conoscere. Tutti gli hard disk hanno l'MBR. Ad ogni modo, quello importante è quello del disco che viene rilevato per primo dal BIOS. Se hai solo hard disk IDE, è il primo disco IDE (cioè il disco primario del controller primario). Stessa cosa per i sistemi SCSI. Se hai sia SCSI che IDE invece, i dischi IDE vengono riconosciuti per primi dal BIOS, quindi il primo disco IDE è quello che viene riconosciuto per primo. Il boot manager che installerai si troverà quindi sull'MBR del primo disco riconosciuto come descritto.

7.3 Limitazioni sull'Avvio e Avvertimenti

Ora un po' di cose interessanti alle quali devi stare attento.

7.3.1 Il maledetto limite dei 1024 cilindri e l'aiuto dell'LBA del BIOS

La prima parte del processo di avvio viene effettuata attraverso il BIOS, (se questo è un termine nuovo per te, il BIOS è un chip contenente del software presente sulla scheda madre che contiene il codice di avviamento per il computer). Quindi, questa prima parte del processo è soggetta alle limitazioni dell'interfaccia del BIOS.

L'interfaccia BIOS usata per leggere gli hard disk in questo momento (INT 13H, Subfunction 2) alloca 10 bit per il Cylinder Number, 8 bit per l'Head Number, e 6 bit per il Sector Number. Questo porta gli utenti ad essere sottoposti a dei limiti (per esempio i boot manager installati nell'MBR così come i loader installati nei Boot Sector) che ora vediamo:

  • 1024 cilindri, massimo

  • 256 testine, massimo

  • 64 settori/traccia, massimo (in realtà 63, 0 non è disponibile)

Ora, hard disk grossi hanno molti cilindri, ma non molte testine, quindi invariabilmente con grandi hard disk il numero di cilindri sarà più alto di 1024. A causa di questo e della situazione dell'interfaccia BIOS, non puoi far partire un sistema operativo da qualsiasi punto del disco. Il codice di avvio (il boot manager e il loader del sistema operativo devono essere nei settori di avvio di tutte le partizioni avviabili) deve risiedere entro il limite dei 1024 cilindri. In pratica, se il tuo hard disk è generico e contiene 16 testine, questo si tramuta in:

1024 cilindri/disco × 16 testine/disco × 63 settori/traccia × 512 byte/settore

che è intorno al summenzionato limite dei 528MB.

Qui è dove entra in gioco l'LBA (Logical Block Addressing, Indirizzamento Logico dei Blocchi) del BIOS. L'LBA del BIOS fornisce all'utente delle API del BIOS accesso ai cilindri fisici oltre al 1024esimo attraverso l'interfaccia BIOS ridefinendo un cilindro. Quindi, rimappa cilindri e testine, facendo sembrare al BIOS che il computer contenga meno cilindri e più testine di quanto in realtà non ne abbia. In altre parole, si avvantaggia del fatto che gli hard disk hanno relativamente poche testine e molti cilindri semplicemente bilanciando tra cilindri e testine facendo in modo che tutti e due i numeri rimangano sotto la soglia (1024 cilindri, 256 testine).

Con l'LBA del BIOS, la limitazione agli hard disk è virtualmente eliminata (beh, spostata ad 8 Gigabyte). Se hai un BIOS che supporta l'LBA, puoi mettere FreeBSD o qualsiasi altro OS in qualsiasi parte tu voglia senza toccare il limite dei 1024 cilindri.

Per usare ancora l'esempio del mio Western Digital da 1.6 Giga, la sua geometria fisica è:

(3148 cilindri, 16 testine, 63 settori/traccia, 512 byte/settore)

Ad ogni modo, il mio LBA del BIOS rimappa questo in:

(787 cilindri, 64 testine, 63 settori/traccia, 512 byte/settore)

dandomi la stessa grandezza effettiva di disco, ma con numero di cilindri e testine entro i limiti dell'API del BIOS (casualmente, ho sia Linux che FreeBSD installati su uno dei miei hard disk sopra il 1024esimo cilindro fisico, e tutti e due partono perfettamente, grazie all'LBA del BIOS).

7.3.2 Boot Manager e Allocazione del Disco

Un altro punto di cui tener conto al momento al momento dell'installazione di un boot manager, è quello di ricordarsi di allocare spazio per il tuo boot manager. È meglio aver presente fin da subito questo problema, per non accorgersene troppo tardi e dover quindi reinstallare uno o più sistemi operativi.

Se hai seguito il discorso nella Sezione 7.2 a proposito del Master Boot Sector (dove si trova l'MBR), dei Partition Boot Sectors, e dell processo di avvio, potresti esserti chiesto esattamente dove quel piccolo boot manager risiede sul tuo hard disk. Bene, alcuni boot manager sono abbastanza piccoli da risiedere nel Master Boot Sector (Cilindro 0, Testina 0, Settore 0) insieme alla tabella delle partizioni. Alcuni invece hanno bisogno di un po' di spazio in più e si estendono su alcuni settori oltre il Master Boot Sector nella traccia del Cilindro 0 Testina 0, dato che questa è tipicamente libera.

Ecco qui. Alcuni sistemi operativi (incluso FreeBSD) fanno in modo che le loro partizioni possano cominciare subito dopo il Master Boot Sector, cioè al cilindro 0, testina 0, settore 2 se vuoi. Infatti, se dai al sysinstall di FreeBSD un disco con una parte iniziale vuota oppure un disco vuoto, quello è il punto da cui comincerà la partizione FreeBSD di default (o almeno lo ha fatto quando sono caduto in questa trappola). Poi quando vai ad installare il tuo boot manager, se è uno che occupa alcuni settori oltre all'MBR, andrà a sovrascrivere la parte iniziale dei dati della prima partizione. Nel caso di FreeBSD, questo sovrascrive il label del disco, e fa in modo da rendere non avviabile la partizione di FreeBSD.

Il modo più semplice per eliminare questo problema (e lasciarti la flessibilità di provare in seguito differenti boot manager) è quello di lasciare sempre la prima traccia del tuo hard disk completamente libera quando partizioni il tuo hard disk. Ciò significa lasciare libero lo spazio tra il cilindro 0, testina 0, settore 2 fino a cilindro 0, testina 0, settore 63, e cominciare la prima partizione sul cilindro 0, testina 1, settore 1. Per ciò che vale, quando crei una partizione DOS all'inizio del tuo hard disk, il DOS lascia sempre questo spazio libero di default (ecco perché molti boot manager presumono che sia libero). Quindi creare una partizione DOS all'inizio del disco toglie questi problemi tutti insieme. Mi piace fare da solo, creando una partizione DOS da 1 mega all'inizio, perché questo evita che cambino le lettere dei drive DOS quando ripartiziono in seguito.

Come riferimento, i seguenti boot manager usano il Master Boot Sector per immagazzinare il loro codice e i loro dati:

  • OS-BS 1.35

  • Boot Easy

  • LILO

Questi boot manager usano alcuni settori addizionali dopo il Master Boot Sector:

  • OS-BS 2.0 Beta 8 (settori 2-5)

  • Boot Manager di OS/2

7.3.3 Cosa fare se il tuo computer non parte?

In alcuni momenti quando installi dei boot manager, potresti lasciare l'MBR in uno stato in cui il computer non riesce più a partire. Questo è spiacevole, ma possibile quando si utilizza FDISK su di un boot manager già installato.

Se hai una partizione DOS avviabile sul tuo hard disk, puoi partire da un floppy DOS, e poi eseguire il comando:

A:\> FDISK /MBR

Per mettere il codice originale di avvio del DOS nel sistema. Puoi ora avviare DOS (e solamente DOS) dall'hard disk. Alternativamente, puoi far ripartire il programma di installazione del tuo boot manager da un floppy avviabile.

Questo, ed altri documenti, possono essere scaricati da ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Per domande su FreeBSD, leggi la documentazione prima di contattare <questions@FreeBSD.org>.
Per domande su questa documentazione, invia una e-mail a <doc@FreeBSD.org>.