Si el núcleo de Linux detecta la presencia de algún gestor de disco en un disco
IDE, tratará de remapear el disco del mismo modo en que lo haya hecho el
gestor de disco, de modo que Linux `vea' el mismo particionamiento del mismo que
bajo DOS con OnTrack o EZ-Drive.
No obstante, NO se produce remapeo alguno cuando se especifica la geometría
en la línea de comandos
hd=cyls,heads,secs
'
puede acabar perfectamente con la compatibilidad de un gestor de disco.
El remapeo se lleva a cabo probando con 4, 8, 16, 32, 64, 128, 255 Cabezas (manteniendo H*C constante) hasta que o bien C <= 1024 o H = 255.
Los detalles vienen a continuación. --los títulos de las subsecciones son las que aparecen en los mensajes de arranque correspondientes--. Tanto aquí como en cualquier otra parte de este texto, los tipos de partición se darán en notación hexadecimal.
EZ-Drive se detecta por el hecho de que la primera partición primaria es de tipo 55. La geometría se remapea como se describió anteriormente, desechando la tabla de particiones del sector 0 --en lugar de ello, se lee del sector 1--. Los números de bloque del disco no sufren cambio alguno, tan sólo se redirigen las operaciones de escritura al sector 0 al sector 1. Se puede cambiar este comportamiento recompilando el kernel con la definición
#define FAKE_FDISK_FOR_EZDRIVE 0
en ide.c
.
OnTrack DiskManager (en el primer disco) se detecta por el hecho de que la primera partición primaria es de tipo 54. La geometría se remapea como se describió anteriormente, y el disco se desplaza enteramente 63 sectores (por lo que el antiguo sector 63 pasa a ser el sector 0). Posteriormente, un MBR nuevo (con su correspondiente tabla de particiones) es leído del nuevo sector 0. Por supuesto este desplazamiento se lleva a cabo para hacer sitio al DDO --a esto se debe a que no se produzca dicho desplazamiento en los demás discos--.
OnTrack DiskManager (en otros discos) es detectado por la circunstancia de que la primera partición primaria es de tipo 51 o 53. La geometría se remapea como describimos antes.
Una versión más antigua de OnTrack DiskManager se detecta no por el tipo de
partición, sino por la firma. (Se comprueba que el offset encontrado en
los bytes 2 y 3 del MBR no es superior a 430, la abreviatura encontrada en este
offset es igual a 0x55AA
, y está seguido por un byte impar.).
Nuevamente, la geometría se remapea como anteriormente.
Para finalizar, hay un test que intenta deducir si existe traslación a partir
de los valores start
y end
comienzo
y
final
respectivamentegenhd.c
, ¿no debería haber
comprobado dos bits mayores por orden del número de cilindro?).
No obstante, no se lleva a cabo remapeo alguno cuando la noción que se tiene
en este momento de la geometría ya es de 63 sectores por pista con al menos
tantas otras cabezas (dado que esto significaría que el remapeo ya se ha
producido).