Bonjour,
je regarde le processus de boot de linux mais je ne comprends pas une chose :
Comment le bios sais qu’il peut booter sur un device ? (usb, disque dur etc). Comment sait-il que ce device contient un systeme d’exploitation ?
Merci.
Bonjour,
je regarde le processus de boot de linux mais je ne comprends pas une chose :
Comment le bios sais qu’il peut booter sur un device ? (usb, disque dur etc). Comment sait-il que ce device contient un systeme d’exploitation ?
Merci.
Bonjour Xior
Au démarrage du PC, après avoir initialisé certains périphériques,
le BIOS lit et les 512 premiers octets du premier (et de chacun des autres) “disque” accessible,
et s’il trouve la signature hexa 55AA dans les deux derniers octets de ce premier secteur,
il essayera d’exécuter, après les avoir copié et depuis la RAM, les instructions données dans les 446 premiers octets.
Mais tout ça, c’était avec le BIOS, je ne sais pas comment ça se passe pour l’EFI
Merci de ta réponse MicP
Donc les 512 premiers octets des disques accessible c’est le MBR c’est ca ?
Et si dans les 2 premiers octets du MBR il y a la signature 55AA alors le bios l’executera et GRUb se lancera.
J’ai bon ?
[quote=“Xior, post:3, topic:72866”]
…les 2 premiers octets du MBR…
[/quote]En fait, ce sont les deux derniers => 511 et 512ème
Et si le chargeur de boot GRUB (ou un autre) a été installé, il sera exécuté.
Pour le GPT, c’est le MBR “protecteur” qui remplace le MBR, ce qui fait que le chargeur de boot est toujours placé au même endroit
D’accord.
Donc ce qui fais la difference entre un device bootable et un device de stockage c’est cette fameuse signature 55AA aux 2 derniers octets du MBR si j’ai bien compris.
Pour être plus précis, la signature en fin du premier secteur indique au BIOS qu’il doit certainement s’agir d’un MBR (de type msdos ou GPT).
Si cette signature n’est pas présente, le BIOS n’ira pas chercher plus loin sur le disque concerné.
Et si ce MBR a bien été créé pour être bootable il aura dans ses 440 premiers octets une routine qui va permettre au BIOS de charger un système d’exploitation ou un autre chargeur de boot (comme par exemple grub) qui permettra de choisir parmi les systèmes d’exploitation bootables pour lequel il a été installé.
Si cette routine est absente, il y aura quand même, dans ce MBR, un accès à une table des partitions, qui est aussi inscrite dans ce MBR (pour le MBR de type msdos), qui permettra de savoir où débutent et finissent les partitions qui ont été définies sur ce disque.
S’il n’y a pas de MBR, il n’y aura pas de table des partitions non plus.
Donc dans chaque médias (clé usb, disque dur etc), il y a un MBR qui contient ou non un bootloader dans les 440 premiers octets. Et si dans les 2 derniers octets du premier secteur il y a la signature 55AA alors le Bios ira chercher dans les 440 premiers octets et éxecutera le bootloader ou l’OS.
D’accord mais dans 440 octets il n’y a pas la place de mettre Grub2 non ? Comment c’est possible qu’il tienne dedans ?
Effectivement, c’est très petit.
Mais ça suffit largement pour enregistrer un saut (JUMP assembleur) vers d’autres zones du disque dans lesquelles se trouveront les pilotes nécessaires pour pouvoir accéder au(x) système(s) de fichier(s) sur lesquels il y aura d’autres programmes disponibles, qui lanceront à leur tour d’autres programmes, etc.