Om Linux-kärnan
detekterar närvaron av någon hårddiskhanterare på en IDE-hårddisk
kommer den att försöka mappa om hårddisken på samma sätt som denna
hårddiskhanterare skulle ha gjort, så att Linux ser samma
hårddiskpartitionering som till exempel DOS med OnTrack eller
EZ-Drive. Emellertid görs INGEN ommappning när en geometri
specificeras på kommandoraden -- så ett kommandoradsargument som
"hd=
cylindrar,
huvuden,
sektorer" skulle
mycket väl kunna förstöra kompatibiliteten med en hårddiskhanterare.
Ommappningen görs genom att testa 4, 8, 16, 32, 64, 128, 255 huvuden (och hålla H*C konstant) tills antingen C <= 1024 or H = 255.
Detaljerna är som följer -- titlarna för subkapitlen är strängarna som dyker upp i korresponderande boot-meddelanden. Här och överallt annars i denna text ges partitionstyperna med hexadecimaler.
EZ-Drive kan kännas igen genom att den första primära partitionen är
av typ 55. Geometrin mappas om enligt beskrivning ovan, och
partitionstabellen från sektor 0 slängs bort -- istället läses
partitionstabellen från sektor 1. Hårddiskblockens nummer ändras
inte, men skrivningar till sektor 0 dirigeras om till sektor 1. Detta
beteende kan ändras genom att kompilera om kärnan med
#define FAKE_FDISK_FOR_EZDRIVE 0
i ide.c.
Hårddiskhanteraren OnTrack (på den första hårddisken) känns igen genom att den första primära partitionen är av typ 54. Geometrin mappas om enligt beskrivning ovan, och hela disken skiftas 63 sektorer (så att den ursprungliga sektorn 63 blir sektor 0). Efteråt läses en ny MBR (med partitionstabell) in från sektor 0. Självklart är denna skiftning till för att göra plats för DDOn -- det är därför det inte görs någon skiftning på resten av hårddiskarna.
Hårddiskhanteraren OnTrack (på resten av hårddiskarna) känns igen genom att den första primära partitionen är av typ 51 eller 53. Geometrin mappas om enligt beskrivning ovan.
En äldre version av hårddiskhanteraren OnTrack känns inte igen genom partitionstyp, utan genom en signatur. (Testa huruvida offseten som finns i byte 2 och 3 på MBRen inte är större än 430 och talet som finns på denna offset är lika med 0x55AA och följs av en udda byte.) Återigen, geometrin mappas om enligt ovan.
Till sist finns ett test som försöker beräkna en översättning med
hjälp av start
- och end
-fälten för de primära partitionerna:
Om någon partition har start- och slutcylinder mindre än 256, och
start- och slutsektor nummer 1 och 63, respektive, och sluthuvuden 31,
63 eller 127, så (eftersom det är brukligt att avsluta partitioner på
en cylindergräns och eftersom IDE-gränssnittet använder högst 16
huvuden) antas det att en BIOS-översättning är aktiv och att geometrin
är ommappad till att använda 32, 64 eller 128 huvuden, respektive.
(Det finns kanske en brist här; genhd.c borde kanske
inte ha testat de två mest signifikanta bitarna av cylindertalet?)
Emellertid görs ingen ommappning när den nuvarande idén om hur
geometrin ska vara inbegriper 63 sektorer per spår och åtminstone lika
många huvuden (eftersom det då förmodligen innebär att en ommappning
redan är gjord).