boot
제가 작업한 대부분의 시스템은 매우 간단하게 디스크를 포맷하기 위해 파티션을 사용합니다 rootfs
. recovery
Windows와 같은 다른 것들도 있지만 swap
저는 간단하게 유지하려고 노력했습니다.
부트로더가 어느 파티션에 있어야 하는지를 지정하는 표준을 읽지 않았습니다. 나는 거기에 있는지에 대해 아무것도 읽은 적이 없습니다가지다부팅 파티션이 됩니다. 물론 파티션을 지정하는 것은 boot
의미가 없습니다. 메모리에 로드되고 첫 번째 단계 부트로더(레거시/UEFI)에 의해 실행되는 일부 파티션만 필요합니다.
그래서 내 질문은: 첫 번째 단계 부트로더가 두 번째 단계 부트로더를 어떻게 찾나요? 할 수 있다:
파티션 테이블이 필요합니까?
디스크(또는 부팅하는 모든 미디어)에서 파티션 테이블을 읽고 각 파티션 테이블에 부팅 가능한 파일이 있는지 확인하시겠습니까?
두 번째 단계의 부트로더가 첫 번째 파티션에 있을 것으로 예상하시나요?
나는 위 목록에서 두 번째 것을 가정하겠지만 그것은 단지 추측일 뿐입니다. 저는 Linux를 기본 OS로 사용하지만 이 초기 부팅 프로세스는 OS 독립적인 것 같습니다.
답변1
레거시 시스템(BIOS)과 UEFI는 매우 다르기 때문에 구별해야 합니다. UEFI가 아닌 PC 또는 레거시 모드에서 실행되는 UEFI PC의 부팅 프로세스는 다음과 같습니다. 먼저 BIOS가 MBR 부팅 섹터를 RAM에 로드하고 부팅 코드 실행을 시작합니다. 부트 섹터의 길이는 512바이트에 불과하고 파티션 테이블도 포함하기 때문에 가장 단순한 파일 시스템의 내부 구조를 이해하는 코드도 부트 섹터에 포함될 수 없습니다. GRUB는 하드 드라이브의 섹터 1-62에 추가 코드를 설치하여 이 문제를 해결합니다. 드라이브의 이 영역은 부트 섹터와 첫 번째 파티션의 시작 부분 사이에 있는 "무인의 땅"입니다. 소위 "Stage 1.5"는 파일 시스템에서 파일을 읽고 GRUB Stage 2 및 /boot 디렉터리에서 구성 파일을 로드할 수 있습니다.
마더보드 플래시 메모리의 펌웨어는 BIOS 초기부터 발전해 왔습니다. BIOS는 고정 장치 세트의 첫 번째 섹터를 읽을 수 있지만 최신 UEFI 시스템은 펌웨어에서 직접 FAT32 파일 시스템을 이해합니다. UEFI 시스템이 부팅되면 먼저 EFI 시스템 파티션을 찾습니다. 시스템 파티션이 포함된 디스크에는 GPT(GUID 파티션 테이블)가 있어야 하며 시스템 파티션은 고정 GUID로 식별됩니다. 시스템 파티션은 펌웨어가 부트로더를 읽고 실행하는 FAT32 파티션이어야 합니다. 대안으로, 로드될 첫 번째 프로그램은 사용자가 실행할 부트 로더(및 해당 운영 체제)를 선택할 수 있는 부팅 관리자일 수도 있습니다. 마더보드의 비휘발성 메모리에 저장된 변수를 사용하여 UEFI를 구성할 수도 있습니다.