bzImage 형식을 사용하는 x86 시스템의 Linux 커널(vmlinuz)의 부트 섹터

bzImage 형식을 사용하는 x86 시스템의 Linux 커널(vmlinuz)의 부트 섹터

HEX 뷰어를 사용하여 bzImage 형식의 X86 아키텍처에서 vmlinuz Linux 커널 3.14.28을 보고 있습니다. 파일의 부트 섹터는 다음과 같습니다:

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

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

답변1

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

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

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

관련 정보