7. Détails Techniques

(Contribution de Randall Hopper )

Cette section tente de vous donner assez d'informations de base sur vos disques durs et sur le processus de démarrage à partir d'un disque pour vous permettre de régler la plupart des problèmes que vous pourriez rencontrer lorsque vous configurerez le démarrage de plusieurs systèmes d'exploitation. Elle commence par des choses relativement élémentaires, vous préférerez donc peut-être la parcourir en diagonale jusqu'à ce que les points abordés vous paraissent moins familiers et commencer alors à la lire en détail.

7.1. Introduction aux disques

Trois termes fondamentaux décrivent la localisation des données sur vos disques durs: Cylindres, Têtes et Secteurs. Il n'est pas très important de savoir à quoi ils se rapportent sinon qu'ensemble, ils définissent où sont physiquement les données sur le disque.

Votre disque a un nombre donné de cylindres, de têtes, et de secteurs par tête-cylindre (un doublet tête-cylindre est aussi appelé une piste). Ensemble, ces informations définissent la “géométrie physique” de votre disque. Il y a typiquement 512 octets par secteur et 63 secteurs par pistes, le nombre de cylindres et de têtes variant très largement d'un disque à l'autre. Vous pouvez alors calculer la quantité d'informations que peut enregistrer votre disque par la formule:


nombre de cylindres X nombre de têtes X 63 secteurs/piste X 512 octets/secteur
     

Par exemple, pour mon disque Western Digital AC31600 EIDE de 1,6 Go, cela donne:


3148 cylindres X 16 têtes X 63 secteurs/piste X 512 octets/secteur
     

c'est-à-dire 1.624.670.208 octets, ou environ 1,6 Go.

Vous pouvez connaître la géométrie physique de votre disque dur (nombre de cylindres, de têtes et de secteurs par piste) avec ATAID ou d'autres programmes que vous trouverez sur l'Internet. Ces informations sont peut-être aussi fournies avec votre disque. Faites cependant attention: si vous utilisez le LBA du BIOS (voyez la section Restrictions pour le démarrage et avertissements), vous ne pouvez pas vous servir de n'importe quel programme pour connaître la géométrie physique. Cela parce que de nombreux programmes (e.g., MSD.EXE ou le fdisk de FreeBSD) ne reconnaissent pas la géométrie physique, ils listent à la place la géométrie redéfinie (des valeurs virtuelles dues à l'utilisation du LBA). Continuez à lire pour savoir ce que cela veut dire.

Une autre chose à savoir à propos de ces termes. 3 valeurs - un numéro de cylindre, un numéro de tête, et un numéro du secteur sur la piste - identifient l'adresse absolue d'un secteur sur votre disque. Les cylindres et les têtes sont numérotés à partir de 0, et les numéros de secteurs commencent à 1.

Ceux que des détails plus techniques intéressent peuvent trouver un peu partout sur l'Internet des informations sur la géométrie des disques, les secteurs de démarrage, les BIOS, etc. Faites une recherche sur Yahoo, Lycos, etc. pour boot sector ou master boot record. Parmi les choses utiles que vous trouverez, il y a le jeu de documents “Comment ça marche” - How It Works de Hale Landis. Voyez la section Autres endroits où trouver de l'aide pour avoir quelques pointeurs vers ces documents.

OK, assez de terminologie. Nous sommes censés parler de démarrage ici.

7.2. Le processus de démarrage

Sur le premier secteur de votre disque (cylindre 0, tête 0, secteur 1) se trouve l'enregistrement principal de démarrage - Master Boot Record (MBR). Il contient une carte de votre disque. Il identifie jusqu'à 4 partitions, chacune d'elle étant un espace contigu sur ce disque. FreeBSD appelle les partitions des tranches - slices - pour éviter la confusion avec ses propres partitions, mais nous n'utiliserons pas ici ce terme. Chaque partition peut contenir son propre système d'exploitation.

Chaque entrée de partition dans le MBR comprend un IDentifiant de partition, un Cylindre/Tête/Secteur de Début et un Cylindre/Tête/Secteur de Fin. L'IDentifiant de partition dit de quel type de partition il s'agit (de quel OS) et le Début/Fin dit où elle se trouve. La table des IDs de partitions liste un échantillon d'identifiants de partitions usuels.

ID (hex) Description
01 DOS12 primaire (FAT 12-bit)
04 DOS16 primaire (FAT 16-bit)
05 DOS12 étendue
06 DOS primaire large (> 32 Mo)
0A OS/2
83 Linux (EXT2FS)
A5 FreeBSD, NetBSD, 386BSD (UFS)

