[eside-ghost] Curiseando con hdparm
Pablo Garaizar Sagarminaga
garaizar en eside.deusto.es
Vie Mayo 27 09:44:29 CEST 2005
Aupa!
El Fri, 27 May 2005 01:34:10 +0200
Ibon <ibon.castilla en terra.es> comentaba:
> > Disk /dev/sda: 131 MB, 131252224 bytes
> > 6 heads, 63 sectors/track, 678 cylinders
> > Units = cylinders of 378 * 512 = 193536 bytes
> tornasolita:~# fdisk -l /dev/hdc
> Note: sector size is 2048 (not 512)
> Disk /dev/hdc: 114 MB, 114767872 bytes
> 255 heads, 63 sectors/track, 3 cylinders
> Units = cylinders of 16065 * 2048 = 32901120 bytes
> También tenemos cabezas, sectores y cilindros...y siguen apareciendo
> las famosas 255 cabezas ¿?.
Mola este thread. Voy a intentar aportar algo más de luz:
Cuando se accede a un disco, en muchos SOs se pide a la BIOS que haga el
trabajo sucio. La BIOS guarda la geometría de un disco en 28 bits (aquí
ya hay una limitación) y le hace peticiones al controlador IDE que
también guarda las geometrías en 28 bits. El problema está en que los
dos sistemas no dotas a cada campo del mismo número de bits, por lo que
la cifra de MB que se pueden direccionar de este modo es inferior a los
28 bits potenciales. Una tablita...
Parameter BIOS Limit IDE Controller Limit Effective Limit
Cylinder 0-1023 0-65,535 0-1023
Head 0-255 0-15 0-15
Sectors/Track 1-63 1-256 1-63
Capacity 7.875 GB 130.56 GB 504 MB
¿Os suena eso de los 504 MB? (Ay! esos mensajillos al arrancar el FDISK
con más miedo que convencimiento... :-D).
Esto en los SOs decentes (GNU/Linux lo es) está resuelto olvidándonos de
la obsoleta BIOS, pero no se pueden salvar dos dificultades:
1) Durante el arranque GNU/Linux se tiene que fiar momentáneamente de la
BIOS, porque está en un estado en el que no sabe nada. Esto quizá os
haya pasado con un disco que de forma externa sí funciona en GNU/Linux,
pero de forma interna, si no lo reconoce la BIOS, estáis jodidos.
2) Al leer la tabla de particiones del disco, ésta tiene que ser
congruente con el sistema de particionamientos PC-BIOS mítico (a no ser
que vuestro kernel soporte otros particionamientos y / o estéis en una
arquitectura extraña).
Bien, entonces estamos con nuestros límites físicos de la BIOS y la
controladora IDE y con discos que superan en casi tres órdenes de
magnitud esos límites. ¿Qué trapi se inventó? LBA o Large.
LBA hace una traducción lineal del acceso a los discos y con una
formulita (c*H*S + h*S + (s-1)) permite acceder a todo lo direccionable
por una controladora IDE que sepa hablar LBA. Entonces volvemos a tener
7.875 GB para direccionar. Si la controladora no habla LBA, podemos
probar con "Large" en la BIOS, que nos hará las traducciones por
nosotros. Supongo que también os sonará el límite de 8 GB.
Como LBA o Large tampoco solucionan el problema actual, lo que hace
GNU/Linux es fiarse de lo que le dice el controlador (driver) que maneja
el dispositivo, que últimamente casi siempre miente, y listo. Éste -el
driver- le presenta al kernel una visión fácil de manejar del
dispositivo, en C,H,S y el kernel se olvida de problemas. Los drivers
tienen cuidado de cumplir el sistema de particionamiento PC-BIOS y que
todas las particiones acaben al final de un cilindro y santas pascuas.
Por lo tanto, *creo* que el problema de tu pendrive o del CD-ROM es el
sistema de particionamiento que usan y su capacidad, que exige una
geometría concreta para que multiplicando C, H y S dé su capacidad real,
o similar.
--
Agur
Pablo Garaizar Sagarminaga
garaizar en eside.deusto.es
Más información sobre la lista de distribución eside-ghost