Parte de syslinuxproceso de instalaciónImplica la instalación mbr.bin
en el registro de arranque maestro de un dispositivo.
dd \
conv=notrunc \
bs=440 \
count=1 \
if=/usr/lib/syslinux/mbr/mbr.bin \
of=/dev/sdX
Si restauro esos bytes del disco y los comparo con el mbr.bin
archivo original, son idénticos.
$ sha512sum /usr/lib/syslinux/mbr/mbr.bin
3ba2bd96c7e5d81e...
$ dd bs=440 count=1 if=/dev/sdX | sha512sum
3ba2bd96c7e5d81e...
¡Hasta ahora, todo bien! Parece lógico que esas dos sumas de verificación sean idénticas.
Grub me parece un poco más misterioso cuando intento usarlo para lograr el mismo comportamiento que Syslinux.
Al investigar un poco, dpkg-reconfigure grub-pc
puedo ver que mi grub
instalación termina llamando a esto cuando instala un nuevo gestor de arranque...
grub-install --target=i386-pc --force --no-floppy /dev/sdX
Al ejecutar el mismo grub-install
comando y agregar --verbose
, veo que grub-install
llama grub-bios-setup
.
grub-bios-setup \
--verbose \
--force \
--directory='/boot/grub/i386-pc' \
--device-map='/boot/grub/device.map' \
'/dev/sdX'
Mirando algunos de losfuente, Ipensareso grub-bios-setup
es lo que es responsable de escribir en el MBR, porque si pongo a cero los primeros 512 bytes y luego los vuelvo a ejecutar grub-bios-setup
, veo que esos bytes vuelven a ser lo que eran antes de que los pusiera a cero.
Desafortunadamente, no entiendo el código lo suficientemente bien como para comprenderlo totalmente.quéestá siendo escrito por grub-bios-setup
.
Tuve algunas corazonadas. Ipensarparte de lo que está escrito tiene que ver con boot.img
. De hecho, si comparo ciertos bytes de mi sector de arranque y boot.img
, son iguales (tenga en cuenta que el número total de bytes leídos aquí es 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...
Tienen similitudes, pero no lo son.enteramentelo mismo. Los primeros 104
bytes difieren y no puedo entender qué causa esa diferencia.
¿Existe un mbr.bin
tipo de archivo comparable para Grub? Lo es boot.img
? ¿Grub modifica entonces algunos de esos bytes? ¿Grub genera esos bytes diferentes sobre la marcha? ¿Esos bytes generados por Grub son específicos de cada sistema y únicos cada vez que Grub los escribe?
Respuesta1
Sí, boot.img
se escribe en los primeros 440 bytes del MBR.boot.img
contiene un "Bloque de parámetros del BIOS", que contiene datos que dependen del sistema en el que está instalado. Estos datos se escriben en BPM cuando se instala Grub.Aquíes el código fuente.
Por cierto, no dedicaría mucho tiempo a GRUB. Es probable que este código no se ejecute en PC nuevas en un par de años. Intel planea deshacerse del modo BIOS heredado para 2020.