Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
la_partie_executable_du_mbr [Le 22/09/2016, 14:21] Nasman [Que se passe-t-il au démarrage d'un PC ?] |
la_partie_executable_du_mbr [Le 20/12/2021, 19:22] (Version actuelle) wiki-corrector-bot passage de http à https sur les liens externes (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892) |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | |||
. | . | ||
{{tag> tutoriel mbr BROUILLON}} | {{tag> tutoriel mbr BROUILLON}} | ||
Ligne 61: | Ligne 62: | ||
J'ai effectué une analyse (partielle) du fonctionnement des différents morceaux mais des parties restent encore nébuleuses. | J'ai effectué une analyse (partielle) du fonctionnement des différents morceaux mais des parties restent encore nébuleuses. | ||
\\ | \\ | ||
- | Le programme utilise des fonctions du bios (seules fonctions disponible à ce stade du démarrage du PC) et je me suis servi de la liste des [[http://www.ctyme.com/intr/int.htm|interruptions]] | + | Le programme utilise des fonctions du bios (seules fonctions disponibles à ce stade du démarrage du PC) et je me suis servi de la liste des [[http://www.ctyme.com/intr/int.htm|interruptions]] |
établies par Ralph Brown. | établies par Ralph Brown. | ||
\\ | \\ | ||
Ligne 90: | Ligne 91: | ||
0000005C 01000000 dd 0x00000001 ; Adresse LBA (valeur basse) où se trouve le secteur suivant de chargement (core.img) | 0000005C 01000000 dd 0x00000001 ; Adresse LBA (valeur basse) où se trouve le secteur suivant de chargement (core.img) | ||
00000060 00000000 dd 0x00000000 ; Valeur haute du qword de l'adresse LBA | 00000060 00000000 dd 0x00000000 ; Valeur haute du qword de l'adresse LBA | ||
- | 00000064 FF db 0xff ; 0xff pour le chargement du noyau à partir du disque dur | + | 00000064 FF db 0xff ; 0xff pour le chargement de core.img sur le disque de boot, si 0x80 premier disque dur, si 0x81 deuxième... |
00000065 FA cli | 00000065 FA cli | ||
Ligne 107: | Ligne 108: | ||
00000081 3CFF cmp al,0xff | 00000081 3CFF cmp al,0xff | ||
00000083 7402 jz 0x87 | 00000083 7402 jz 0x87 | ||
- | 00000085 88C2 mov dl,al ; si non égal à 0xff, sauvegardé dans dl | + | 00000085 88C2 mov dl,al ; si non égal à 0xff, sauvegardé dans dl - si core.img est sur un autre disque |
00000087 52 push dx | 00000087 52 push dx | ||
- | 00000088 BB1704 mov bx,0x417 | + | 00000088 BB1704 mov bx,0x417 ; adresse clavier |
- | 0000008B 802703 and byte [bx],0x3 | + | 0000008B 802703 and byte [bx],0x3 ; teste si une touche shift est activée |
0000008E 7406 jz 0x96 | 0000008E 7406 jz 0x96 | ||
00000090 BE887D mov si,0x7d88 ; pointe sur la chaine "GRUB" | 00000090 BE887D mov si,0x7d88 ; pointe sur la chaine "GRUB" | ||
Ligne 166: | Ligne 167: | ||
0000010D 88F4 mov ah,dh ; 2 bits de poids fort cylindre | 0000010D 88F4 mov ah,dh ; 2 bits de poids fort cylindre | ||
0000010F 40 inc ax ; nb de cylindres | 0000010F 40 inc ax ; nb de cylindres | ||
- | 00000110 894408 mov [si+0x8],ax ; sLa partie qui commence à l'adresse hexa 65 est commune avec le fichier boot.img qui se trouve dans /boot/grub/ | + | 00000110 894408 mov [si+0x8],ax ; sauvegardé en 7c0d |
- | \\ | + | |
- | auvegardé en 7c0d | + | |
00000113 0FB6C2 movzx ax,dl ; copie le numéro maxi de secteurs (x4) | 00000113 0FB6C2 movzx ax,dl ; copie le numéro maxi de secteurs (x4) | ||
00000116 C0E802 shr al,0x2 ; numéro maxi de secteurs=nb secteurs | 00000116 C0E802 shr al,0x2 ; numéro maxi de secteurs=nb secteurs | ||
Ligne 206: | Ligne 205: | ||
0000015E B90001 mov cx,0x100 | 0000015E B90001 mov cx,0x100 | ||
00000161 8EDB mov ds,bx ; charge le segment du buffer | 00000161 8EDB mov ds,bx ; charge le segment du buffer | ||
- | 00000163 31F6 xor si,si ; ds:di pointe sur 7000:0000 | + | 00000163 31F6 xor si,si ; ds:si pointe sur 7000:0000 |
00000165 BF0080 mov di,0x8000 | 00000165 BF0080 mov di,0x8000 | ||
00000168 8EC6 mov es,si ; es:di pointe sur 0000:8000 | 00000168 8EC6 mov es,si ; es:di pointe sur 0000:8000 | ||
Ligne 276: | Ligne 275: | ||
\\ | \\ | ||
- | * **(fr)** [[http://fr.wikipedia.org/wiki/Master_boot_record]] | + | * **(fr)** [[https://fr.wikipedia.org/wiki/Master_boot_record]] |
- | * **(fr)**[[http://fr.wikipedia.org/wiki/Partition_de_disque_dur]] | + | * **(fr)**[[https://fr.wikipedia.org/wiki/Partition_de_disque_dur]] |
- | * [[http://forum.ubuntu-fr.org/viewtopic.php?id=390336]] sur le forum ubuntu-fr | + | * [[https://forum.ubuntu-fr.org/viewtopic.php?id=390336]] sur le forum ubuntu-fr |
- | * **(fr)**[[http://fr.wikipedia.org/wiki/Logical_block_addressing]] | + | * **(fr)**[[https://fr.wikipedia.org/wiki/Logical_block_addressing]] |