[Info] Le mythe du 1024éme cylindre!

asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   -  
johndoe Messages postés 2645 Date d'inscription   Statut Contributeur Dernière intervention   -
Salut à tous, et tout particulierement à John!

Ben dis moi, ça a l'air de vraiment te trotter dans le crâne cette
limite de 1024 (1023!) cylindres :D

Alors c'est pas bien compliqué, mais c'est pas simple non plus! :p

Donc au départ, c'est sur, on ne pouvait pas booter au-delà du 1024éme cylindre...

C'était même pire que ça!
En fait, toute partition se terminant au-delà de ce 1024éme cylindre ne pouvait être vue. Ce qui inclue un lecteur logique se terminant au 100éme cylindre placé sur une partition étendue se terminant au 1025éme cylindre :D

Pour en revenir à nos moutons...
Il existe trois types d'adressage 'logiciel' possibles. En réalité il y en a 4 mais le 4éme, 'large-mode', est assez rare, pas de limitation du bios (enfin si, mais pas 1024), mais pas de support LBA, une obligation pour certains UNIX.

1- Cylinders/Head/Sector ou CHS ou encore geometric.
2- Linéaire, des adresses de secteur codées sur 24 bits traduites en adresses CHS lors du passage au BIOS.
3- LBA32, des adresses de block codées sur 32 bits, traduites en CHS si le bios ne supporte pas ces adresse, ou si l'on communique avec une disquette.

Au niveau materiel (ou plutot du BIOS), il en existe 3 types.
-CHS (1024 cylindres)
-Large (c'est pour le 4 d'au dessus) (nombre de cylindres/2)
-LBA (?)

L'adressage Géometrique et donc Linéaire (au niveau du bios ce sera pareil: CHS) limite les disques (vu par le bios) à 1024 cylindres.
L'adressage LBA32 quand à lui (dans le cas ou le BIOS supporte LBA) ne connait pas de limite particulière.

La limite de ce 1024éme cylindre, ce traduit par la possibilitée ou non d'acceder au map-file

Depuis 1994 pour les premiers, et 1998 pour les derniers c'est l'Enchanced Dirsk Drive (EED) bios extension qui supporte l'adressage LBA.

Le mode LBA32 est disponible depuis la version 21 (.6?) de LILO, et est l'adressage par défaut depuis la version 22.

Donc, pour booter au delà du 1024éme cylindre, il faut:
-Un disque de plus de 1024 cylindres, mais ça tu l'auras compris ;)
-Le Support EDD dans le BIOS.
-Un lilo de version 21 au minimum.

Je termine par une note présente dans la doc debian (CVS, 03-03-2003)
3.1.5 Le Mythe Lilo

Lilo est limité à 1024 cylindres. --FAUX!

Les version récentes de lilo utilisées depuis Debian Potato supportent lba32. Si
le BIOS de la carte mère est assez récent pour supporter lba32, lilo devrait être 
capable de charger au-delà de la vieille limite de 1024 cylindres.

Assurez-vous simplement d'ajouter la ligne "lba32" vers le début de votre fichier 
lilo.conf si vous avez gardé un vieux lilo.conf.

Sources:
lilo (8)
lilo.conf (5)
Guide de référence pour Debian CVS 2003-03-03-07:43:12 ( http://gref.sf.net/ )
+Divers doc retrouvé sur mon disque datant de 2000-2003, trouvées via Google à
l'époque ;)

PS: C'est comme ça que j'ai crompris le truc, maintenant, ce n'est peut-être pas exact a 100%, mais une chose est sure, l'arrivée de l'EDD en 1994 à repoussé les limites imposées par le BIOS jusque là!

@++
"Si c'est stupide et que ça marche,
        alors ce n'est pas stupide"
A voir également:

7 réponses

Fredish Messages postés 373 Date d'inscription   Statut Membre Dernière intervention   19
 
Jolie explication asevere :)

Néanmoins, ca doit être assez théorique. Enfin, moi j'ai toujours des problèmes avec mes disques...

Mais bon, n'abordons pas de problèmes ici. Bonne journée asevere :)
0
johndoe Messages postés 2645 Date d'inscription   Statut Contributeur Dernière intervention   386
 
