Jeśli jądro Linuxa rozpozna istnienie na dysku IDE programu typu disk
manager, spróbuje przeprowadzić identyczną translację jaką robi ten
właśnie program, tak aby widzieć te same partycje co np. MS-DOS z
programe OnTrack lub EZ-Drive. Jeśli jednak w parametrach startowych
zostanie przekazana geometria dysku, nie jest wykonywana żadna
translacja. Tak więc opcja startowa
`hd=cyls,heads,secs' może zniszczyć
zgodność z programem typu disk manager.
Translacja wykonywana przez jądro polega na wypróbowaniu kolejno liczby głowic równej 4, 8 ,16, 32, 128, 255 (utrzymując stałą wartość H*C) aż do spełnienia warunku C <= 1024 lub H = 255.
Trochę uwag na temat tekstu poniżej - nagłówki podrozdziałów są identyczne z pojawiającymu się w komunikatach startowych. Tutaj i w całym tekscie typy partycji podane są szesnastkowo.
Rozpoznano drajwer EZ-Drive poniważ pierwsza partycja
podstawowa jest typu 55. Geometria dysku podlega opisanej powyżej
translacji i tabela partycji z sektora 0 zostaje pominięta - zmiast
tego korzystamy z tabeli partycji znajdującej się w sektorze 1. Numery
bloków dyskowych pozostają niezmienione, lecz zapis sektora 0 zostaje
przekierowany do sektora 1. To zachownie może zostać zmienione przez
ponowne skompilowanie jądra przy zdefiniowaniu w pliku ide.c #define FAKE_FDISK_FOR_EZDRIVE 0 .
Rozpoznano drajwer OnTrack Manager (na pierwszym dysku) ponieważ pierwsza partycja podstawowa jest typu 54. Geometria dysku podlega opisanej powyżej translacji i cały dysk zostaje przesunięty o 63 sektory (tak więc stary sektor 63 staje się sektorem 0). Następnie nowy rekord MBR (z tabelą partycji) zostaje odczytany z nowego sektora 0. To przesunięcie oczywiście ma na celu zrobienie miejsca dla DDO - dlatego nie jest wykonywane dla innych dysków.
Rozpoznano drajwer OnTrack Manager (na innych dyskach) ponieważ pierwsza partycja podstawowa jest typu 51 lub 53. Geometria dysku podlega opisanej powyżej translacji.
Rozpoznano starszą wersję drajwera OnTrack Manager poniważ znaleziono podpis drajwera (sprawdzono, że przesunięcie znalezione w 2-gim i 3-cim bajcie rekordu MBR nie jest większe od 430, i zmienna typu short znaleziona pod tym adresem jest równa 0x55AA, po której występuje bajt nieparzysty). Geometria dysku podlega opisanej powużej translacji.
Na końcu wykonywany jest test próbujący wydedukować istnienie
translacji na podstawie wartości pól start i end partycji
podstawowej:
Jeśli cylinder początkowy i końcowy jednej z partycji jest mniejszy od
256, a sektory początkowy i końcowy mają numery odpowiednio 1, i 63, a
końcowe numery głowic są równe 31, 63 lub 127, wtedy wnioskujemy, że
translacja dysku jest aktywna, i wykorzystujemy liczbę głowic
równą odpowiednio 32, 64 i 127 (ponieważ zwykle partycja kończy się na
granicy cylindra i interfejs IDE nie pozawala na więcej niż
16 głowic). Być może jest tu błąd i genhd.c nie powinien
sprawdzać dwóch najwyższych bitów zmiennej przechowującej numer
cylindra? Jednakże nie wykonuje się żadej translacji, jesli aktualny
pogląd na istniejącą geometrię już zakłada 63 sektory na ścieżce i co
najmniej tyle samo głowic (ponieważ to prawdopodownie oznacza, ze
translacja już została dokonana).