BOOTING C'EST DUR
Amorcer ... eh bien ... c'est vraiment la partie la plus difficile. Chaque fois qu'un ordinateur démarre, il se retrouve fondamentalement de nouveau. Il se familiarise avec ses différentes parties et acquiert des capacités pour chacune d'elles. Mais il doit se débrouiller seul, pour ainsi dire, de zéro à chaque fois.
Lors de la conception d'un processus de démarrage, l'astuce consiste à mettre la machine en service par étapes. Votre démarrage doit être rapide et fiable, et il doit être à la fois des choses dans un environnement totalement inconnu à chaque fois . Je ne vais même pas m'engager dans une conversation en mode réel / protégé (ce qui ne veut pas dire que je pourrais même) , mais il se passe beaucoup de choses au démarrage. Comme l'ordinateur assimile ses différents composants à chaque fois, il le fait par étapes. Le plus crucial de ces problèmes est probablement le passage de l’exécution du code intégré à l’exécution du code sur disque, ou, en d’autres termes, de l’exécution du noyau. C'est à ce moment que le micrologiciel se rend (apparemment) au système d'exploitation.
Il y a de nombreuses années, ce n'était pas vraiment le cas. Auparavant, le BIOS était en réalité le Basic In / Out - les programmes habituels appelaient le micrologiciel pour dessiner l'écran et accéder au disque. Celles-ci étaient appelées des interruptions - les vieux chapeaux se souviendraient peut-être mieux des joies de la joie qu’ils éprouvaient souvent à assigner des IRQ à leur nouvelle matrice de points ou USR.
INT13H
C'est la série de fonctions 13H d' interruption ( ou INT
d'assemblage ) qui est proposée par le BIOS en tant que services d'accès au disque. Celles-ci sont encore utilisées aujourd'hui par les systèmes BIOS dans le processus de démarrage pour passer du firmware au disque.
Un système BIOS vérifiera les premiers octets de chaque disque trouvé et recherchera un modèle qu’il reconnaît en tant qu’enregistrement maître de démarrage ( ouMBR
) . Il s'agit d'un standard de facto datant de plusieurs décennies et qui comprend un peu de binaire brut exécutable qui est écrit sur la tête du disque. Le MBR marque un disque BIOS comme amorçable. Il arrêtera de vérifier quand il en trouvera un, et vous en obtiendrez pratiquement tout ce que vous obtiendrez sans une astuce astucieuse. Lorsqu'il en trouve un, il le mappe dans la mémoire et l'exécute (en mode réel, mais je n'y vais toujours pas) .
Le MBR exécuté n'est presque certainement pas votre noyau système - 512 octets (à donner ou à prendre) seraient plutôt inutiles dans ce département. Il s’agit probablement d’un programme d’ amorçage - un programme spécialement conçu pour surmonter l’ une des nombreuses limitations en matière d’adressage du BIOS - plus précisément, il ne comprend aucun type de système de fichiers.
Lorsque le bootloader lit dans le noyau réelle et exécute ce en mémoire (comme nous prions tous ce sera à chaque fois) , il sera probablement le faire en demandant au BIOS via un INT13H
appel d' interruption. Et si ce n’est pas le cas - de nombreux chargeurs de démarrage plus sophistiqués montent les systèmes de fichiers de manière conventionnelle et exécutent le code d’une autre manière -, alors il est très peu probable que le chargeur de démarrage soit aussi sophistiqué sans un INT13H
ou deux. Les chargeurs de démarrage doivent souvent charger eux-mêmes la chaîne - ou leurs différentes étapes - car les 512 octets attribués en premier ne répondent même pas à leurs besoins.
POULET ET OEUFS
Je sais que tout cela est une façon détournée de discuter du disque, mais à ce stade, il devrait être parfaitement clair que le principal problème - on pourrait appeler cela un type poule-œuf - est d'accéder au disque contenant les instructions du programme. sur la façon d'accéder aux disques . La clé de ce problème réside dans les microprogrammes - et continue de prendre des formes très différentes, même sur les systèmes EFI - et, qu’elle soit faible ou non, le microprogramme est le lien le plus important de la chaîne de démarrage.
Vous voyez, une fois que le noyau s'exécute et que toutes ses nombreuses routines d'accès et de contrôle du matériel sont initiées, tous ces problèmes disparaissent en quelque sorte (ou, à tout le moins, changent quelque peu) , car les systèmes d'exploitation modernes prennent le contrôle total du système, mais tant qu'ils ne le font pas, les limites du système ne s'étendent que dans la mesure où le microprogramme le permet. Cela en dit long - le BIOS n'a pas beaucoup changé depuis le 8086. L' INT13H
appel est un original 8086. Oui, il y a eu des myriades d' extensions et des bidouilles bien sûr, mais des innovations ...?
DE MIEUX EN MIEUX
La plupart des modifications apportées au BIOS ont été au mieux de simples bandages. Auparavant, le disque dur devait être physiquement cartographié - divers aspects spécifiques de sa géométrie étaient évoqués lorsque des données étaient stockées ou extraites. Finalement, le disque dur conventionnel a atteint une taille qui l’interdit. Même la carte abstraite contenait trop d’ informations à gérer par un BIOS. Comme il ne peut fonctionner qu'en mode réel, le BIOS est limité à 1 Mo par registre de mémoire. Augmentez la taille de la carte des cylindres à une valeur supérieure à celle indiquée, ou faites en sorte que l’une de ses propriétés soit plus grande que ce qui peut être traité en bits, et le BIOS est littéralement perdu - hors limite.
Cet obstacle a été rencontré et brisé à plusieurs reprises. Chaque fois que la carte a été extraite et encodée de manière plus récente, plus intelligente et moins précise. Et ces jours-ci, il est littéralement impossible pour un BIOS de mapper avec précision un lecteur. L'adressage de bloc logique est désormais la norme de facto, bien que certaines traductions Cylinder / Head / Sector (ou CHS) restent nécessaires. Ce que le microprogramme de la carte mère a perdu en précision / responsabilité, de telles extensions ont été résumées et ajoutées aux responsabilités du microprogramme de disque pour combler les lacunes.
C'est ce jeu de chat et souris qui est référencé dans votre question. Lorsque le BIOS ne parvient pas à comprendre un disque au-delà d'un certain point en raison de sa taille, toutes les données que vous souhaitez récupérer à votre démarrage, telles qu'un chargeur de démarrage ou un noyau, devraient probablement ne pas être situées au-delà de ce point. C'est d'où /boot
venait.
Peut-être réellement mieux
Heureusement, ces jours-ci, la disparition de BIOS a rendu ces choses inutiles. C'était 30 ans à venir, mais il a été largement remplacé ces dernières années par le standard UEFI (ou EFI 2.0) . UEFI fournit un montage depuis la dernière minute, il s'initialise en mode protégé, il intègre son propre chargeur de démarrage, il fournit un stockage variable de mémoire flash persistante de redémarrage, il est conçu pour gérer quelques zetaoctets ou autre par disque ... et plus encore. autre. C'est loin d'être parfait, mais c'est une amélioration considérable par rapport à son prédécesseur.
Même les arguments pour des chargeurs de démarrage spécialisés impliquant un chiffrement de disque ou des systèmes de fichiers en couches tombent à l'eau compte tenu du fait que tous ces éléments doivent être gérés par le noyau du système d'exploitation. Néanmoins, si vous disposez d'un montage au démarrage, vous avez toujours son exécution (en particulier si on considère que le noyau Linux, dans sa configuration par défaut, est un exécutable EFI à lui tout seul) .
Par conséquent, une /boot
partition séparée ne devrait probablement pas vous préoccuper excessivement. Si vous utilisez un système EFI, vous avez probablement déjà un analogue dans la partition système EFI, car il s’agit là d’une condition préalable au démarrage du mode EFI.