salut Adrien,
l'arrivée de l'EDD en 1994 à repoussé les limites imposées par le BIOS ben, là je dois dire que je reste sceptique. C'est bien lilo ou grub qui peuvent, mais le bios... hummmmmmmmm, cela me semble étonnant, pour le moins.... Je vais aussi me renseigner de nouveau...Lle bios lance le bootloader qui n'est pas bien loin, puisque dans le mbr...
MErci. En fait j'avais déjà fait cette précision pour grub il n'y a pas longtemps, et je vulais etre sûr de n'avoir pas à revoir ma copie suite à une prouesse de la modernité.... Je vais donc re vériifer
@+

_
No money, no honey, One Boss !
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Pourtant, c'est bien réel :)
http://thomas.linard.free.fr/articles/adressage.html

"Si c'est stupide et que ça marche,
        alors ce n'est pas stupide"
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Et puis lilo, (grub aussi) n'est pas forceent installé sur le MBR! :)

"Si c'est stupide et que ça marche,
        alors ce n'est pas stupide"
0
johndoe Messages postés 2645 Date d'inscription   Statut Contributeur Dernière intervention   386 > asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention  
 
Ok pour mettre le bootloader hors du secteur zero, mais, l'as tu déjà installé au delà du cylindre 1024 ?
Il me semblait qu'il fallait necessairement mettre grub dans le mbr si la partoche à activer etait au dela du cylindre 1024.

Si cela m'interesse, c'est pour éviter de raconter des betises, ou de faire prendre des précautions inuitles....
Je vais voir l'article que tu as indiqué.
Merci :-)

_
No money, no honey, One Boss !
0
johndoe Messages postés 2645 Date d'inscription   Statut Contributeur Dernière intervention   386 > asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention  
 
pÔ de bol ! Free n'est pas accessible en ce moment :-(((((((
J'essaierai plus tard.

_
No money, no honey, One Boss !
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426 > johndoe Messages postés 2645 Date d'inscription   Statut Contributeur Dernière intervention  
 
Ha ?

bon moi ça passenickel, c'est même étonnament rapde je trouve :)

"Si c'est stupide et que ça marche,
        alors ce n'est pas stupide"
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut les bretons du sud et du centre du monde ;-))

Ben moi je pencherai plutôt du côté de la théorie de ...... johndoe (désolé Adrien).
J'ai (a peu prés) compris ça :
avant (le LBA) les systèmes ne pouvaient pas booter au-delà du 1024 ème cylindre. Depuis ils le peuvent mais pas tout seul, z'ont besoin d'un "bootloader" du style "Lilo" ou "Grub".
Et maintenant nouveau Bios ou pas, si y'a pas un truc pour dire où aller booter, ben ça fait toujours "chou blanc".
Donc je pense pas le Bios capable de booter au-delà du 1024 tout seul...

Mais peut être ai-je mal "comprationné" ou je" m'exprimè-je" mal ;o))

Z'@+...che.
JP : Cap de burro Catalan ! 
        Mais Content ;-)
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Ben en fait, c'est dans l'autre sens,
Lilo,Grub, et bien d'autres n'ont pas leurs propres pilotes de disque.

Ils doivent donc passer par le BIOS pour acceder au disque.
Le Bios lit le MBR, il detecte la prtition active, lance le programme d'ammorcage, qui lui même repasse par le BIOS pour lire les données a l'adresse voulue. :)

Dans tout les cas, pour booter au delà du 1024éme cylindre, il faut à la fois un bios qui gere le LBA, et un Bootloader qui gere aussi le LBA.

"Si c'est stupide et que ça marche,
        alors ce n'est pas stupide"
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896 > asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention  
 
Merchi ;-))

Je résume :
Le Bios tout seul il va pas bien loin ;-))
Lilo et Grub sans le Bios, il vont pas bien loin aussi ;-))

Moralité, "Bios + Lilo" ou "Bios + Grub" = ;o))

Z'@+...che.
JP : Cap de burro Catalan ! 
        Mais Content ;-)
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Bon, pour éliminer totalement certains doutes :)
J'ai fait un test, aprés tout, rien de plus simple pour démontrer qu'un BIOS
peu demarrer au-delà de la limite imposée il y a de ça quelques années!

[root@XP1800+ root]# fdisk -l /dev/hda

Disque /dev/hda: 120.0 Go, 120034123776 octets
255 têtes, 63 secteurs/piste, 14593 cylindres
Unités = cylindres de 16065 * 512 = 8225280 octets

