부팅 가능한 컴팩트 플래시에서 GRUB 2단계가 어디에 있는지 이해하려고 합니다. 다음은 컴팩트 플래시의 MBR(처음 512바이트) 이미지에 대해 실행되는 파일 명령의 출력입니다.
2단계 주소는 0x2000 또는 8192 십진수이며 이는 섹터 16(섹터당 8192바이트/512바이트)에 배치됩니다.
부트로더의 두 번째 단계는 VBR 또는 PBR의 부팅 가능한 파티션에 있어야 한다고 생각합니다. 이 경우 주소는 0x100000이 될 것으로 예상됩니다. 이는 섹터 2048에서 부팅 가능한 파티션의 시작 부분입니다. (2048개 섹터 x 512바이트 = 1048576 = 0x100000)
그러면 아래 출력에서 2단계 주소 0x2000과 2단계 세그먼트 0x200은 무엇을 의미합니까?
[centos@centos6 ~]$ file SQFlash_MBR
SQFlash_MBR: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3,
stage2 address 0x2000, stage2 segment 0x200;
partition 1: ID=0x83, active, starthead 1, startsector 2048, 1880064 sectors, code offset 0x48
[centos@centos6 ~]$
답변1
출력에 stage1
및 가 언급되어 있으므로 stage2
여기서는 GRUB 레거시(즉, GRUB 버전 0.97 이하)에 대해 이야기하고 있습니다. 최신 버전에는 "핵심 이미지"와 모듈 세트가 있습니다.
stage2 address
그리고 stage2 segment
그들이 참조하는 디스크 섹터를 참조하지 마십시오.메모리주소 2단계가 로드됩니다. 이 주소는 8086 호환 모드("리얼 모드")에서 x86 프로세서가 사용하는 세그먼트:오프셋 형식입니다.
이는 GRUB 레거시이므로 GRUB가 단일 32비트 값으로 컴팩트 플래시에 설치되면 GRUB이 읽을 다음 디스크 블록의 번호가 MBR 코드에 포함됩니다. MBR은 블록 #0이고 GRUB이 읽을 다음 블록은 일반적으로 블록 #1입니다. 여기에는 다음 단계에서 읽을 디스크 블록의 순서를 정의하는 GRUB 블록 목록이 포함됩니다. 다음 단계는 "stage1.5"(단일 읽기 전용 파일 시스템 드라이버) 또는 전체 "stage2"일 수 있습니다.
stage1.5를 사용하는 경우 (디스크, 파티션) 식별자 + 경로 이름을 차례로 포함하여 특정 파티션의 파일 시스템에서 stage2의 위치를 일반 파일로 식별합니다. 디스크 부분은 생략될 수 있으며, 이 경우 디스크는 stage1.5 구성 요소를 포함하는 동일한 디스크로 간주됩니다. 일반적으로 별도의 파티션을 사용 /grub/stage2
하거나 루트 파일 시스템의 일반 디렉터리를 사용 하는 경우 경로 이름은 ./boot
/boot/grub/stage2
/boot
표시된 정보만으로는 file
다음 단계가 어디에 있는지 알아내기에는 충분하지 않습니다. 이를 찾으려면 목록 블록의 내용을 차단해야 합니다.