HDs grandes: mini-COMO
 Andries Brouwer, [email protected]
 v1.0, 960626

 Todo lo referente a geometr�as de disco duro, as� como el l�mite de
 las BIOS/SO relacionados con particiones m�s all� de los 1024 cilin�
 dros.
 ______________________________________________________________________

 �ndice General:

 1.      El Problema

 2.      Arrancando

 3.      Geometr�a de los discos y particiones.

 4.      Traslaciones y Managers de disco

 5.      Traslaci�n de disco al n�cleo en discos IDE.

 5.1.    EZD

 5.2.    DM6:DDO

 5.3.    DM6:AUX

 5.4.    DM6:MBR

 5.5.    PTBL

 6.      Consecuencias

 6.1.    Detalles IDE

 6.2.    Detalles SCSI

 7.      Anexo: El INSFLUG
 ______________________________________________________________________

 1.  El Problema

 Suponga que tiene un disco duro con m�s de 1024 cilindros.  Suponga
 que encima emplea un sistema operativo que hace uso de la BIOS.  Si es
 as�, entonces tiene un problema, ya que el habitual interfaz de la
 BIOS a operaciones de E/S con discos, la INT13, usa un campo de 10
 bits para el cilindro en el que se produce una operaci�n de E/S, por
 lo que cilindros m�s all� del 1024 resultar�n inaccesibles.

 Afortunadamente, Linux no hace uso de la BIOS, por lo que no resulta
 un problema.

 Bueno, a excepci�n de dos aspectos:

 1. Cuando arranca el sistema, Linux no est� ejecut�ndose todav�a, y
    por tanto, no puede ahorrarle los problemas relacionados con la
    BIOS.  Esto acarrea ciertas consecuencias para con LILO y gestores
    de arranque similares.

 2. Es necesario, para todos los sistemas operativos que compartan un
    disco el coincidir en d�nde est�n las particiones. En otras
    palabras, si usa Linux, y por ejemplo, Dos en un disco, ambos
    deber�n interpretar la tabla de particiones del mismo modo. Esto
    resulta en determinadas consecuencias con el n�cleo de Linux y
    fdisk.

 Lo que sigue es una descripci�n bastante detallada de todos los
 detalles relevantes. T�ngase en cuenta que emple� el kernel 2.0.8 como
 fuente de referencias; para otras versiones la cosa puede variar
 ligeramente.

 2.  Arrancando

 Cuando el sistema arranca, la BIOS lee el sector 0 (conocido como MBR,
 Master Boot Record, o Registro de Arranque Principal) del primer disco
 (o de un floppy), y salta al c�digo all� residente --alg�n tipo
 cargador bootstrap (-- N del T: El t�rmino bootstrap procede de la
 expresi�n anglosajona ``To pull oneself up by one's bootstraps '', que
 viene a significar ``rehacerse por s� s�lo, por sus propios medios, o
 por m�ritos propios, etc''--) , generalmente--.

 Los peque�os programas de bootstrap que all� se encuentran no poseen
 controladores de disco propios, t�picamente, y emplean servicios de la
 BIOS para ello.  Esto significa que el n�cleo de Linux s�lo puede
 arrancar cuando reside enteramente antes de los primeros 1024
 cilindros.

 Este problema se puede resolver f�cilmente, asegur�ndose de que el
 n�cleo (y quiz�s otros ficheros empleados durante la fase de arranque,
 como los ficheros de mapeo de LILO) residen en una partici�n que se
 encuentra en su totalidad en los primeros 1024 cilindros de un disco
 al que la BIOS puede acceder --esto significa que probablemente sea el
 primer o segundo disco--.

 Otro punto a considerar es que tanto el cargador de arranque y la BIOS
 deben asentir en cuanto a la geometr�a del disco. Podr�a ser �til dar
 a LILO la opci�n `linear'. M�s sobre esto a continuaci�n.

 3.  Geometr�a de los discos y particiones.

 Si tiene varios sistemas operativos en sus discos, cada uno puede
 estar utilizando una o varias particiones. El m�s m�nimo desacuerdo en
 cuanto a d�nde est�n dichas particiones puede acarrear catastr�ficas
 consecuencias.

 El MBR contiene una tabla de particiones describiendo donde est�n las
 particiones (primarias). Hay 4 entradas en dicha tabla, para 4
 particiones primarias (-- N del T: o para 3 primarias y 1 extendida--)
 , y cada una tiene el siguiente aspecto:

      struct partition {
              char active;    /* 0x80: arrancable, 0: no arrancable */
              char begin[3];  /* CHS para el primer sector */
              char type;
              char end[3];    /* CHS para el ultimo sector */
              int start;      /* numero de sector en 32 bit (contado desde 0) */
              int length;     /* numero de sectores 32 en bit */
      };

 (donde CHS se refiere a Cilindros/Cabezas/Sectores).

 Por tanto, la informaci�n es redundante: la localizaci�n de la
 partici�n se da tanto por los campos de 24 bits begin y end, como por
 los campos de 32 bits start y length.

 Linux s�lo usa los campos start y length, y puede por tanto manejar
 particiones no mayores de 2^32 sectores, o lo que es lo mismo,
 particiones de m�s de 2 TeraBytes. Lo cual es doscientas veces el
 tama�o de los discos disponibles actualmente, por lo que ser�
 suficiente para los pr�ximos 10 a�os o as�.

 Desafortunadamente, la llamada a la INT13 de la BIOS emplea los CHS
 codificados en tres bytes, con 10 bits para el n�mero de cilindro, 8
 para el n�mero de cabeza, y 6 para el numero de sector de pista.

 Los n�meros posibles de cilindro son 0-1023, de cabeza 0-255, y de
 sector de pista 1-63 (s�, los sectores de una pista se cuentan desde
 1, no desde 0).  Con esos 24 bits se puede acceder a 8455716864 bytes
 (7.875 GB), doscientas veces m�s de las capacidades de disco
 disponibles en 1983.

 Todav�a m�s desafortunadamente, los interfaces IDE est�ndar permiten
 256 sectores/pista, 65536 cilindros y 16 cabezas. Esto por s� mismo
 permite el acceso a 2^37 = 137438953472 bytes (128 GB), pero combinado
 con la restricci�n de la BIOS a 63 sectores y 1024 cilindros hace que
 s�lo queden 528482304 bytes (504 MB) accesibles.

 Esto no es suficiente para los discos de hoy en d�a, por lo que la
 gente recurre a todo tipo de triqui�uelas, tanto v�a hardware como
 software.

 4.  Traslaciones y Managers de disco

 A nadie le importa cu�l es la geometr�a `real' de un disco.  De hecho,
 incluso el n�mero de sectores por pista es variable --hay m�s sectores
 por pista conforme nos acercamos al borde exterior del disco-- por lo
 que no hay un n�mero de sectores por pista `verdadero'.

 Para el usuario resulta m�s conveniente considerar un disco como una
 simple serie (-- N del T: ``array'' en el original.--)

 lineal de sectores numerados como 0, 1, ..., y dejar a la controladora
 el trabajo de encontrar en qu� lugar del disco reside un sector dado.

 Esta numeraci�n lineal se conoce como LBA. Las direcciones lineales
 correspondientes a (c,h,s) (-- N del T: c=cilindros h=cabezas
 s=sectores; par�metros l�gicos.--) para un disco con geometr�a (C,H,S)
 (-- N del T: par�metros f�sicos--) corresponden a c*H*S + h*S + (s-1).
 Todas las controladoras SCSI ``hablan'' LBA, junto con algunas IDE.

 Si la BIOS convierte los (c,h,s) de 24 bits a LBA y le pasa eso a una
 controladora que ``entienda'' LBA, entonces vuelven a ser accesibles
 7.875 GB.  No es suficiente para todos los discos, pero no deja de ser
 constituir una mejora.

 T�ngase en cuenta que que aqu� CHS, tal y como los usa la BIOS, no
 tiene nada que ver con la `realidad'.

 Algo similar funciona cuando la controladora no ``habla'' LBA, pero la
 BIOS s� sabe hacer la traslaci�n. (En el setup esto se suele indicar
 como ``large''.) La BIOS presentar� una geometr�a (C',H',S') al
 sistema operativo, usando (C,H,S) para hablar con la controladora del
 disco. Normalmente S = S', C' = C/N y H' = H*N, donde N es la menor
 potencia de dos que asegura que C' <= 1024 (a fin de que se malgaste
 la menor capacidad posible al redondear en C' = C/N).  Nuevamente,
 esto nos proporciona acceso a 7.875 GB.

 Si la BIOS no sabe nada acerca de `LBA' o `Large', podemos recurrir a
 ciertas soluciones software. Los Disk Managers o Gestores de Disco
 como OnTrack o EZ-Drive reemplazan las rutinas de gesti�n de disco por
 otras suyas.  Esto se lleva a cabo normalmente haciendo residir el
 c�digo del gestor de disco en el MBR y sectores subsecuentes (OnTrack
 llama a este c�digo DDO: Dynamic Drive Overlay (-- N del T: algo as�
 como Superposici�n Din�mica de Disco.--) , de modo que sea arrancado
 antes que cualquier otro sistema operativo. Esa es la raz�n por la que
 se pueden tener problemas arrancando desde disquete cuando se ha
 instalado un Gestor de Disco. (-- N. del T. Esto no significa que no
 pueda hacerse de modo seguro; los gestores suelen proveer utilidades
 para hacer disquetes especiales de arranque--)

 El efecto es m�s o menos el mismo que cuando se hacen traslaciones v�a
 BIOS, pero --especialmente cuando haya distintos sistemas operativos
 en el mismo disco-- con la salvedad de que pueden causar bastantes
 problemas.

 Linux soporta OnTrack Disk Manager desde la versi�n de n�cleo 1.3.14,
 y EZ-Drive desde la versi�n 1.3.29. M�s detalles a continuaci�n.

 5.  Traslaci�n de disco al n�cleo en discos IDE.

 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 (-- N del T: Paso de par�metros a
 LILO o loadlin al arrancar Linux--) , por lo que una opci�n como
 `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.

 5.1.  EZD

 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.

 5.2.  DM6:DDO

 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--.

 5.3.  DM6:AUX

 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.

 5.4.  DM6:MBR

 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.

 5.5.  PTBL

 Para finalizar, hay un test que intenta deducir si existe traslaci�n a
 partir de los valores start y end (-- N del T: comienzo y final
 respectivamente--) de las particiones primarias:  Si alguna partici�n
 posee un cilindro de comienzo y fin menor de 256, sectores de comienzo
 y fin 1 y 63 respectivamente, y como cabezas finales 31, 63 o 127,
 entonces dado que acabar las particiones en el l�mite de un cilindro
 es algo ``no estandarizado'' y dado que adem�s los interfaces IDE usan
 como mucho 16 cabezas, se deduce que est� activa alguna traslaci�n de
 BIOS, y la geometr�a se remapea para usar 32, 64 o 128 cabezas
 respectivamente.  (Puede que haya una inconsistencia aqu�, y genhd.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).

 6.  Consecuencias

 �Qu� significa todo esto? Para los usuarios de Linux tan s�lo una
 cosa: deben de asegurarse de que LILO y fdisk usan la geometr�a
 correcta, donde `correcta' se define para fdisk como la misma
 geometr�a usada por los otros sistemas operativos presentes en el
 mismo disco, y para LILO como la geometr�a que har� posible una
 interacci�n exitosa con la BIOS en el momento del arranque.
 (Normalmente ambos coinciden).

 �C�mo averigua fdisk la geometr�a?  Pregunta al n�cleo, empleando la
 llamada ioctl HDIO_GETGEO.  No obstante, el usuario puede interponerse
 a dicha geometr�a, interactivamente o en la l�nea de comandos.

 �C�mo averigua LILO la geometr�a?  Pregunta al n�cleo, usando la
 llamada ioctl HDIO_GETGEO.  No obstante, el usuario puede descartar
 dicha geometr�a empleando la opci�n `disk='.  Se puede pasar tambi�n
 la opci�n linear a LILO, que almacenar� en tal caso direcciones LBA en
 lugar de CHS en su fichero de mapeo, averiguando la geometr�a a usar
 al arrancar (mediante el empleo de de la INT13, funci�n 8 para
 preguntar la geometr�a del disco).

 C�mo sabe el n�cleo qu� responder?  Veamos, para comenzar, el usuario
 puede haber especificado una geometr�a expl�citamente con la opci�n,
 en la l�nea de comandos (-- N del T: Al prompt de LILO, el ``LILO
 boot:'' que aparece al encender el ordenador si LILO est�
 instalado.--) `hd=cyls,heads,secs'.  En cualquier caso distinto, el
 n�cleo preguntar� al hardware.

 6.1.  Detalles IDE

 Perm�tame elaborar.  El controlador (-- N del T: ``driver'' en el
 original, software--) IDE tiene cuatro fuentes de informaci�n acerca
 de la geometr�a.  La primera, (G_user) es la especificada por el
 usuario en la l�nea de comandos.  La segunda (G_bios) es la Tabla de
 Par�metros de Disco Duro de la BIOS.  (para el primer y segundo disco
 solamente). Esto se lee al arrancar el sistema, antes de cambiar a
 modo 32 bits.  La tercera (G_phys) y cuarta (G_log) son proporcionadas
 por la controladora IDE como respuesta al comando IDENTIFY --son las
 geometr�as ``f�sicas'' y ``l�gicas actuales''--.

 Por otra parte, el controlador (driver, software;)  precisa dos
 valores para la geometr�a: por una parte G_fdisk, devuelto por la
 llamada ioctl HDIO_GETGEO, y por otra, G_used que es empleada
 actualmente para las operaciones de E/S.  Tanto G_fdisk como G_used
 son inicializadas a G_used si se especifica �ste, a G_bios cuando
 dicha informaci�n est� presente de acuerdo a la CMOS, y a G_phys en
 los dem�s casos. Si G_log parece razonable, entonces G_used se
 inicializa como �l. En cualquier otro caso, si G_used no parece
 razonable y s� lo parece G_phys, entonces G_used se inicializa a
 G_phys. `Razonable' aqu� significa que el n�mero de cabezas est� en el
 rango 1-16.

 Dicho con otras palabras: la l�nea de comandos descarta la BIOS, y
 determinar� lo que fdisk va a ver, pero si especifica una geometr�a
 que ya ha sufrido traslaci�n, (m�s de 16 cabezas), para operaciones de
 E/S a nivel n�cleo ser� sustituida por lo retornado por el comando
 IDENTIFY.

 6.2.  Detalles SCSI

 La situaci�n para los discos SCSI es ligeramente diferente, ya que los
 comandos SCSI usan ya n�meros de bloque l�gicos, por lo que la
 `geometr�a' es completamente irrelevante para las operaciones de E/S.

 No obstante, el formato de la tabla particiones contin�a siendo el
 mismo, por lo que fdisk tendr� que inventarse alguna geometr�a, y
 tambi�n usar� HDIO_GETGEO aqu� --de hecho, fdisk no distingue entre
 discos IDE o SCSI--.  Como uno puede ver a ra�z de la descripci�n
 detallada anterior, los distintos drivers inventan cada uno, una
 geometr�a diferente de alg�n modo. Un gran foll�n, de hecho.
 Si no usa DOS o similar, evite todas las configuraciones con
 traslaci�n extendida, empleando simplemente 64 cabezas, y 32 sectores
 por pista (para un bonito y pr�ctico 1 MB por cilindro), si es
 posible, de modo que no aparezcan problemas cuando cambie el disco de
 una controladora a otra.

 Algunos controladores de discos SCSI (aha152x, pas16, ppa, qlogicfas,
 qlogicisp)  son tan paranoicos con la compatibilidad con DOS que no
 permitir�n a un sistema s�lo-Linux emplear m�s de 8Gb. Esto es un
 fallo.

 �Qu� es ``geometr�a real''?  La respuesta m�s sencilla es que no
 existe tal cosa.  Y si la hubiese, no deber�a querer saberla, y desde
 luego NUNCA, JAM�S dec�rsela a LILO o fdisk.

 Esto es un asunto a tratar exclusivamente entre la controladora SCSI y
 el disco.  Perm�tame repet�rselo: s�lo los tontos le dicen a
 fdisk/LILO/kernel la verdadera geometr�a de un disco SCSI.

 Si a�n as� es usted curioso e insiste, deber�a preguntarle al propio
 disco.  Existe el importante comando READ CAPACITY que proporcionar�
 el tama�o total del disco, as� como existe el comando MODE SENSE, que
 proporciona el n�mero de cilindros y cabezas (informaci�n que no puede
 ser cambiada) de la P�gina de Geometr�as de Disco Duro (p�gina 04), y
 que extrae de la P�gina de Formateo (p�gina 03) el n�mero de de bytes
 por sector, as� como de sectores por pista. Este �ltimo n�mero es
 t�picamente dependiente de las marcas (-- N del T: No marca comercial,
 marca f�sica.--) , variando el n�mero de sectores por pista --las
 pistas externas tienen m�s sectores que las internas.

 El programa Linux scsiinfo proporcionar� esta informaci�n.  Existen
 m�s detalles y complicaciones, pero est� claro que nadie
 (probablemente ni siquiera el sistema operativo) quiere usar esta
 informaci�n.

 M�s a�n, en lo que a nosotros concierne respecto a fdisk y LILO,
 obtendremos respuestas t�picamente como C/H/S=4476/27/171 --valores
 que no pueden ser empleados por fdisk porque la tabla de particiones
 reserva s�lo 10/8/6 bits para C/H/S.

 �Entonces de d�nde averigua la llamada al kernel HDIO_GETGEO su
 informaci�n?  O bien de la controladora SCSI, o bien mediante cultas
 averiguaciones.  Algunos controladores parecen pensar que queremos
 saber la `realidad', pero por supuesto lo �nico que queremos saber es
 qu� utilizar�n los FDISK de DOS u OS/2 (o el AFDISK de Adaptec, etc).

 N�tese que el fdisk de Linux necesita los n�meros H y S de las cabezas
 y sectores por pista para convertir de n�meros de sectores LBA a
 localizaciones c/h/s, pero el n�mero C de cilindros no tienen nada que
 ver en esta conversi�n.  Algunos controladores usan (C,H,S) =
 (1023,255,63) para indicar que la capacidad del disco es al menos
 1023*255*63 sectores.  Esto no resulta muy afortunado, ya que no
 revela la capacidad actual, y limitar� a los usuarios de la mayor�a de
 las versiones de fdisk a alrededor de 8 Gb m�ximo en sus discos --una
 verdadera limitaci�n hoy en d�a--.

 En la descripci�n que sigue, M denota la capacidad total del disco, y
 C, H, S el n�mero de cilindros, cabezas y sectores por pista.  Basta
 con proporcionar H, S si tenemos en cuenta a C como definido por M /
 (H*S).

 Por defecto, H=64, S=32.

    aha1740, dtc, g_NCR5380, t128, wd7000:
       H=64, S=32.
    aha152x, pas16, ppa, qlogicfas, qlogicisp:
       H=64, S=32 a menos que C > 1024, en cuyo caso H=255, S=63, C =
       min(1023, M/(H*S)).  (C por tanto es truncado, y H*S*C no es una
       aproximaci�n a la capacidad del disco M. Esto causar� confusi�n
       en la mayor�a de las versiones de fdisk.)  El c�digo ppa.c
       emplea M+1 en lugar de M y dice que ello se debe a un error en
       sd.c, en el que a M le falta 1.

    advansys:
       H=64, S=32 a menos que C > 1024 y m�s a�n si la opci�n `> 1 GB'
       est� activado en la BIOS, en cuyo caso H=255, S=63.

    aha1542:
       Pregunte a la controladora cu�l de los dos esquemas de
       traslaci�n posibles est� en uso, y emplee tanto H=255, S=63 como
       H=64, S=32. En el �ltimo caso habr� un mensaje al arrancar:
       "aha1542.c: Using extended bios translation".

    aic7xxx:
       H=64, S=32 a menos que C > 1024, y adem�s o bien el par�metro de
       arranque "extended" haya sido especificado en el arranque, o si
       el bit "extended" ha sido especificado en la SEEPROM o BIOS, en
       cuyo caso H=255, S=63.

    buslogic:
       H=64, S=32 a menos que C >= 1024, y que adem�s se haya
       configurado la controladora para hacer traslaciones extendidas,
       en cuyo caso si M < 2^22 entonces H=128, S=32; de otro modo,
       H=255, S=63.  No obstante, tras hacer esta elecci�n para
       (C,H,S), se lee la tabla de particiones, y si para alguna de las
       tres posibilidades (H,S) = (64,32), (128,32), (255,63) el valor
       endH=H-1 aparece por alguna parte, entonces es usado dicho par
       (H,S), y un mensaje ser� mostrado al arranque: "Adopting
       Geometry from Partition Table".

    fdomain:
       Averig�e la informaci�n acerca de la geometr�a de la Tabla de
       Par�metros de Disco de la BIOS, o lea la tabla de particiones y
       use H=endH+1, S=endS para la primera partici�n, teniendo en
       cuenta que no est� vac�a, o use H=64, S=32 para M < 2^21 (1 GB),
       H=128, S=63 para M < 63*2^17 (3.9 GB) y S=63 en otro caso.

    in2000:
       Emplee los primeros (H,S) = (64,32), (64,63), (128,63), (255,63)
       que hagan que C <= 1024. En el �ltimo caso, trunque C a 1023.
       Use los primeros de (H,S) = (64,32), (64,63), (128,63), (255,63)

    seagate:
       Lea C,H,S del disco. (�Horror!) Si C o S es demasiado grande,
       ponga S=17, H=2 y vaya doblando H hasta que C <= 1024. Esto
       significa que H ser� establecida a 0 si M > 128*1024*17 (1.1
       GB). Esto es un error de programaci�n (bug).

    ultrastor y u14_34f:
       Uno de los tres mapeos ((H,S) = (16,63), (64,32), (64,63))  es
       empleado dependiendo del modo de mapeo de la controladora.

 Si el driver no especifica la geometr�a, volveremos a realizar una
 averiguaci�n inteligente usando la tabla de particiones, o usando la
 capacidad total del disco.

 Mire la tabla de particiones. Dado que por convenci�n las particiones
 terminan en el l�mite de un cilindro, podemos, dado un end =
 (endC,endH,endS) de una partici�n, poner simplemente H = endH+1 y S =
 endS. (Recuerde que los sectores son numerados a partir de 1).  De un
 modo m�s preciso, se hace lo siguiente:  Si hay alguna partici�n que
 no est� vac�a, escoja la partici�n con el beginC mayor.  Para dicha
 partici�n, mire a end+1, calculados ambos a�adiendo start y length y
 asumiendo que estas particiones terminan en los l�mites de un
 cilindro. Si ambos valores concuerdan, o si endC = 1023 y start+length
 es m�ltiplo integral de (endH+1)*endS, asuma entonces que dicha
 partici�n est� realmente alineada con el l�mite de un cilindro, y
 ponga H = endH+1 y S = endS.

 Si esto falla, bien debido a que no hay particiones, o porque poseen
 tama�os extra�os, tenga en cuenta entonces �nicamente la capacidad del
 disco M.  Algoritmo: ponga H = M/(62*1024) (redondeando hacia arriba),
 S = M/(1024*H) (redondeando hacia arriba), C = M/(H*S) (redondeando
 hacia abajo).

 Esto tiene el efecto de producir un (C,H,S) con C siendo como mucho
 1024 y S como mucho 62.

 7.  Anexo: El INSFLUG

 El INSFLUG forma parte del grupo internacional Linux Documentation
 Project, encarg�ndose de las traducciones al castellano de los Howtos
 (Comos), as� como la producci�n de documentos originales en aquellos
 casos en los que no existe an�logo en ingl�s.

 En el INSFLUG se orienta preferentemente a la traducci�n de documentos
 breves, como los COMOs y PUFs (Preguntas de Uso Frecuente, las FAQs.
 :) ), etc.

 Dir�jase a la sede del INSFLUG para m�s informaci�n al respecto.

 En la sede del INSFLUG encontrar� siempre las �ltimas versiones de las
 traducciones:  www.insflug.org. Aseg�rese de comprobar cu�l es la
 �ltima versi�n disponible en el Insflug antes de bajar un documento de
 un servidor r�plica.

 Se proporciona tambi�n una lista de los servidores r�plica (mirror)
 del Insflug m�s cercanos a Vd., e informaci�n relativa a otros
 recursos en castellano.

 Francisco Jos� Montilla, [email protected].