Un Master Boot Record est composée de 512 octets, les deux derniers octets doivent être 0x55 0xAA. Il reste 510 octets, les entrées de la table de partition sont de 16 octets, au maximum 4 entrées de la table de partition, soit 64 octets. Here est ce à quoi ressemble une entrée de partition.
Il ne reste que 446 octets de code assembleur. Habituellement, les premiers octets sont constitués d'un enregistrement d'identificateur de démarrage, décrivant les données de disque du chargeur de démarrage, comme l'identifiant, l'ID système, pour n'en citer que quelques-uns, puis le BIOS attend le code de démarrage à 0x000: 0x07C00. dans le segment de la mémoire. Voir here pour un exemple de tutoriel sur les chargeurs de démarrage. Il y a un aperçu technique détaillé sur WikiBooks à ce sujet here. La seule chose à laquelle vous devez faire attention, c'est que le code du bootloader ne doit pas dépasser 446 octets sinon les tables de partition seront vissées et donc le message d'erreur du BIOS 'Error. Système d'exploitation manquant »ou similaire!
Rédaction du secteur d'amorçage compilé binaire sur le disque impliquerait une façon désordonnée et dangereuse de visser le plus souvent l'ordinateur, sous Linux, la commande serait similaire à:
# Assume that /dev/hda1 is the first hard disk then...
dd if=mybootldr.bin of=/dev/hda1 bs=512 cnt=1
L'autre façon consiste à utiliser un faible programme d'éditeur de disque de niveau ou même en utilisant le vieux DEBUG.EXE ordinaire (trouvé sur les vieilles disquettes MSDOS) ou même en utilisant FreeDos.
C:\DEBUG.EXE mybootldr.bin
-W 100 0 0 1
-Q
Si je me souviens, DR.DOS (Digital DOS Research) un rival à MS-DOS, utilisé une protection par mot de passe sur le code du chargeur de démarrage avant le démarrage du DR-DOS vers le haut.
Edit: Si vous êtes vraiment curieux, à la façon dont le BIOS cherche 0x0000: 0x7c00, jetez un oeil à ce lien où vous pouvez télécharger l'original du code du BIOS IBM XT here.
Espérons que cela aide, Cordialement, Tom.
Merci Leonidas! :) – iokevins