Le boot ou boostrap désigne les étapes successives du démarrage.
Ce terme ferait référence à une histoire rocambolesque "Les Aventures du Baron de Münchhausen" qui pour se sortir de sables mouvants aurait tiré de toutes ses forces sur les languettes de ses bottes.
A la mise sous tension ou après un reset, le processeur fonctionne en mode réel. Toutes les adresses des instructions et des données auxquelles il accède sont des adresses réelles, des adresses physiques qui ne vont pas au delà de 1 Mo.
Le processeur est d'autre part incapable d'aller chercher les instructions du système d'exploitation se trouvant sur le disque dur, le CD ou la disquette. Il va chercher ses premières instructions dans la ROM du BIOS à l'adresse FFFF0, 16 bytes avant la fin du premier méga octet. Là se trouve une instruction de saut vers d'autres instructions du BIOS qui initialisent et testent la mémoire centrale et d'autres composants internes, l'écran et le clavier. Ce test est appelé le POST.
Le Post est un test des fonctions vitales du hardware par le PC lui-même POST est l'acronyme de Power On Self Test (auto test au démarrage).
Les erreurs constatées au tout début de ce test sont signalées par des codes sonores qui dépendent des défauts constatés mais qui varient aussi d'un constructeur à l'autre. Un bip bref signale que la première partie de ce test s'est terminée sans encombre et que le système est capable d'utiliser la console pour la suite de la communication. Le test de la RAM, l'inventaire du matériel ou les messages d'erreurs peuvent maintenant s'afficher à l'écran.
Une fois cette première étape réalisée et si le POST n'a pas rencontré d'erreurs fatales, le BIOS consulte la RAM CMOS pour y savoir quels disques peuvent servir de disque système (A: ou C: par exemple).
Le premier secteur du disque système est appelé MBR ( Master Boot Record) . Les 512 octets de ce secteur sont chargés en mémoire centrale. La structure du MBR est identique pour tous les systèmes d'exploitation :
- les 446 premiers octets contiennent un petit programme dont le but est de rechercher la partition active
- les 64 octets contiennent la table de partition à quatre entrées de 16 octets chacune.
- les 2 derniers contiennent le magic number AA55 dont la présence, vérifiée par le BIOS, atteste la validité du secteur MBR.
Le code du MBR, une fois chargé dans la mémoire, peut être lu et exécuté par le processeur. Il teste la table de partition pour connaître la partition amorçable ( appelée aussi partition active ou bootable) ou encore "volume système"
La partition amorçable est celle dont le premier secteur, le secteur d'amorçage, abrite le chargeur de démarrage (aussi appelé IPL "Initial Program Load") qui charge le système d'exploitation en mémoire vive avant d'en lancer l'exécution :
- soit le code qui lance l'OS se trouvant sur cette partition
- soit un bootmanager pour choisir entre plusieurs systèmes d'exploitation
Pour plus d'informations sur ce sujet et le multiboot en particulier, un site à découvrir : www.bellamyjc.org |
NTLDR démarre les pilotes du système de fichiers, il a dès lors accès aux répertoires du volume.
Il lit le fichier \BOOT.INI, efface l'écran et si Boot.ini fait référence à plus d'un système d'exploitation affiche la sélection en accordant généralement 30 secondes pour la modifier.
[boot loader] timeout=30 default=multi(0)disk(0)rdisk(0)partition(1)\WINNT [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professionnel" /fastdetect
Le système d'exploitation sélectionné est ensuite chargé.
Il appelle Ntdetect.com un programme en mode réel 16 bits qui fait appel au BIOS pour connaître la configuration de base du PC. Il charge ensuite les fichiers Ntoskrnl.exe et Hal.dll pour initialiser le noyau (kernel).
NTLDR lit ensuite la ruche SYSTEM (\Windows\System32\Config\System) savoir quels pilotes sont nécessaires à l'amorçage. Sous l'indication "Démarrage de Windows" une barre de progression avance pour chaque nouveau pilote chargé.
NTLDR passe ensuite la main au noyau.
Le noyau note dans HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION
les données collectées précédemment par Ntdetect. Il lance
les pilotes d'amorçages chargés par NTLDR puis va chercher dans le registre
les pilotes de périphériques qui ont 0x1 pour valeur de chargement.
Démarrage du Session Manager Smss.exe, puis prend en compte différentes clés du registre pour terminer des opérations différées depuis la session précédente, ouvrir des DLL, initialiser des variables du registre et créer des variables d'environnement
A ce stade l'écran passe du mode vidéo VGA au mode vidéo défini dans le profil par défaut.
Le processus d'ouverture de session est lancé et apparaît la boîte de dialogue d'ouverture de session. D'autres services sont encore lancés automatiquement (ceux qui dans le registre ont une valeur de chargement de 0x2)
Avant de clore ce chapitre, voici encore quelques explications à propos
de ces deux fichiers qui à l'époque du DOS et de Windows 3.x servaient à
configurer la machine. Ils subsistent encore sous Windows 9x pour être remplacés
ensuite par ce qu'on appelle le registre de Windows.
Ces fichiers contiennent une série de commandes que nous examinons à partir
de deux exemples tirés d'une disquette de démarrage DOS:
CONFIG.SYS
1 2 3 4 5 6 |
DEVICE=A:\DOS\HIMEM.SYS DOS=HIGH COUNTRY=032,850,A:\DOS\COUNTRY.SYS DEVICE=A:\DOS\ANSI.SYS DEVICE=A:\DOS\DISPLAY.SYS CON=(EGA,,2) FILES=30 |
CONFIG.SYS est un fichier texte. Chaque ligne commence par un mot clé
suivi du signe égal et d'un ou plusieurs paramètres séparés
par des virgules. Il ne peut pas il y avoir d'espace avant ni après
le signe égal.
Le mot clé DEVICE s'emploie pour spécifier les pilotes de
périphériques (device driver) qui doivent être chargés
au démarrage de la machine. Ce sont alors des programmes résidants.
1 | HIMEM.SYS est le gestionnaire de mémoire qui sous DOS donne accès à la mémoire étendue |
2 | DOS=HIGH commande au DOS de se placer en mémoire haute, gérée par HYMEM.SYS, pour laisser plus de place en mémoire conventionnelle |
3 | COUNTRY sert à définir les
paramètres nationaux Le code 032 est l'indicatif téléphonique de la Belgique. C'est de ce code que dépendent les options monétaires ainsi que les formats d'affichage de la date et de l'heure. 850 est le code page "Latin 1" mais la page de code par défaut (437) contient déjà les caractères accentués nécessaires au français. |
4 | ANSI.SYS est le device driver qui gère l'écran selon la norme ANSI - American National Standard Institute . On peut ensuite gérer la position du curseur ou les couleurs des caractères à l'aide de commande "séquences ESC". |
5 | DISPLAY.SYS est le pilote de périphérique qui gère les pages de code. La même ligne précise le type d'écran ( EGA ou LCD), les paramètres suivants concernent à nouveau les pages de codes. Les deux parenthèses qui suivent indiquent que l'on prend la page de codes par défaut, Le '1' qui suit indique que l'utilisateur n'utilisera qu'une seule page de codes. Les caractères accentués se trouvant de toute façon aussi bien dans la page 437 que dans la 850. |
6 | FILE=30 était une commande pour spécifier le nombre de fichiers pouvant être ouverts simultanément. Il fut un temps ... où il fallait doser de tels paramètres en fonction de la quantité de mémoire dont on disposait. |
AUTOEXEC.BAT
1 2 3 4 5 6 7 8 |
@ECHO OFF A:\DOS\SMARTDRV.EXE /X PROMPT $e[1;32;40m$p$e[1;33;40m$g$e[0;37;40m PATH A:\DOS MODE CON CODEPAGE PREPARE=((850) A:\DOS\EGA.CPI) MODE CON CODEPAGE SELECT=850 KEYB BE,,A:\DOS\KEYBOARD.SYS doskey |
AUTOEXEC.BAT est aussi un fichier texte. Les lignes sont des commandes interprétées par COMMAND.COM et exécutées au démarrage juste avant de rendre la main à l'utilisateur
1 | @ECHO OFF masque l'affichage des lignes de ce fichier |
2 | A:\DOS\SMARTDRV.EXE /X exploite la mémoire étendue gérée maintenant par HYMEM.SYS pour en faire une mémoire cache disque. |
3 | La commande PROMPT avait d'habitude $P$G comme seuls paramètres. Ici des séquences " escape " ont été ajoutées pour faire une invite en couleurs. Ce genre de gadget est possible grâce au driver ANSI.SYS chargé par CONFIG.SYS |
4 | Le PATH ou "chemin de recherche" indique la liste des répertoires auxquels l'interpréteur devra accéder pour y chercher les commandes externes et les applications que l'utilisateur pourrait invoquer. |
5 et 6 | Préparation de la page de codes en indiquant dans quel fichier trouver ces codes |
7 | Choix du clavier |
8 | Lancer l'utilitaire qui permet de rappeler les commandes introduites à l'aide des flèches. |