Parte del processo di installazione di syslinux comporta l'installazione mbr.bin
sul record di avvio principale di un dispositivo.
dd \
conv=notrunc \
bs=440 \
count=1 \
if=/usr/lib/syslinux/mbr/mbr.bin \
of=/dev/sdX
Se ripristino quei byte dal disco e li confronto con il mbr.bin
file originale , sono identici.
$ sha512sum /usr/lib/syslinux/mbr/mbr.bin
3ba2bd96c7e5d81e...
$ dd bs=440 count=1 if=/dev/sdX | sha512sum
3ba2bd96c7e5d81e...
Fin qui tutto bene! Sembra logico che quei due checksum debbano essere identici.
Grub mi sembra un po 'più misterioso quando provo ad usarlo per realizzare lo stesso comportamento di Syslinux.
Facendo un po 'di svantaggio in dpkg-reconfigure grub-pc
posso vedere che la mia grub
installazione finisce per chiamarlo quando installa un nuovo bootloader ...
grub-install --target=i386-pc --force --no-floppy /dev/sdX
Eseguendo lo stesso grub-install
comando e aggiungendo --verbose
, vedo che grub-install
chiama grub-bios-setup
.
grub-bios-setup \
--verbose \
--force \
--directory='/boot/grub/i386-pc' \
--device-map='/boot/grub/device.map' \
'/dev/sdX'
Osservando alcuni dei sorgenti , penso che grub-bios-setup
sia ciò che è responsabile della scrittura nell'MBR, perché se azzerare i primi 512 byte poi rieseguire grub-bios-setup
, vedo quei byte ripristinare quelli che erano prima di averli azzerati.
Sfortunatamente, non capisco abbastanza bene il codice per capire totalmente da cosa viene scritto grub-bios-setup
.
Ho avuto qualche sospetto. Penso che parte di ciò che è scritto abbia a che fare con boot.img
. In effetti, se confronto determinati byte dal mio settore di avvio e boot.img
sono uguali (nota, il numero totale di byte letti qui è 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...
Hanno somiglianze, ma non sono del tutto uguali. I primi 104
byte differiscono e non riesco a capire quali siano le cause di tale differenza.
Esiste un mbr.bin
tipo di file comparabile per Grub? È vero boot.img
? Grub modifica quindi alcuni di quei byte? Grub sta generando al volo quei byte diversi? Questi byte generati da Grub sono specifici per ciascun sistema e unici ogni volta che Grub li scrive?