EEIJ

Païou : Mandriva Linux depuis 2002. Aujourd'hui, c'est Mageia Linux


Sommaire

On se lasse de tout, sauf de comprendre.
Attribué à Virgile.

Le secteur d'amorçage et la table des partitions

Historique

10 décembre 2012 : Reprise et actualisation de la page de l'ancien site de Païou.

Difficulté

Pour : tout esprit curieux.

 Introduction

Tout ordinateur possède un BIOS, c'est-à-dire un microprogramme qui initialise les différents périphériques (bus, ram, disques ...).
Il recherche un système d'exploitation situé dans une petite zone, sur l'un de ses périphériques accessibles.

La taille et l'emplacement de cette zone dépendent de la plate-forme informatique et du dispositif.
Celle-ci est généralement placée sur le premier secteur de la première piste du périphérique de démarrage (souvent, le premier disque dur).
Ce secteur est de taille trop réduite pour contenir un programme autonome. Son rôle est limité au chargement d'un programme de taille plus importante, typiquement le système d'exploitation, de manière directe ou via un chargeur d'amorçage.

Haut

 Comment lire le secteur d'amorçage

Pour lire le contenu de ce premier secteur avec linux, il suffit, dans une console, de taper :
dd bs=512 count=1 if=/dev/fd0 of=/chemin/nom_fichier.img
avec bs=512 (taille, en octets, du secteur), count=1 (copie uniquement 1 bloc, comme aucun décalage n'est indiqué, c'est donc le premier secteur), if=/dev/fd0 (lire la disquette) et of=xxx (nom du fichier de destination).

Haut

 Disquettes non-système

Les disquettes examinées ci-dessous ne sont pas des disquettes système, c'est-à-dire qu'elles ne permettent pas de démarrer un ordinateur, vu qu'elles ne contiennent pas le programme minimal nécessaire.

Elles délivrent un message :
This is not a bootable disk. Please insert a bootable floppy and press any key to try again ...

L'examen de leur premier secteur est cependant très instructif.
Leur contenu dépend de l'outil qui a servi à la formater.

Premier secteur avec fdformat

Disquette formatée avec fdformat (linux)

Il s'agit, ici, d'un formatage de bas niveau.

Le premier secteur est entièrement rempli de motifs "f6".
Ce formatage ne prépare même pas la disquette à recevoir des fichiers.
En d'autres mots, il n'y a pas encore de système de fichier.
Ce formatage permet d'effacer totalement les données d'une disquette.

Premier secteur avec mkfs.msdos

Disquette formatée avec mkfs.msdos (linux)

On remarque, ici, la structure habituelle d'un secteur d'amorçage de type "disquette" :

  1. le saut vers une routine,
  2. le nom du fournisseur du système de formatage,
  3. les caractéristiques du secteur,
  4. la description de la table d'allocation des fichiers

Disquette formatée fdformat 1722ko, puis mkfs.msdos (linux)

À part le nombre de secteurs par piste et les secteurs totaux, les valeurs sont identiques à celles ci-dessus.

Disquette formatée avec mtools (linux)

Les commandes mtools sont la plupart de celles disponibles sous DOS, en ajoutant devant le nom de la commande la lettre m.
Exemple mformat a:

La structure et les caractéristiques sont semblables à celles de mkfs.msdos

Disquette formatée avec Freedos 0.9

Là également, la structure et les caractéristiques sont semblables à celles de mkfs.msdos

Disquette formatée avec MSDOS 6.22c

Là également, la structure et les caractéristiques sont semblables à celles de mkfs.msdos

Pour les curieux, survolez : Tableau récapitulatif
Secteur d'amorçage pour quelques disquettes et disque
AdresseContenuTaille mkfs.msdosMSDOS 6.22c Freedosmkfs.msdos 1722
00-02Saut à la routine de BOOT3 octets eb 3c 90
saut à 00 3e
90 = NOP
eb 3c 90
saut à 00 3e
90 = NOP
eb 3c 90
saut à 00 3e
90 = NOP
eb 3c 90
saut à 00 3e
90 = NOP
03-0AFabriquant, version8 octets mkdosfsMSDOS5.0 FDOS_1.0mkdosfs
0B-0CNbre d'octets par secteur2 octets 00 02
0200h = 512
00 02
0200h = 512
00 02
0200h = 512
00 02
0200h = 512
0DSecteurs par grappe1 octet 01
01h = 1
01
01h = 1
01
01h = 1
01
01h = 1
0E-0FSecteurs réservés2 octets 01-00
0001h = 1
01-00
0001h = 1
01-00
0001h = 1
01-00
0001h = 1
10Nbre FAT
(Tables Allocation Fichiers)
1 octet 02
02h = 2
02
02h = 2
02
02h = 2
02
02h = 2
11-12Entrées max. dans répertoire racine2 octets e0-00
00e0h = 224
e0-00
00e0h = 224
e0-00
00e0h = 224
e0-00
00e0h = 224
13-14Secteurs totaux (si <32 Mo)2 octets 40-0b
0b40h = 2880
40-0b
0b40h = 2880
40-0b
0B40h = 2880
74-0d
0d74h = 3444
15Descripteur de supports
F0=disquette 3.5 pouces, 18 secteurs par piste
F8=disque dur
1 octet f0f0 f0f0
16-17Secteurs par FAT2 octets 09-00
0009=9
09-00
0009=9
09-00
0009=9
0a-00
000a=10
18-19Secteurs par piste2 octets 12-00
0012=18
12-00
0012=18
12-00
0012=18
15-00
0015=21
1A-1BNbre de têtes2 octets 02-00
0002=2
02-00
0002=2
02-00
0002=2
02-00
0002=2
1C-1FSecteurs cachés4 octets 00-00-00-00
00000000=0
00-00-00-00
00000000=0
00-00-00-00
00000000=0
00-00-00-00
00000000=0
20-23Secteurs totaux (si >32 Mo)4 octets 00-00-00-00
00000000=0
00-00-00-00
00000000=0
00-00-00-00
00000000=0
00-00-00-00
00000000=0
24Numéro de lecteur physique.
À partir de 00 pour disquette,
à partir de 80 pour disque dur
1 octet 0000 0000
25Numéro de la tête actuelle (pour NT)1 octet 0000 0000
26Signature secteur de BOOT étendu (28 ou 29)1 octet 2929 2929
27-2ANuméro de série4 octets c2 e2 fd 46e7 16 61 30 0f 14 11 11fb e3 bb ae
2B-35Nom du volume (est remplacé par le nom dans la FAT)11 octets 11 octets 00NO NAME NO NAMENO NAME
36-3DSystème de fichiers utilisé8 octets FAT12FAT12 FAT12FAT12
3E-1FDDébut habituel de la routine de boot448 octets
1FE-1FFSignature du secteur de BOOT2 octets 55AA55AA 55AA55AA
Haut

 Disquettes système

