Une partie du syslinux le processus d'installation consiste à installer mbr.bin
à l'enregistrement de démarrage principal d'un périphérique.
dd \
conv=notrunc \
bs=440 \
count=1 \
if=/usr/lib/syslinux/mbr/mbr.bin \
of=/dev/sdX
Si je restaure ces octets à partir du disque, et que je les compare à l'original mbr.bin
ils sont identiques.
$ sha512sum /usr/lib/syslinux/mbr/mbr.bin
3ba2bd96c7e5d81e...
$ dd bs=440 count=1 if=/dev/sdX | sha512sum
3ba2bd96c7e5d81e...
Jusqu'à présent, tout va bien ! Il semble logique que ces deux sommes de contrôle soient identiques.
Grub me semble un peu plus mystérieux lorsque j'essaie de l'utiliser pour accomplir le même comportement que Syslinux.
En faisant un peu de recherche sur dpkg-reconfigure grub-pc
Je peux voir que mon grub
L'installateur finit par appeler ça quand il installe un nouveau chargeur de démarrage...
grub-install --target=i386-pc --force --no-floppy /dev/sdX
En exécutant ce même grub-install
et en ajoutant --verbose
Je vois que grub-install
appelle grub-bios-setup
.
grub-bios-setup \
--verbose \
--force \
--directory='/boot/grub/i386-pc' \
--device-map='/boot/grub/device.map' \
'/dev/sdX'
En regardant certains des fuente , I pensez à que grub-bios-setup
est ce qui est responsable de l'écriture dans le MBR, parce que si je mets à zéro les 512 premiers octets puis relance grub-bios-setup
je vois que ces octets reviennent à ce qu'ils étaient avant que je les réduise à zéro.
Malheureusement, je ne comprends pas assez bien le code pour comprendre totalement ce que est en cours d'écriture par grub-bios-setup
.
J'avais quelques pressentiments. I pensez à une partie de ce qui est écrit a trait à boot.img
. En effet, si je compare certains octets de mon secteur d'amorçage et boot.img
ils sont identiques (notez que le nombre total d'octets lus ici est de 1,5 million. 440
).
$ skip=104 count=336; \
sudo dd if=/boot/grub/i386-pc/boot.img \
skip=$skip bs=1 count=$count 2>/dev/null | sha512sum ; \
sudo dd if=/dev/sdX \
skip=$skip bs=1 count=$count 2>/dev/null | sha512sum
e531a81fd3eedb324a9...
e531a81fd3eedb324a9...
Ils ont des similitudes, mais ils ne sont pas entièrement le même. Le premier 104
Les octets diffèrent, et je n'arrive pas à comprendre ce qui cause cette différence.
Y a-t-il un comparable mbr.bin
une sorte de fichier pour Grub ? Est-ce que c'est boot.img
? Est-ce que Grub modifie ensuite certains de ces octets ? Est-ce que Grub génère ces octets différents à la volée ? Ces octets générés par Grub sont-ils spécifiques à chaque système, et uniques à chaque fois que Grub les écrit ?