Périphérique Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1         261     2096451    7  HPFS/NTFS
/dev/hda2             262        2219    15727635    b  W95 FAT32
/dev/hda3            2220        3235     8161020    5  Extended
/dev/hda5            2220        2282      506016   83  Linux
/dev/hda6            2283        2345      506016   82  Linux swap
/dev/hda7            2346        2854     4088511   83  Linux
/dev/hda8            2855        2981     1020096   83  Linux
/dev/hda9            2982        3235     2040223+  83  Linux

[root@XP1800+ root]# cat /etc/lilo.conf
boot=/dev/hda
map=/boot/map
install=menu
default="linux"
keytable=/boot/fr-latin1.klt
prompt
nowarn
timeout=100
message=/boot/message
menu-scheme=wb:bw:wb:bw
image=/boot/vmlinuz
        label="linux"
        root=/dev/hda5
        initrd=/boot/initrd.img
        append="devfs=mount acpi=ht resume=/dev/hda6 splash=silent"
        vga=788
        read-only
image=/boot/vmlinuz
        label="linux-nonfb"
        root=/dev/hda5
        initrd=/boot/initrd.img
        append="devfs=mount acpi=ht resume=/dev/hda6"
        read-only

Bon voilà l'état de mon systéme ce matin à mon réveil :)
étant donné que mes partoches située au-delà du cylindre 1024 sont dans une
partition étendue (non activable) je ne peut pas faire grand chose.
Lilo est installé sur le MBR (boot=/dev/hda).

Donc, étape par étape:
- Je cré une partition de 6Go à la suite des partoches existantes en spécifiant
bien que je souhaite avoir une partition primaire, pour pouvoir l'activer, ce
que je fais aussi tôt en prenant bien soin de désactivé la premiere sinon ça
marche pas!
[root@XP1800+ root]# fdisk -l /dev/hda

Disque /dev/hda: 120.0 Go, 120034123776 octets
255 têtes, 63 secteurs/piste, 14593 cylindres
Unités = cylindres de 16065 * 512 = 8225280 octets

Périphérique Boot      Start         End      Blocks   Id  System
/dev/hda1               1         261     2096451    7  HPFS/NTFS
/dev/hda2             262        2219    15727635    b  W95 FAT32
/dev/hda3            2220        3235     8161020    5  Extended
/dev/hda4   *        3236        3999     6136830   83  Linux
/dev/hda5            2220        2282      506016   83  Linux
/dev/hda6            2283        2345      506016   82  Linux swap
/dev/hda7            2346        2854     4088511   83  Linux
/dev/hda8            2855        2981     1020096   83  Linux
/dev/hda9            2982        3235     2040223+  83  Linux


Cette partition demarre au cylindre 3236.

- Je désinstalle lilo
[root@XP1800+ root]# lilo -U


- Je reboot.
[root@XP1800+ root]# init 6

A ce niveau là, bien evidement rien ne demarre (PRESS ANY KEY TO REBOOT)

J'insere le cd 1 de Mandrake 10 community, et j'appuis sur une touche comme le
BIOS me l'a gentiment demandé :)

- Installation standard au possible, avec 3 fois rien (3 minutes), sur la seule
partition hda4

- A la configuration de lilo, je précise que je veux l'installer sur la
partoche racine, pas sur le MBR.

- Je redemarres sur le systeme fraichement installé et je fais juste une
verification de base.

[root@XP1800+ root]# cat /etc/lilo.conf
boot=/dev/hda4
map=/boot/map
install=menu
default="linux"
keytable=/boot/fr-latin1.klt
prompt
nowarn
timeout=100
message=/boot/message
menu-scheme=wb:bw:wb:bw
image=/boot/vmlinuz
        label="linux"
        root=/dev/hda4
        initrd=/boot/initrd.img
        append="devfs=mount acpi=ht resume=/dev/hda6 splash=silent"
        vga=788
        read-only
image=/boot/vmlinuz
        label="linux-nonfb"
        root=/dev/hda4
        initrd=/boot/initrd.img
        append="devfs=mount acpi=ht resume=/dev/hda6"
        read-only

C'est bon, lilo est bien installé sur la partition racine (boot=/dev/hda4) qui
débute bien au-delà du cylindre 1024. Le systeme a correctement démarré.

Ceci prouve bien que le BIOS est capable d'aller lire ce qui se trouve au dela
du 1024éme cylindre avant même de charger le bootloader! :o)

@++, J'espert que les doutes sont effacés! :o)
"Si c'est stupide et que ça marche,
        alors ce n'est pas stupide"
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Pas de doute, t'es le meilleur ;-))

Chapeau bas, clap clap clap.

