
내가 아는 것은 다음과 같습니다.
시작 시 BIOS는 다음 순서를 따릅니다.
1. POST(Power-On Self-Test)
2. 비디오 카드(칩)의 BIOS를 감지하고 해당 코드를 실행하여 비디오 하드웨어를 초기화합니다.
3. 다른 장치 BIOS를 감지하고 초기화 기능을 호출합니다
. 4. BIOS 시작 화면을
표시합니다. 5. 간단한 메모리 테스트를 수행합니다(시스템에 메모리가 얼마나 있는지 확인).
6. 메모리 및 드라이브 매개변수 설정
7. 플러그 및 구성 재생 장치(기존 PCI 버스 장치)
8. 리소스 할당(DMA 채널 및 IRQ)
9. 부팅 장치 식별
BIOS가 부팅 장치(일반적으로 부팅 가능한 디스크로 태그가 지정된 여러 디스크 중 하나)를 식별하면 해당 장치의 블록 0을 메모리 위치 0x7c00으로 읽어 그곳으로 점프합니다.
그러나 그 후에는 어떻게 됩니까? 즉, 이 단계에서 BIOS가 부트로더에 제어권을 어떻게 부여합니까??
답변1
위 게시물에서 언급했듯이 BIOS는 단순히 0x7C00으로의 점프 명령을 실행하여 부트로더에 제어권을 부여합니다.
부팅할 수 없는 장치의 처음 2바이트(및 바이트 511, 512의 55aa)에 INT 18 명령(0xCD 0x18)이 있을 수 있으며 이로 인해 BIOS가 부팅 순서의 다음 장치로 이동하게 됩니다.
답변2
0x7C00을 언급하셨으니 저는 MBR 부팅에 집중하겠습니다(GPT는 다른 거래입니다).
말씀하신 대로 BIOS가 장치가 부팅 가능하다고 판단하면(즉, 첫 번째 섹터의 마지막 2바이트가 0x55AA임) 디스크의 첫 번째 섹터를 읽어 0x7C00에서 시작하는 메모리에 로드합니다. 점프 명령을 내리면 CPU는 거기에 있는 모든 코드를 실행하기 시작합니다.
다음에 무엇을 로드하고 실행할지 파악하는 것은 부트로더의 몫입니다. 로드 및 다음 단계로 점프하는 코드는 첫 번째 섹터에 남아 있는 510바이트에 맞아야 하며 하드 드라이브에도 파티션 테이블이 있기 때문에 실제로는 적습니다.
추가 자료:부팅 순서,나만의 부트로더 롤링하기