x86 시스템의 Linux 커널(vmlinuz)의 부트 섹터, bzImage 형식

x86 시스템의 Linux 커널(vmlinuz)의 부트 섹터, bzImage 형식

16진수 뷰어를 사용하여 bzImage 형식의 X86 아키텍처에서 vmlinuz Linux 커널 3.14.28을 살펴봅니다. 이 파일의 부트 섹터는 다음과 같습니다:

여기에 이미지 설명을 입력하세요.

이는 두 개의 파티션, 즉 18.9GB(활성) 크기의 Ext2 파일 시스템이 있는 파티션 1과 내부에 논리 파티션이 없는 확장 파티션을 정의합니다. 이는 Linux 커널이 사용자가 시스템에 이 두 개의 파티션을 생성했다고 가정한다는 의미입니까? Linux 커널이 이 두 파티션을 정의하는 이유는 무엇입니까?

답변1

이 데이터 블록은 주로 Linux가 플로피 디스크에서 부팅되고 부트 로더가 필요하지 않았던 시절부터 유지된 것입니다. 실제로는 부트 섹터이지만 실행 시 리얼 모드 x86 코드는 "부트로더를 사용하십시오. 디스크를 제거하고 재부팅하려면 아무 키나 누르십시오"라고만 말합니다.

끝에 있는 데이터는 파티션 테이블이 아니지만 끝에 있는 공간은 VGA 모드, 루트 장치 및 일부 플래그와 같은 설정을 커널에 전달하는 데 사용됩니다. 이러한 값을 자세히 살펴보면 분할된 테이블로는 의미가 없다는 것을 알 수 있습니다.

그러나 부트 블록은 여전히 ​​어느 정도 중요한 의미를 갖고 있기 때문에 위에서 "주로"라고 말한 것입니다. 파일의 시작 부분은 커널 자체가 자체 부트로더 역할을 할 수 있도록 UEFI 애플리케이션처럼 보이도록 세심하게 설계되었습니다. 파일은 마법 문자열 MZ(DOS .exe와 유사)로 시작하고 PE/COFF 헤더를 포함합니다.

관련 정보