[SOS] Notions basic sur boot... => OK !

Romain LABBE labbe.romain at wanadoo.fr
Mar 13 Fév 20:31:09 CET 2007


> Je vais t'expliquer le plus précisément possible.
> C'est très simple :)
> 
> Le premier secteur d'une unitée de stockage est toujours réservé à un 
> Master Boot Record.
> Dans le cas d'un PC x86(_64) et d'un disque dur avec format 
> de partition 
> MSDOS, ce MBR contient :
> 
> Un peux de code, une structure d'information pour 4 partition 
> maximum, 
> et un nombre magique (0x55AA) qui est en principe vérifié par 
> le Bios de 
> ta machine, de sorte qu'elle ne charge pas quelques chose de vide.
> 
> Si on utilise le format de partition compatible MSDOS, c'est pour la 
> seule raison d'être compatible avec Microsoft...
> 
> Le BIOS, lui, ne ce souci que d'un chose, charger le MBR à l'adresse 
> mémoire 0x7C0 (1984, la date du lancement du PC par IBM ^^).
> 
> Le MBR, est donc un BootSector (Secteur de démarrage) plus 4 
> définition 
> de partition. (Position sur le disque, taille... etc).
> 
> De plus, le BootSector lui, contient des informations, comme des 
> informations de type de partition...
> Une disquette ou un cd/dvd par exemple, possède un BootSector.
> 
> Tu sera ravis d'apprendre que chaque partition, possède un 
> BootSector ! Qui permet d'avoir du code, et une description 
> de la partition.
> 
> Bon, tu vas me dire, le MBR est les BootSectors sur 512 
> octets (Taille 
> d'un secteur de disque dur), c'est pas gros.
> Réponse : Le premier cylindre du disque dur est vide... Ce 
> qui fait 63 
> secteur sur un disque conventionnel.
> La chose se répète de la même manière pour chaque partition ! Ça fait 
> donc presque 8ko d'utilisable.
> 
> Notons bien que le bios lui, ne charge que le MBR, et donc 
> seulement 512 
> octets.
> 
> Dans le fonctionnement du DOS, le MBR, qui est executé après 
> avoir été 
> chargé par le BIOS, s'occupe de lire la table des partitions, qui se 
> trouve donc en mémoire, puisqu'elle fait partit du MBR.
> Le but est de trouver la partition "Active". Celle qui possède cet 
> attribut dans la table, sera la partition à "Démarrer". Le 
> MBR, charge 
> le BootSector de cette partition. Il le charge d'ailleur à 
> l'adresse 0x7C0.
> 
> Bien sur, le petit code du MBR ne s'écrasera pas lui même, il aura 
> copier sont code un peux plus haut en mémoire.
> 
> Après avoir chargé le BootSector de la partition "Active", le MBR 
> l'execute. C'est à dire qu'on entendra plus jamais parlé du MBR, le 
> processeur continuant sur le BootSector.
> 
> Et que fait le BootSector de la partition ? Et bien dans le cas de 
> Windows par exemple, il va se débrouiller pour charger le système 
> d'exploitation. (Je pourrais encore en raconter, mais c'est suffisant 
> pour comprendre ^^).
> 
> Je ne parlais pas beaucoup de LILO, je ne l'utilise pas, et ne le 
> connais pas. LILO, est étalé sur plusieurs secteurs au début 
> du disque, 
> juste après le MBR. Le MBR, installé par LILO, s'occupe de charger le 
> nombres de secteurs voulut (Dans la limite des 62 possibles). Il y a 
> assez de place pour pouvoir contenir des noms et paramètres associé. 
> Pour windows, LILO chargement le BootSector de la partition 
> correspondante, pour linux, c'est différent. Il n'y pas de BootSector 
> linux (enfin si mais bon... il charge linux 1 ^^).
> Dans le cas de linux, LILO parcoure la partition, et charge le noyau 
> directement ainsi qu'un système de fichier virtuel si demandé 
> (Initrd).
> 
> Tu comprend donc que pour LILO, la notion de partition 'Active' n'as 
> aucun sens.
> Tu remarque aussi, que tu peux tout ta fait mettre un LILO dans un 
> BootSector, et t'amuser à chaîner des LILO :)
> 
> Bien, maintenant, passons à GRUB (Grand Unified Boot). GRUB 
> est un mini OS. Il possède sont MBR (Stage 1), qui va charger 
> du code dans les 62 
> secteurs suivant, tout comme LILO.
> Pour GRUB, c'est le Stage 1.5. La ressemblance avec LILO 
> s'arrête là. Dans ce code chargé, se trouve le numéro de 
> disque et le numéro d'une 
> partition, contenant un dossier particulier à GRUB. (Souvant 
> /boot/grub).
> 
> Dedans, ce trouve un petit noyau, que GRUB vas charger. C'est 
> le stage 2. Toujours dans ce même dossier, nous pouvons 
> trouver un fichier de 
> configuration de grub (Souvant menu.lst).
> Grub charge dynamiquement sa configuration dans ce fichier.
> 
> Grub peux aussi fonctionner en interactif, et il est possible 
> d'entrer 
> de commande de boot à la volée, de mettre un mot de passe, un image...
> 
> Ensuite, c'est un peux comme pour LILO, GRUB peux charge un 
> BootSector, 
> un noyeau linux, un inird... Mais aussi des modules, ceci étant 
> notamment utilisé par le Hurd.
> 
> Notons que le noyau linux supporte le standard GRUB. Ce qui veut dire 
> que grub trouvera dans les 8 premiers ko du noyau, des 
> informations de 
> chargement comme l'adresse mémoire, la position où placer la 
> pile etc. 
> Alors que dans LILO, il faudra entrer les adresses manuellement...
> 
> Ah, et juste une dernière chose, on peux très bien faire sont propre 
> MBR, qui ne charge pas de partition 'Active' ou même qui ne 
> fasse rien 
> du tout... ou encore, des choses vilaines. (J'ai eu une fois 
> l'occasion 
> de punir un camarade de classe en cours d'informatique O:-) ).
> 
> Quelque possibilités :
> 
> MBR_DOS -> BootSector -> OS
> MBR_GRUB -> BootSector -> OS
> MBR_GRUB -> BootSector_GRUB -> BootSector_GRUB ...
> 
> À noter que le Loader de Windows, depuis les version 2000, 
> est capable 
> de charger au choix plusieurs BootSector. Il est ainsi 
> possible de faire : MBR_DOS -> BootSector > LoaderMS -> 
> BootSector_GRUB
> 
> Bon, t'aura compris, quasiment toute les combinaison sont possible.
> 
> J'espère avoir été assez clair ;)
> Si tu veux plus de précisions, je reste à ta disposition.
> 
> @+
> 
> Bombela



Salut,

Parfait, clair net et précis, j'ai tous pigé !
je n'arrivais pas a comprendre, il faut que je me planche un peut plus sur
ces subtilités du partitionnement.

Un grand MERCI d'avoir pris le temps de me repondre aussi précisement. 

A++

Romain



Plus d'informations sur la liste de diffusion Sos