JDNet | Solutions | Emploi | Votre high-tech
 
Linternaute | Copainsdavant
Séminaires & Evénements | Etudes
   

Rechercher  

 
Sociétés Prestataires Carnet Formations Progiciels Encyclo Fonds Guide d'achat Comparateur Téléchargement Livres
Actualités
   2003
   2002
   2001
   Livres
Rubriques
   Java/J2EE
   PHP
   XML
   Client Web
   Technos .NET
   Flash
   Algo/Méthodes
   Outils

Dossiers
   Tous les dossiers

   PHP, Flash, SVG
   Perl / CGI - SSI
   Langages Web
   Services Web
   Sécurité
Ressources
   Interviews

   Téléchargement
   Composants
   Documentation
Contacts
   Rédaction
   Webmaster
© Benchmark Group


HOWTO - Disques de grande capacité: Démarrage


Page suivante Page précédente Table des matières

5. Démarrage

Quand le système est mis en route, le BIOS lit le secteur 0 (connu sous le nom de MBR : le "Master Boot Record", la donnée principale d'amorçage) du premier disque dur (ou de la disquette, ou du cd-rom), et saute au code trouvé à cet endroit -- en général un chargeur d'amorce. Les petits chargeurs trouvés à cet endroit n'ont, par principe, pas leur propre gestionnaire de disques durs, et utilisent plutôt les services du BIOS. Cela signifie qu'un noyau Linux ne peut être chargé que s'il est entièrement situé dans les 1024 premiers cylindres du disque.

Ce problème est résolu de manière très simple : assurez-vous que le noyau (et peut-être d'autres fichiers utilisés pendant la phase de démarrage, comme les fichiers `map' de LILO) soit situé sur une partition qui est comprise toute entière dans les 1024 premiers cylindres d'un disque dur auquel le BIOS peut accéder -- il est probable qu'il s'agisse du premier ou du second disque.

Ainsi, créez une petite partition, disons d'une taille de 10 Mo, de telle manière qu'il y ait de la place pour une poignée de noyaux, en vous assurant qu'elle soit contenue entièrement dans les 1024 premiers cylindres du premier ou du second disque dur. Montez-le en tant que répertoire /boot ; ainsi, LILO pourra y mettre ses propres fichiers.

5.1 LILO et l'option `linear'

Un autre point est que le programme d'amorçage et le BIOS doivent être d'accord sur la géométrie du disque dur. LILO demande la géométrie au noyau, mais de plus en plus d'auteurs de gestionnaires de disques durs suivent la mauvaise habitude qui consiste à déduire une géométrie à partir de la table de partitions, plutôt que de dire à LILO ce que le BIOS va utiliser. Donc, la géométrie fournie par le noyau est souvent inutile. Dans de tels cas on peut faciliter la tâche à LILO en lui passant l'option linear. Il en résulte que LILO n'a pas besoin d'informations sur la géométrie au moment d'installer le programme d'amorçage (il stocke des adresses linéaires dans des cartes : fichiers `map') mais fait la conversion des adresses linéaires au moment du démarrage. Pourquoi cela n'est-il pas le comportement par défaut ? En fait, il y a un inconvénient : avec l'option `linear', LILO ne connaît plus les numéros de cylindres, et par conséquent ne peut plus vous avertir quand une partie du noyau a été enregistrée au-delà de la limite du cylindre 1024, et vous pouvez vous retrouver avec un système qui ne démarre plus.

5.2 Un bug de LILO

Avec les versions de LILO antérieures à la 2.1 il y a un autre désavantage : la conversion des adresses effectuée au démarrage comporte un bug. Quand c*H est supérieur ou égal à 65536, le calcul provoque un dépassement de capacité. Pour H supérieur à 64 cela donne à c une limite encore plus stricte que le bien connu c < 1024 ; par exemple, avec H=255 et un vieux LILO, on doit avoir c < 258 (c=cylindre où réside l'image du noyau, H=nombre de têtes du disque).

5.3 1024 cylindres ce n'est pas 1024 cylindres

Tim Williams a écrit : "J'avais ma partition Linux en dessous des 1024 premiers cylindres, et ça ne démarrait quand même pas. Au début quand je l'ai déplacée en dessous de 1 Go, les choses fonctionnaient." Comment cela est-il possible ? En fait, c'était un disque dur SCSI avec un contrôleur AHA2940UW qui utilise soit H=64, S=32 (c'est à dire des cylindres de 1 Mio = 1,05 Mo), soit H=255, S=63 (c'est à dire des cylindres de 8,2 Mo), en fonction des options du micro-code du disque dur, et du BIOS. Il ne fait aucun doute que le BIOS se basait sur le premier groupe de valeurs, c'est pourquoi la limite des 1024 cylindres était trouvée à 1 Gio, alors que Linux utilisait la seconde méthode et LILO estimait que la limite était à 8,4 Go.

Page suivante Page précédente Table des matières

[22 février 2002, JDNet]

Société | Contacts | Publicité | Presse | Recrutement | Tous nos sites | Données personelles
Pour tout problème de consultations, écrivez au Webmaster.
© Benchmark Group, 4 rue diderot 92156 Suresnes Cedex