Note : Toutes les partitions ne dont pas démarrables (e.g. DOS étendue). Certaines le sont - d'autres ne le sont pas. Ce qui rend une partition démarrable est la configuration du secteur de démarrage de la partition - Partition Boot Sector - qui est toujours présent au début de chaque partition.

Quand vous configurez votre gestionnaire de démarrage favori, il consulte les entrées dans les tables de partitions du MBR de tous vos disques et vous donne la possibilité de donner un nom à ces entrées. Quand vous démarrez ensuite, le gestionnaire de démarrage est appelé par du code prévu pour cela à partir secteur principal de démarrage - Master Boot Sector - du premier disque trouvé sur votre système. Le gestionnaire consulte l'entrée de la table de partitions du MBR correspondant à la partition que vous avez choisie, charge le secteur de démarrage de cette partition et lui passe le contrôle. Ce secteur de démarrage de la partition elle-même contient suffisamment d'informations pour commencer à charger le système d'exploitation qui se trouve sur cette partition.

Il y a une chose importante à savoir dont nous n'avons pas encore parlé. Tous vos disques durs ont un MBR. Toutefois, celui qui est important est celui qui se trouve sur le premier disque reconnu par le BIOS. Si vous n'avez que des disques durs IDE, c'est le premier disque IDE (e.g. le disque maître sur le premier contrôleur). De même pour les systèmes entièrement SCSI. Si vous avez et des disques durs IDE et des disques durs SCSI, le disque IDE est habituellement le premier disque dont la présence est testée par le BIOS, le premier disque IDE est donc le premier disque reconnu. Le gestionnaire de démarrage que vous installerez sera implémenté sur le premier disque dur reconnu comme nous venons de l'expliquer.

7.3. Restrictions pour le démarrage et avertissements

Voici maintenant les choses intéressantes auxquelles il faut faire attention.

7.3.1. La redoutable limitation à 1024 cylindres et en quoi le LBA du BIOS peut être utile

La première partie du processus de démarrage est entièrement confiée au BIOS, (si ce terme est nouveau pour vous, le BIOS est un circuit électronique sur votre carte mère qui contient le code de démarrage de votre ordinateur). C'est pourquoi cette première partie du processus est soumise aux limitations du BIOS.

L'interface BIOS utilisée pour lire le disque dur durant cette phase (INT 13H, Sous-fonction 2) alloue 10 bits pour le numéro de cylindre, 8 bits pour le numéro de tête, et 6 bits pour le numéro de secteur. Cela limite les utilisateurs de cette interface (i.e. les gestionnaires de démarrage implémentés sur le MBR du disque ainsi que les chargeurs de systèmes d'exploitation implémentés sur les secteurs de démarrage) à:

  • 1024 cylindres au plus,

  • 256 têtes au plus,

  • 64 secteurs/piste au plus, (en fait 63, 0 n'est pas disponible).

Or les diques durs de grande capacité ont beaucoup de cylindres et peu de têtes, le nombre de cylindres de ces disques est donc invariablement supérieurs à 1024. De ce fait et à cause de l'interface BIOS telle qu'elle est, vous ne pouvez pas démarrer n'importe où sur votre disque dur. Le code de démarrage (le gestionnaire de démarrage et le chargeur du système d'exploitation implémenté sur les secteurs de démarrage de chaque partition démarrable) doivent se situer avant le 1024ème cylindre. Si votre disque dur est standard et a 16 têtes, cela équivaut à:


1024 cylindres/disque X 16 têtes/disque X 63 secteurs/piste X 512 octets
         

c'est-à-dire la limite souvent citée de 528 Mo.

C'est là qu'intervient le LBA (Logical Block Adressing - “adressage de bloc logique”) du BIOS. Le LBA du BIOS donne à l'utilisateur des routines de l'API (Application Programming Interface - “interface de programmation”) du BIOS, la possibilité d'accéder aux cylindres au-delà de 1024 avec les interfaces du BIOS en redéfinissant le cylindre. Cela signifie qu'il construit une nouvelle géométrie de vos cylindres et têtes, faisant croire au BIOS que votre disque a moins de cylindres et plus de têtes qu'en réalité. En d'autres termes, il profite du fait que les disques ont relativement peu de têtes et beaucoup de cylindres, pour modifier le rapport entre nombre de cylindres et nombre de têtes de façon à ce que tous deux soient inférieurs aux limites mentionnées ci-dessus (1024 cylindres, 256 têtes).

Pour prendre de nouveau l'exemple de mon Western Digital 1,6 Go, il a pour géométrie physique:


(3148 cylindres, 16 têtes, 63 secteurs/piste, 512 octets/secteur)
          

Alors que le LBA du BIOS la redéfinit comme suit:


( 787 cylindres, 64 têtes, 63 secteurs/piste, 512 octets/secteur)
          

