Parte do processo de instalação do syslinux envolve a instalação de mbr.bin no registro mestre de inicialização de um dispositivo.
dd \
conv=notrunc \
bs=440 \
count=1 \
if=/usr/lib/syslinux/mbr/mbr.bin \
of=/dev/sdX
Se eu restaurar esses bytes do disco e compará-los ao arquivo mbr.bin original, eles serão idênticos.
$ sha512sum /usr/lib/syslinux/mbr/mbr.bin
3ba2bd96c7e5d81e...
$ dd bs=440 count=1 if=/dev/sdX | sha512sum
3ba2bd96c7e5d81e...
Até aí tudo bem! Parece lógico que esses dois checksums sejam idênticos.
O grub parece um pouco mais misterioso para mim quando tento usá-lo para realizar o mesmo comportamento que o Syslinux.
Ao fazer uma pequena investigação sobre dpkg-reconfigure grub-pc , posso ver que meu grub install acaba chamando isso quando instala um novo gerenciador de inicialização ...
grub-install --target=i386-pc --force --no-floppy /dev/sdX
Ao executar o mesmo comando grub-install e adicionar --verbose , vejo que grub-install chama grub-bios-setup .
grub-bios-setup \
--verbose \
--force \
--directory='/boot/grub/i386-pc' \
--device-map='/boot/grub/device.map' \
'/dev/sdX'
Olhando para algumas das fonte , penso <<> / em> que grub-bios-setup é o responsável por gravar no MBR, porque se eu zerar os primeiros 512 bytes e executar novamente grub-bios-setup , vejo esses bytes revertidos para o que eram antes de zerá-los.
Infelizmente, não entendi bem o código para entender totalmente o que está sendo escrito por grub-bios-setup .
Eu tive alguns palpites. Eu acho que parte do que está escrito tem a ver com boot.img . De fato, se eu comparar certos bytes do meu setor de inicialização e boot.img , eles são os mesmos (note que o número total de bytes lidos aqui é 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...
Eles têm semelhanças, mas não são totalmente iguais. Os primeiros 104 bytes diferem e não consigo entender o que causa essa diferença.
Existe um tipo de arquivo mbr.bin comparável para o Grub? É boot.img ? O Grub então modifica alguns desses bytes? O Grub está gerando esses bytes diferentes on-the-fly? Os bytes gerados pelo Grub são específicos de cada sistema e são únicos sempre que o Grub os escreve?