syslinux 설치 과정 에는 mbr.bin
장치의 마스터 부트 레코드에 설치 하는 과정이 포함됩니다 .
dd \
conv=notrunc \
bs=440 \
count=1 \
if=/usr/lib/syslinux/mbr/mbr.bin \
of=/dev/sdX
디스크에서 해당 바이트를 복원하고 원본 mbr.bin
파일 과 비교하면 동일합니다.
$ sha512sum /usr/lib/syslinux/mbr/mbr.bin
3ba2bd96c7e5d81e...
$ dd bs=440 count=1 if=/dev/sdX | sha512sum
3ba2bd96c7e5d81e...
여태까지는 그런대로 잘됐다! 논리적으로 두 체크섬이 동일해야합니다.
Grub을 사용하여 Syslinux와 동일한 동작을 수행 할 때 Grub은 좀 더 신비한 것 같습니다.
약간의 sleuthing을 수행하면 새로운 부트 로더를 설치할 때 dpkg-reconfigure grub-pc
내 grub
설치가 이것을 호출 한다는 것을 알 수 있습니다 ...
grub-install --target=i386-pc --force --no-floppy /dev/sdX
동일한 grub-install
명령을 실행하고 추가하면 --verbose
해당 grub-install
호출을 볼 수 grub-bios-setup
있습니다.
grub-bios-setup \
--verbose \
--force \
--directory='/boot/grub/i386-pc' \
--device-map='/boot/grub/device.map' \
'/dev/sdX'
의 일부를 보면 소스 , 내가 생각하는 그것이 grub-bios-setup
내가 처음 512 바이트를 제로 경우 다음 다시 실행 때문에 MBR 쓰기에 대한 책임이 무엇인가 grub-bios-setup
, 나는 그 바이트가 다시 내가 그들을 제로 아웃하기 전에 그들이 무엇인지에 복귀 참조하십시오.
불행히도에 의해 작성된 내용 을 완전히 이해하기에 충분한 코드를 이해하지 못합니다 grub-bios-setup
.
나는 몇 가지 목을 가지고 있었다. 나는 글의 일부가와 관련이 있다고 생각boot.img
합니다. 실제로 부트 섹터의 특정 바이트와를 비교 boot.img
하면 동일합니다 (여기서 읽은 총 바이트 수는입니다 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...
그것들은 유사하지만 완전히 동일 하지는 않습니다 . 첫 번째 104
바이트가 다르므로 그 차이를 일으키는 원인을 이해할 수 없습니다.
mbr.bin
Grub 과 비슷한 종류의 파일이 있습니까? 그렇 boot.img
습니까? 그런 다음 Grub이 해당 바이트 중 일부를 수정합니까? Grub이 즉시 다른 바이트를 생성합니까? Grub에 의해 생성 된 thoes 바이트는 각 시스템에 따라 다르며 Grub이 작성할 때마다 고유합니까?