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?