F.2. 부트 프로세스에 대한 자세한 정보

부트 프로세스를 시작하는 방법은 사용되고 있는 하드웨어 플랫폼에 따라 다양합니다. 하지만, 일단 커널이 발견되어 부트 로더에 의해 읽혀지면, 기본 부트 프로세스는 모든 아키텍쳐에서 동일합니다. 이 장에서는 x86 아키텍쳐에 중점을 두어 설명하겠습니다.

F.2.1. 펌웨어 인터페이스

F.2.1.1. BIOS 기반 x86 시스템

BIOS (Basic Input/Output System)는 펌웨어 인터페이스로 부트 프로세스의 첫 번째 단계를 제어할 뿐 만 아니라 주변 장치에 최저 수준의 인터페이스를 제공합니다. BIOS가 탑재된 x86 시스템에서 프로그램은 읽기 전용으로 작성되며 영구적 메모리는 항상 사용 가능합니다. 시스템을 부팅할 때 프로세서는 BIOS 프로그램에 대한 마지막 시스템 메모리 부분을 살펴보고 이를 실행합니다.
일단 로드되면 BIOS는 시스템을 체크하고, 주변장치를 검색하고 검사하며, 그 후 시스템을 부팅하기에 적절한 장치를 찾습니다. 보통, 이는 광학 드라이버나 USB에 부팅 가능한 매체가 있는지 검사하고, 그 후, 적절한 것을 찾지 못하면, 시스템의 하드 드라이브를 체크합니다. 대부분의 경우 부팅시 드라이브를 찾는 순서는 BIOS 설정으로 조정할 수 있습니다. 그리고, BIOS는 주 IDE 버스의 마스터 IDE 장치를 검사하거나 부팅 플래그 설정을 갖는 SATA 장치를 검사합니다. 그 후, BIOS는 그 장치의 첫번째 섹터인 마스터 부트 레코드(MBR: Master Boot Record)에 있는 프로그램을 로드합니다. MBR은 512바이트에 불과하고, 부트 로더라는 장치를 부팅하는 데 필요한 장치 코드 지시 사항과 파티션 테이블이 들어있습니다. BIOS가 부트 로더 프로그램을 찾아서 로드한 다음에는, 부트 프로세스에게 제어를 넘깁니다.
첫 번째 단계의 부트 로더는 MBR 상에 있는 소형 컴퓨터 코드 바이너리입니다. 이것의 유일한 작업은 두번째 단계의 부트로더(GRUB)의 위치를 찾아서, 그것의 첫 부분을 메모리로 읽어오는 것입니다.

F.2.1.2. UEFI 기반 x86 시스템

UEFI (Unified Extensible Firmware Interface)은 BIOS와 같이 부트 프로세스를 제어 (부트 서비스를 통해)하기 위해 고안되었으며 시스템 펌웨어와 운영 체제 간의 (런타임 서비스를 통해) 인터페이스를 제공합니다. BIOS와는 다르게 이는 CPU와는 독릭적인 자체적 아키텍처 및 장치 드라이버를 특징으로 합니다. UEFI는 파티션을 마운트할 수 있으며 특정 파일 시스템을 읽을 수 있습니다.
x86 컴퓨터에 UEFI 부트가 탑재되어 있을 때, 인터페이스는 ESP (EFI System Partition)로 표시된 GUID (globally unique identifier)를 사용하여 레이블된 파티션의 시스템 스토리지를 검색합니다. 이 파티션에는 EFI 아키텍처에 대해 컴파일된 어플리케이션이 들어있으며, 유틸리티 소프트웨어 및 운영 체제에 대한 부트 로더가 포함되어 있을 수 있습니다. UEFI 시스템에는 시스템을 디폴트 설정에서 부팅하거나 사용자에게 부팅할 운영 체제를 선택할 수 있게 하는 EFI 부팅 관리자가 들어 있습니다. 부트로더를 선택하면 수동이나 자동으로 UEFI는 이를 메모리로 읽어와서 부트 프로세스의 제어를 넘깁니다.