Avanti Indietro Indice

8. Traduzione dei dischi IDE operata dal kernel

Se il kernel di Linux rileva la presenza di un disk manager su un disco IDE cerca di rimappare il disco nello stesso modo in cui l'ha mappato il disk manager, così vede le stesse partizioni che ad esempio il DOS gestisce con OnTrack o EZ-Drive. Tuttavia se si specifica la geometria da riga di comando NON viene effettuata la rimappatura del disco. Una riga di comando del tipo `hd=cilindri,testine,settori' fa perdere ogni compatibilità con il disk manager.

Se tutto questo vi dà fastidio e se conoscete qualcuno che può ricompilarvi un nuovo kernel cercate il file linux/drivers/block/ide.c e cancellate dalla funzione ide_xlate_1024() il test: if (drive->forced_geom) {---;return 0;}.

La rimappatura si fa, posto il prodotto H*C costante, variando il valore del numero di testine (4, 8, 16, 32, 64, 128, 255) finché si verifica C <= 1024 o H = 255.

Il titolo dei paragrafi che seguono corrisponde alle stringhe che appaiono in fase di boot quando Linux rileva la presenza di un disk manager. I tipi delle partizioni si devono intendere espressi in notazione esadecimale.

8.1 EZD

EZ-Drive è rilevato perché assegna alla partizione primaria numero uno il tipo 55. La geometria è rimappata come detto sopra. La tabella delle partizioni presente nel settore 0 non viene presa in considerazione perché viene letta quella presente nel settore 1. Il numero dei blocchi del disco non è cambiato, l'operazione di scrittura sul settore 0 è reindirizzata al settore 1. Questo comportamento può essere modificato ricompilando il kernel con: #define FAKE_FDISK_FOR_EZDRIVE 0 in ide.c.

8.2 DM6:DDO

OnTrack DiskManager (sul primo disco) è rilevato perché assegna alla partizione primaria numero uno il tipo 54. La geometria è rimappata come detto sopra e tutto il disco è traslato di 63 settori (così facendo il vecchio settore 63 diventa il nuovo settore 0). Dopo questa operazione sul settore 0 viene letto un nuovo MBR (con la relativa tavola della partizioni). Naturalmente la traslazione dei settori è necessaria per creare lo spazio per il DDO, questo spiega perché negli altri dischi non si applica tale operazione.

8.3 DM6:AUX

OnTrack DiskManager (sugli altri dischi) è rilevato perché assegna alla partizione primaria numero uno il tipo 51 o 53. La geometria è rimappata come detto sopra.

8.4 DM6:MBR

Questa è una vecchia versione di OnTrack DiskManager rilevata da una firma e non da un assegnamento di tipo ad una partizione (si verifica che l'offset trovato nel 2 e 3 byte dell' MBR non sia maggiore di 430 e che lo short trovato in questo offset sia eguale a 0x55AA, e inoltre che sia seguito da un byte di disparità). La geometria, come nei casi precedenti, è rimappata come detto sopra.

8.5 PTBL

Si possono dedurre le informazioni necessarie alla traduzione del disco utilizzando un test che verifica l'inizio e la fine della partizione primaria. Se l'inizio e la fine di una partizione sono nei settori numero 1 e 63, rispettivamente e se le testine finali sono 31, 63, 127 o 254 allora, considerato che è prassi terminare le partizioni entro le dimensioni di un cilindro, e dacché l'interfaccia IDE utilizza al massimo 16 testine, si può presupporre che il BIOS abbia effettuato una traduzione e che la geometria del disco sia stata rimappata per utilizzare 32, 64, 128 o 255 testine, rispettivamente. Quando la geometria rilevata ha già 63 settori per traccia e altrettante testine non viene effettuata la rimappatura (perché questo significa che probabilmente ne è già stata fatta una).


Avanti Indietro Indice