Non, sans dec, là je suis scié ! Comme preuve on fait pas mieux.
Je bookmarke le topic, et à l'occase, fait nous un ch'tit truc pour la base de connaissances ;-))

Allez, j'en remet une couche, chapeau Monsieur Adrien et merci ;o)

PS. J'ai z'oublié, c'est quoi la tâche sur hda1 ??? ;-DDDDDD

Z'@+...che.
JP : Cap de burro Catalan ! 
        Mais Content ;-)
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
 
Ben heu... merci, mais j'ai juste fais une install hein! rien de plus ;o)

"Si c'est stupide et que ça marche,
        alors ce n'est pas stupide"
0
johndoe Messages postés 2645 Date d'inscription   Statut Contributeur Dernière intervention   386
 
Merci Adrien,
Je n'avais pas le moyen de faire une install, mon pc de test étant occupé.
Seules les expériences permettent d'avancer, et même les infos soit disant fiables doivent toujours être confrontées à la théorie.
Si lilo est installé sur /root, et que /root est placé au delà du cylindre 1024 (comme dans ton test) cela semble évidemment probant.
Je me demande si ça le fait aussi avec windaube.... Juste pour être bien sûr, que le pingouin-génial n'a pas une astuce pour faire démarrer /root si loin.
Pour partager les expérience, je veux bien faire celle-ci, si tu veux. : j'ai un disque neuf derrière moi, et il faudra juste que j'arrete ma machine, mais ce n'est pas trop genant.
Ton avis ?

_
No money, no honey, One Boss !
0
johndoe Messages postés 2645 Date d'inscription   Statut Contributeur Dernière intervention   386 > johndoe Messages postés 2645 Date d'inscription   Statut Contributeur Dernière intervention  
 
n'importe quoi ! windaube met son lanceur dans le mbr, donc ça ne montrerait rien ! :-)
donc je pense que le compte est bon.
Merci.

_
No money, no honey, One Boss !
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426 > johndoe Messages postés 2645 Date d'inscription   Statut Contributeur Dernière intervention  
 
:D

C'est vrai qu'il ne demande pas ou il doit mettre le lanceur, mais il y a peut-etre une option qui permetrai de le faire, ou une astuce qui consiterait à le dérouter...
Par exemple en créant tes partition avec linux avant, puis en activant la partition de windows, à tester, mais comme le MBR contient entre aure l'adresse de la partition active, ça peut fonctionner :)
Mais la, c'est prendre trop de risque! je te laisse tester ;)

"Si c'est stupide et que ça marche,
        alors ce n'est pas stupide"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tafiscobar Messages postés 1277 Date d'inscription   Statut Contributeur Dernière intervention   177
 
c'est du brut ça, eh ben bravo.

tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
0
bigouden
 
Salut!
J'ai lu les infos sur les 1024 cylindres mais j'ai un peu de mal à comprendre les explications tou de même!!
Se que j'ai compris:
Au demarrage le bios fait ses tests matériel, passe la main au lecteur bootable, il li le MBR qui lance le Boot loader et puis le noyau s'execute.
Du coup j'ai lu le Howto sur lilo pour voir qu'esce qui se passe après, mais quand il dise que le noyau doit résider à un endroit accessible par le bios, c'est la que je comprend moins!!
C'sst pas le bios qui demarre le noyau mais lilo!
??
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
En fait, j'ai expliqué ça un peut plus haut :)

Lilo ne dispose pas de ses propres drivers pour l'accés aux disques, () fait, trés peu de boot Loader les ont) Lilo passe donc par le Bios pour lire les données, c'est pour cela que tout les fichiers nécéssaire à l'amorcage du systeme doivent être accessibles du BIOS.

"Si c'est stupide et que ça marche,
        alors ce n'est pas stupide"
0
bigouden
 
Ok,
si j'ai compris, lilo passe par le bios pour lire les infos disques et être au courant de se qui existe ou pas et ensuite fait demarrer le système voulu si il le trouve!
Je pense comprendre un peu mieux, merçi asevere
je reste quand même dans le flou quand on parle d'adressages logiciel!
Mais je vais chercher ça dans mes docs!
@+
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Bah!
ne te prend pas trop la tête avec le terme 'logiciel', je ne l'ai employé que pour bien separer la façon dont un bootloader adresse un secteur, et la façons dont le BIOS traduit ou non ces adresses pour la compatibilitée :o)

"Si c'est stupide et que ça marche,
        alors ce n'est pas stupide"
0