확인하고 싶어요core.img
MBR과 첫 번째 파티션의 시작 부분 사이에 위치합니다 /dev/sda1
.
사용
sudo dd bs=512 if=/dev/sda skip=512 count=1540 | hexdump -C
/sda1
참조를 볼 수 있습니다 .
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000c0400 00 e0 3f 00 00 1a ff 00 4c c1 0c 00 96 a3 21 00 |..?.....L.....!.|
000c0410 ed d7 3f 00 00 00 00 00 02 00 00 00 02 00 00 00 |..?.............|
000c0420 00 80 00 00 00 80 00 00 00 20 00 00 12 11 ac 5e |......... .....^|
000c0430 70 30 ac 5e 47 00 ff ff 53 ef 01 00 01 00 00 00 |p0.^G...S.......|
000c0440 a6 15 01 5c 00 00 00 00 00 00 00 00 01 00 00 00 |...\............|
000c0450 00 00 00 00 0b 00 00 00 00 01 00 00 3c 00 00 00 |............<...|
000c0460 42 02 00 00 6b 04 00 00 e6 59 c6 2c f6 f1 4e 6f |B...k....Y.,..No|
000c0470 b4 c4 ea 0f 76 73 e4 46 00 00 00 00 00 00 00 00 |....vs.F........|
000c0480 00 00 00 00 00 00 00 00 2f 73 64 61 31 00 00 00 |......../sda1...|
000c0490 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000c04c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 fc 03 |................|
000c04d0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000c04e0 08 00 00 00 00 00 00 00 00 00 00 00 b0 a3 c5 a6 |................|
000c04f0 c6 67 43 54 92 58 c9 42 d2 f9 21 0d 01 01 00 00 |.gCT.X.B..!.....|
000c0500 0c 00 00 00 00 00 00 00 a6 15 01 5c 0a f3 02 00 |...........\....|
000c0510 04 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 |................|
000c0520 00 80 78 00 00 80 00 00 00 80 00 00 00 00 79 00 |..x...........y.|
000c0530 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000c0540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 |................|
000c0550 00 00 00 00 00 00 00 00 00 00 00 00 20 00 20 00 |............ . .|
000c0560 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000c0570 00 00 00 00 04 01 00 00 a7 53 a4 1f 00 00 00 00 |.........S......|
000c0580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000c07f0 00 00 00 00 00 00 00 00 00 00 00 00 79 1d 94 d7 |............y...|
000c0800
이것도 일부인가요 core.img
?
MBR과 같은 매직 넘버가 있었으면 좋겠지 만 그것이 있는지 55 aa
에 대한 언급을 찾을 수 없습니다 .core.img
저는 uname -m
x86_64를 제공하는 GRUB 2.02를 사용하고 있습니다.
답변1
글쎄, 더 이상 지식이 없다고 가정하면 원시 데이터에서 검색할 수 있습니다.
찾아야 할 몇 가지 패턴(및 해당 바이트 오프셋):
# strings -n 6 -t d /boot/grub/i386-pc/core.img
283 loading
306 Error
2622 RBRPQR
3689 LH%N("
4248 9dzj~)>
...
부팅 드라이브에서 동일한 검색을 반복합니다.
# strings -n 6 -t d /dev/sda | grep -B 6 -F '9dzj~)>'
395 Hard Disk
410 Error
795 loading
818 Error
3134 RBRPQR
4201 LH%N("
4760 9dzj~)>
--
2239165876 gcry_mpi_invm
2239165890 _gcry_mpi_alloc
2239168795 loading
2239168818 Error
2239171134 RBRPQR
2239172201 LH%N("
2239172760 9dzj~)>
와, 이게 뭐야?
우리가 찾고 있는 문자열은 파일의 9dzj~)>
바이트 오프셋에 있습니다. 내 부팅 드라이브의 바이트 오프셋에 일치하는 항목이 있습니다. 실제로 이것은 정확히 동일한 오프셋 + 512바이트이므로 볼 수 있습니다. 제 예에서는 실제로 섹터 오프셋에 있습니다. 이 예의 부팅 드라이브는 여전히 이전 DOS 파티션 테이블을 사용합니다.4248
core.img
4760
core.img
바이트 오프셋의 두 번째 일치 항목 은 파티션의 일반 파일 2239171134
입니다 ./boot
다른 기계에서 동일한 운동을 수행하십시오.
몇 가지 패턴을 찾으십시오 core.img
.
# strings -n 6 -t d /boot/grub/i386-pc/core.img | head -n 6
307 loading
330 Error
2638 RBRPQR
3677 N8yf>W
4228 ;E~T\4
4367 8aDk B
grep
부팅 드라이브에 있는 다음 중 하나에 대해:
# strings -n 6 -t d /dev/vda | grep -B 6 -F ';E~T\4'
1046494 &{$|zO.
1047463 Y 'lg4
1048883 loading
1048906 Error
1051214 RBRPQR
1052253 N8yf>W
1052804 ;E~T\4
--
141418559 normal
141418574 normal
141488435 loading
141488458 Error
141490766 RBRPQR
141491805 N8yf>W
141492356 ;E~T\4
오프셋은 512바이트보다 약간 크므로 결과는 1052804-4228 = 1048576 = 1MiB입니다. 이유는 무엇입니까? 이 드라이브는 GPT이므로 파티션 bios_grub
오프셋은 1MiB입니다.
# parted /dev/vda unit b print
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 20401094656B
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name Flags
1 1048576B 2097151B 1048576B grub bios_grub
...바로 core.img
시작 부분에:
# cmp /boot/grub/i386-pc/core.img /dev/vda1
/boot/grub/i386-pc/core.img /dev/vda1 differ: byte 501, line 7
# cmp -l /boot/grub/i386-pc/core.img /dev/vda1
501 2 1
502 0 10
509 62 145
529 0 33
530 0 146
cmp: EOF on /boot/grub/i386-pc/core.img after byte 26085
따라서 26080바이트와 core.img
. \영형/
core.img
찾은 파일이 /boot
실제로 설치된 파일이 아닌 경우 이 연습이 실패할 수 있습니다. 일부 설치 CD는 다른 버전의 GRUB를 설치합니다. 일부 멀티부팅 시스템이나 새로 설치가 아닌 업데이트는 파일 시스템에 설치된 것과 매우 다른 버전의 GRUB를 사용할 수 있습니다( grub-install
디스크에서 실제로 GRUB를 업데이트하기 위해 다시 실행하지 않는 경우).