Als de Linux kernel de aanwezigheid van een bepaalde diskmanager
op een IDE disk detecteert, zal het proberen de disk opnieuw op dezelfde
manier in te delen als deze diskmanager zou hebben gedaan, zodat Linux
dezelfde diskpartitionering ziet als bijvoorbeeld DOS met OnTrack of
EZ-Drive. Er zal echter geen herindeling plaatsvinden als er een geometrie
op de opdrachtregel werd opgegeven - dus een
`hd=
cyls,
heads,
secs' opdrachtregeloptie
zou heel goed compatibiliteit met een diskmanager kunnen ruïneren.
Als dit je treft, en je weet iemand die een nieuwe kernel voor je kan
compileren, zoek dan naar het bestand linux/drivers/block/ide.c
en verwijder in de routing ide_xlate_1024()
de test
if (drive->forced_geom) {...;return 0; }
.
De herindeling wordt gedaan door het uitproberen van
4, 8, 16, 32, 64, 128, 255 heads
(waarbij H*
C constant wordt gehouden) totdat of C <= 1024 of H = 255.
De details zijn als volgt - subsectie titelkoppen bestaan uit de tekst die in de corresponderende bootmeldingen verschijnen. Hier en elders in de tekst worden partitietypes in hexidecimaal gegeven.
EZ-Drive wordt gedetecteerd door het feit dat de eerste primaire partitie
type 55 heeft. De geometrie wordt heringedeeld zoals hierboven beschreven,
en de partitietabel is vanaf sector 0 opzijgezet - in plaats daarvan
wordt de partitietabel vanaf sector 1 ingelezen. Diskbloknummers zijn
niet gewijzigd, maar schrijfopdrachten naar sector 0 worden doorgestuurd
naar sector 1. Dit gedrag kan worden gewijzigd door de kernel te
hercompileren met #define FAKE_FDISK_FOR_EZDRIVE 0
in ide.c
.
OnTrack DiskManager (op de eerste disk) wordt gedetecteerd door het feit dat de eerste primaire partitie type 54 heeft. De geometrie is heringedeeld als hierboven beschreven en de volledige disk is met 63 sectoren verschoven (zodat de oude sector 63 sector 0 wordt). Daarna wordt een nieuwe MBR (met partitietabel) vanaf de nieuwe sector 0 ingelezen. Natuurlijk is deze verschuiving om ruimte voor de DDO te maken - daarom is er geen verschuiving op andere disks.
OnTrack DiskManager (op andere disks) wordt gedetecteerd door het feit dat de eerste primaire partitie het type 51 of 53 heeft. De geometrie is heringedeeld als hierboven beschreven.
Een oudere versie van OnTrack DiskManager wordt niet gedetecteerd door het partitietype maar door een kenmerk. (Test of de offset die in bytes 2 en 3 van de MBR wordt gevonden, niet meer is dan 430, en of de short die op deze offset wordt gevonden gelijk is aan 0x55AA, en wordt gevolgd door een even byte.) Weer wordt de geometrie heringedeeld als hierboven.
Als laatste is er een test dat een vertaling van de
start
en eind
waarden van de primaire partities probeert
af te leiden:
Als een bepaalde partitie een start- en eind sectornummer van
respectievelijk 1 en 63 heeft, en end heads 31, 63, 127 of 254 dan,
aangezien het gebruikelijk is
om partities op een cylindergrens te beëindigen, en aangezien de IDE
interface bovendien maximaal 16 heads gebruikt, wordt verondersteld
dat er een BIOS vertaling actief is, en de geometrie is
heringedeeld dat het respectievelijk 32, 64, 128 of 255 heads gebruikt.
Er heeft echter geen herindeling plaatsgevonden als het huidige idee van
de geometrie reeds 63 sectoren per spoor heeft en tenminste zoveel heads
(aangezien dit waarschijnlijk betekent dat er reeds een
herindeling heeft plaatsgevonden).