Contrairement aux disquettes précédentes, ces disquettes contiennent un système d'exploitation minimal, permettant le démarrage de l'ordinateur.

Tomsrtbt

tomsrtbt (Tom's root boot) est une distribution Linux très petite, mais entière (MiniLinux). C'est en fait une "disquette de secours" contenant environ 100 outils de récupération. Elle peut être stockée sur une simple disquette 1.44 Mo (qui est alors formatée en haute densité 1.72M)

De ce fait, les valeurs changent par rapport à une disquette normale.

  1. le saut vers une routine, ici EB69 au lieu de EB3C
  2. le nom , LILO (c'est un chargeur)
  3. les caractéristiques du secteur,
  4. la description de la table d'allocation des fichiers

En travaux Travaux




Disquette formatée avec MSDOS 6.22c

Premier secteur système avec msdos

La première instruction, EB3C, renvoie à un programme d'amorçage FA 33 C0 8E D0 BC ...
Ce dernier, de taille réduite (vu la place restante dans un secteur de 512 octets), va simplement charger en mémoire un programme plus important, le noyau du système d'exploitation.
En fait, ce noyau est constitué de deux fichiers MSDOS.SYS (le noyau proprement dit) et IO.SYS (gère les périphériques ou entrées/sorties).
Le noyau est complété par COMMAND.COM, l'interpréteur de commandes.
D'autres fichiers sont bien sûr nécessaires pour disposer d'un système d'exploitation assez complet. L'installation demandait 3 disquettes.

Autres "DOS"

Microsoft n'était pas le seul à avoir développé un DOS (Disk Operating System). En fait, Microsoft avait racheté QDOS, il l'avait amélioré et l'avait ensuite fourni à IBM, sous le nom de PC-DOS, avant de créer MSDOS.

Par ailleurs, Digital Research, créateur de CP/M a également créé DR-DOS.
Puis un système libre est venu : FreeDOS. Sa version finale (1.0) est sortie en 2006.

Leur fonctionnement est semblable. Le nom des fichiers change cependant :

Disquette formatée avec Windows98

La même première instruction renvoie également à l'adresse 003E, où se trouve un autre programme.

Haut

 Chargeurs de démarrage

Contrairement aux disquettes système, ces disquettes contiennent simplement une application qui doit charger un système d'exploitation situé ailleurs.
Le plus souvent, ces chargeurs permettent de choisir entre plusieurs systèmes d'exploitation différents. C'est leur grand intérêt.

Chargeur syslinux

Syslinux est un chargeur d'amorçage pour Linux, léger, de faible taille. Isolinux est son équivalent pour les CDROMs
Il était notamment utilisé sur certaines disquettes d'installation d'anciennes versions de Mandriva.Les disquettes était faites à partir des images :

Installé sur un disque dur, Syslinux permet de choisir entre plusieurs systèmes d'exploitation installés sur un méme ordinateur.

La figure ci-contre montre le premier secteur d'une disquette formatée en FAT12 avec les renseignements habituels :

Chargeur isolinux

Isolinux est l'équivalent de Syslinux, mais pour les CDROMs

Chargeur Grub legacy (1.5)

Du temps où les noyaux linux n'étaient pas encore aussi importants, il était possible de créer une disquette permettant l'installation d'un système linux.

Il s'agit, ici, d'une disquette formatée en FAT12 avec les renseignements habituels :

Haut

 Disque dur avec chargeur Grub legacy (1.5)

En général, le disque dur comprend un chargeur de démarrage permettant de choisir un mode de démarrage parmi plusieurs.

Il est, par exemple, possible de choisir entre Mageia et Windows, si les deux systèmes sont installés,
ou encore entre Mageia normal et la version de secours (correspondant au mode sans échec).

Comme pour les disquettes, la première instruction renvoie à un programme placé plus loin, mais cette fois c'est le chargeur de démarrage, en l'occurrence Grub.