E.2. GRUB

GNU GRUB (GRand Unified Boot loader)은 설치된 운영 체제를 선택할 수 있는 프로그램이거나 또는 시스템 부팅시 읽어지는 커널로 사용자가 커널에 인자를 전달하는 것을 허용합니다.

E.2.1. BIOS 기반 x86 시스템에서 GRUB 및 부팅 프로세스

이 장에서는BIOS-기반 x86 시스템을 부팅할 때 GRUB이 실행하는 구체적 역할에 대하여 논의합니다. 전반적인 부트 프로세스에 관한 내용은 F.2절. “부트 프로세스에 대한 자세한 정보”에서 참조하시기 바랍니다.
다음과 같은 단계에서 GRUB을 메로리로 읽어오게 됩니다:
  1. 단계 1 또는 1차 부트 로더가 BIOS에 의해 MBR[14]로부터 메모리로 적재됩니다. 1차 부트 로더는 MBR의 512바이트의 디스크 공간에 존재하며, 1.5차 또는 2차 부트 로더를 적재하는 기능을 가지고 있습니다.
    BIOS는 파티션 테이블이나 파일 시스템을 읽어올 수 없습니다. 이는 하드웨어를 초기화하고 MBR을 읽어온 뒤 부틍 프로세스를 계속 진행하기 위해 1 단계 부트로더에 전적으로 의존합니다.
  2. 필요한 경우, 1 단계 부트로더를 사용하여 1.5 단계 부트로더를 메모리로 읽어옵니다. 몇몇 하드웨어는 2 단계 부트로더에 도달하기 위해 중간 단계를 필요로 합니다. 이는 /boot/ 파티션이 하드 드라이브의 1024 실린더 헤드 위에 있을 경우에나 또는 LBA 모드를 사용할 때 입니다. 1.5 단계 부트로더는 /boot/ 파티션이나 MBR 및 /boot/의 부분에 있습니다.
  3. 2단계 또는 2차 부트로더를 메모리로 읽어옵니다. 2차 부트로더는 GRUB 메뉴 및 명령 환경을 보여줍니다. 이러한 인터페이스는 사용자가 부팅할 커널이나 운영 체제를 선택하고, 커널에 인수를 전달하거나 또는 시스템 매개 변수를 살펴보는 것을 허용합니다.
  4. 2차 부트로더는 운영 체제나 커널 그리고 /boot/sysroot/ 의 내용을 메모리로 읽어옵니다. 일단 GRUB이 시작할 운영 체제나 커널을 결정하면, 이는 운영체제나 커널을 메모리로 읽어오고 컴퓨터 제어를 해당 운영 체제에 전송합니다.
리눅스를 부팅하기 위해 사용되는 방식은 직접 로딩이라 하며, 이는 부트로더가 운영 체제를 직접 읽어 들이기 때문입니다. 커널과 부트로더 사이에 다른 중간단계가 존재하지 않습니다.
다른 운영 체제에서 사용되는 부트 프로세스는 다를 수 도 있습니다. 예를 들어, Microsoft® Windows® 운영 체제 및 기타 다른 운영 체제는 연쇄 로딩을 사용하여 읽어오게 됩니다. 이러한 방법에서 MBR은 운영 체제가 있는 파티션의 첫번째 섹터로 해당 운영 체제를 실제적으로 부팅하기 위해 필요한 파일을 찾게 됩니다.
GRUB은 직접 및 연쇄 로딩 부팅 방법을 지원하며, 모든 운영 체제를 부팅하게 합니다.

주의

설치 과정에서 Microsoft의 DOS나 Windows 설치 프로그램은 MBR을 완전히 덮어쓰며, 기존의 부트 로더를 지워버립니다. 만약 듀얼부트 시스템을 구성하려 한다면, 먼저 Microsoft의 운영 체제를 설치하는게 가장 좋습니다.


[14] 시스템 BIOS와 MBR에 대한 정보는 F.2.1.1절. “BIOS 기반 x86 시스템 ”를 참조