ce qui correspond à la même capacité physique, mais avec des nombres de cylindres et de têtes dans les limites acceptables par les API du BIOS. (Au passage, j'ai sur l'un de mes disques, et Linux et FreeBSD au-delà du 1024ème cylindre, et les deux démarrent sans problème, grâce au LBA du BIOS.)

7.3.2. Gestionnaires de démarrage et allocation de l'espace disque

Une autre chose à laquelle il faut faire attention lorsque vous installez un gestionnaire de démarrage est l'allocation d'espace disque pour ce gestionnaire. Il vaut mieux être informé de cette question avant de commencer pour vous éviter d'avoir à réinstaller un ou plusieurs de vos systèmes d'exploitation.

Si vous avez suivi ce qui a été dit sur le processus de démarrage à propos du secteur principal de démarrage (où se trouve le MBR), des secteurs de démarrage des partitions et du processus de démarrage, vous vous êtes peut-être demandé où va se trouver ce foutu gestionnaire de démarrage. Bien, certains gestionnaires de démarrage sont suffisamment légers pour tenir entièrement dans le secteur principal de démarrage (cylindre 0, tête 0, secteur 1) avec la table de partitions. D'autres ont besoin d'un peu plus d'espace et débordent en fait de quelques secteurs après le secteur principal de démarrage sur la piste cylindre 0 tête 0, qui sont normalement libres... normalement.

Là est le hic... Certains systèmes d'exploitation (y compris FreeBSD) vous permettent de faire débuter vos partitions juste après le secteur principal de démarrage au cylindre 0, tête 0, secteur 2, si vous le voulez. En fait, si vous donnez au programme sysinstall de FreeBSD, un disque dont le début est vierge ou un disque totalement vide, c'est là qu'il fera commencer par défaut la partition FreeBSD (c'est tout du moins ce qu'il a fait quand je suis tombé dans ce piège). Quand vous installez ensuite le gestionnaire de démarrage, si c'est l'un de ceux qui occupent quelques secteurs supplémentaires après le MBR, il écrase les données qui se trouvent au début de la première partie. Dans le cas de FreeBSD, cela écrase le label du disque et empêche de démarrer votre partition FreeBSD.

Le moyen facile d'éviter ce problème (et de vous garder le possibilité d'essayer différents gestionnaires de démarrage par la suite) est de ne pas allouer la première piste du disque quand vous le partitionnez. Cela réserve l'espace entre le cylindre 0, tête 0, secteur 2 et le cylindre 0, tête 0, secteur 63, et votre partition commence au cylindre 1, tête 1, secteur 1. Pour ce que cela vaut, quand vous créez une partition DOS au début de votre disque, DOS laisse par défaut cet espace inoccupé (c'est pourquoi certains gestionnaires de démarrage font l'hypothèse qu'il est disponible). Mettre une partition DOS au début de votre disque vous permet aussi d'éviter le problème. C'est ce que je préfère personnellement faire, mettre une partition DOS de 1 Mo au début, parce que cela évite aussi que la lettre désignant mon disque DOS primaire soit modifiée ensuite quand je repartitionne.

Pour servir de référence, les gestionnaires de démarrage suivants n'utilisent que le secteur principal de démarrage pour mettre leur code et leurs données:

  • OS-BS 1.35,

  • Boot Easy,

  • LILO.

Ces gestionnaires de démarrage occupent quelques secteurs supplémentaires après le secteur principal de démarrage:

  • OS-BS 2.0 Béta 8 (secteurs 2-5),

  • gestionnaire de démarrage d'OS/2.

7.3.3. Que faire si votre système ne démarre pas?

Il se peut qu'à un moment donné de l'installation d'un gestionnaire de démarrage, vous laissiez le MBR dans un état tel que votre machine ne redémarre plus. C'est peu probable, mais possible lorsque vous refaites un FDISK alors qu'il y a déjà un gestionnaire de démarrage installé.

Si vous avez une partition DOS démarrable, vous pouvez démarrer avec une disquette de démarrage DOS, et lancer:

A:\> FDISK /MBR

pour réinstaller le code d'origine de démarrage simple du DOS seul sur le système. Vous pouvez alors démarrer DOS (et DOS uniquement) depuis le disque dur. Une autre solution consiste à réexécuter le programme d'installation de votre gestionnaire de démarrage à partir d'une disquette démarrable.

Ce document, ainsi que d'autres peut être téléchargé sur ftp.FreeBSD.org/pub/FreeBSD/doc/.

Pour toutes questions à propos de FreeBSD, lisez la documentation avant de contacter <questions@FreeBSD.org>.
Pour les questions sur cette documentation, contactez <doc@FreeBSD.org>.