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