GRUB2 부트로더란 무엇이며 왜 중요할까요?
GRUB2(GRand Unified Bootloader version 2)는 리눅스 시스템을 포함한 많은 운영체제에서 사용되는 표준 부트로더입니다. 컴퓨터 전원을 켰을 때 운영체제를 시작하는 역할을 담당하며, 멀티 부팅 환경을 구성할 때 특히 중요합니다. 즉, GRUB2가 없으면 컴퓨터는 어떤 운영체제를 시작해야 할지 알 수 없습니다.
GRUB2는 이전 버전인 GRUB 레거시보다 훨씬 강력하고 유연하며, 모듈화된 구조와 스크립트 언어 지원으로 인해 사용자 정의가 용이합니다. UEFI (Unified Extensible Firmware Interface) 시스템과 BIOS (Basic Input/Output System) 시스템 모두를 지원하며, 다양한 파일 시스템과 디스크 레이아웃을 처리할 수 있습니다.
GRUB2의 기본 작동 원리
컴퓨터를 켜면 BIOS 또는 UEFI 펌웨어가 먼저 실행됩니다. 펌웨어는 부팅 가능한 장치(일반적으로 하드 드라이브)를 찾고, 해당 장치의 부트 섹터에 있는 코드를 실행합니다. 이 부트 섹터에는 GRUB2의 첫 번째 단계인 “core.img”가 위치하며, 이 파일은 GRUB2의 핵심 기능을 로드하고 GRUB2 메뉴를 표시하는 데 필요한 파일 시스템 드라이버를 포함합니다.
GRUB2 메뉴에서는 설치된 운영체제 목록과 복구 모드 옵션 등을 선택할 수 있습니다. 선택된 운영체제의 커널이 메모리에 로드되고, 필요한 초기화 과정을 거쳐 운영체제가 시작됩니다.
GRUB2 설정 파일 이해하기
GRUB2의 주요 설정 파일은 /boot/grub/grub.cfg
입니다. 하지만 이 파일은 직접 편집하지 않는 것이 좋습니다. 왜냐하면 이 파일은 GRUB2가 업데이트될 때마다 자동으로 생성되기 때문입니다. 대신, /etc/default/grub
파일을 편집하고 update-grub
명령어를 실행하여 grub.cfg
파일을 업데이트해야 합니다.
/etc/default/grub
파일에는 GRUB2의 전반적인 동작을 제어하는 변수들이 정의되어 있습니다. 예를 들어, 기본 부팅 운영체제, 메뉴 표시 시간, 커널 파라미터 등을 설정할 수 있습니다.
다음은 /etc/default/grub
파일의 예시입니다.
GRUB_DEFAULT=0 GRUB_TIMEOUT_STYLE=menu GRUB_TIMEOUT=10 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDLINE_LINUX=""
GRUB_DEFAULT
: 기본 부팅 운영체제를 지정합니다. 0은 첫 번째 항목, 1은 두 번째 항목을 의미합니다. “saved”로 설정하면 이전 부팅 항목을 기억합니다.
GRUB_TIMEOUT_STYLE
: 메뉴 표시 스타일을 지정합니다. “menu”는 메뉴를 항상 표시하고, “hidden”은 메뉴를 숨깁니다.GRUB_TIMEOUT
: 메뉴 표시 시간을 초 단위로 지정합니다.GRUB_DISTRIBUTOR
: 배포판 이름을 설정합니다.GRUB_CMDLINE_LINUX_DEFAULT
: 커널에 전달할 기본 파라미터를 지정합니다. “quiet splash”는 부팅 메시지를 숨기고 스플래시 화면을 표시합니다.GRUB_CMDLINE_LINUX
: 커널에 전달할 추가 파라미터를 지정합니다.
GRUB2 설정 변경 및 업데이트 방법
/etc/default/grub
파일을 편집기로 엽니다. (예:sudo nano /etc/default/grub
)- 필요한 설정을 변경합니다.
- 파일을 저장하고 닫습니다.
- 터미널에서
sudo update-grub
명령어를 실행합니다. 이 명령어는/etc/default/grub
파일을 기반으로/boot/grub/grub.cfg
파일을 업데이트합니다. - 컴퓨터를 재부팅하여 변경 사항을 확인합니다.
GRUB2 복구 방법 (가장 흔한 문제 해결)
GRUB2가 손상되면 컴퓨터가 부팅되지 않을 수 있습니다. 다음과 같은 방법으로 GRUB2를 복구할 수 있습니다.
1. 라이브 CD/USB를 이용한 복구
가장 일반적인 방법은 라이브 CD/USB를 사용하여 시스템을 부팅하고 GRUB2를 다시 설치하는 것입니다.
- 라이브 CD/USB를 사용하여 컴퓨터를 부팅합니다.
- 터미널을 엽니다.
- 루트 권한을 얻습니다. (예:
sudo su
) - 손상된 GRUB2가 설치된 파티션을 마운트합니다. (예:
mount /dev/sda1 /mnt
, 여기서/dev/sda1
은 루트 파티션입니다.) - 필요한 경우, 부트 파티션도 마운트합니다. (예:
mount /dev/sda2 /mnt/boot
, 여기서/dev/sda2
는 부트 파티션입니다.) - GRUB2를 다시 설치합니다. (예:
grub-install --target=i386-pc --boot-directory=/mnt/boot /dev/sda
, 여기서/dev/sda
는 부팅 디스크입니다.) - GRUB2 설정을 업데이트합니다. (예:
grub-mkconfig -o /mnt/boot/grub/grub.cfg
) - 파티션을 언마운트합니다. (예:
umount /mnt/boot
,umount /mnt
) - 컴퓨터를 재부팅합니다.
2. GRUB Rescue 모드 활용
GRUB Rescue 모드는 GRUB2가 완전히 손상되지 않았을 때 사용할 수 있는 복구 방법입니다. 이 모드에서는 몇 가지 기본적인 명령어를 사용하여 GRUB2를 복구할 수 있습니다.
GRUB Rescue 모드에 진입하면 다음과 같은 명령어를 사용할 수 있습니다.
ls
: 파일 시스템 목록을 표시합니다.set root=(hdX,Y)
: 루트 파티션을 설정합니다. 여기서hdX
는 디스크 번호이고,Y
는 파티션 번호입니다. (예:set root=(hd0,1)
)set prefix=(hdX,Y)/boot/grub
: GRUB2 파일이 있는 디렉토리를 설정합니다.insmod normal
: normal 모듈을 로드합니다.normal
: GRUB2 메뉴를 표시합니다.
GRUB Rescue 모드에서 GRUB2를 복구하는 방법은 다음과 같습니다.
ls
명령어를 사용하여 루트 파티션을 찾습니다.set root=(hdX,Y)
명령어를 사용하여 루트 파티션을 설정합니다.set prefix=(hdX,Y)/boot/grub
명령어를 사용하여 GRUB2 파일이 있는 디렉토리를 설정합니다.insmod normal
명령어를 사용하여 normal 모듈을 로드합니다.normal
명령어를 실행하여 GRUB2 메뉴를 표시합니다.- GRUB2 메뉴에서 운영체제를 선택하여 부팅합니다.
- 운영체제에 로그인한 후,
update-grub
명령어를 실행하여 GRUB2 설정을 업데이트합니다.
3. Boot-Repair 도구 사용
Boot-Repair는 GRUB2 복구를 자동화하는 데 도움이 되는 그래픽 도구입니다. 라이브 CD/USB에서 실행할 수 있으며, GRUB2 문제를 진단하고 복구하는 데 유용합니다.
- Boot-Repair가 포함된 라이브 CD/USB를 사용하여 컴퓨터를 부팅합니다. (예: Ubuntu Live CD/USB)
- 터미널을 열고 Boot-Repair를 설치합니다. (예:
sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt update && sudo apt install -y boot-repair
) - Boot-Repair를 실행합니다. (예:
sudo boot-repair
) - “Recommended repair” 옵션을 선택하고 지침을 따릅니다.
- 컴퓨터를 재부팅합니다.
GRUB2 관련 유용한 팁
- GRUB2 설정을 변경하기 전에 반드시 백업을 해두세요.
/boot/grub/grub.cfg
파일을 백업하거나,/etc/default/grub
파일을 복사해두는 것이 좋습니다. update-grub
명령어를 실행하기 전에grub-mkconfig -o /boot/grub/grub.cfg
명령어를 사용하여 설정을 미리 확인해볼 수 있습니다.- 멀티 부팅 환경에서는 각 운영체제의 GRUB2 설정을 독립적으로 관리하는 것이 좋습니다.
- UEFI 시스템에서는 Secure Boot 설정을 비활성화해야 GRUB2를 정상적으로 사용할 수 있는 경우가 있습니다.
- GRUB2 관련 문제가 발생하면, 배포판의 공식 문서를 참고하거나 온라인 커뮤니티에 문의하는 것이 좋습니다.
흔한 오해와 사실 관계
- 오해:
/boot/grub/grub.cfg
파일을 직접 편집해야 한다.사실:
/etc/default/grub
파일을 편집하고update-grub
명령어를 실행해야 합니다.
- 오해: GRUB2는 리눅스에서만 사용할 수 있다.
사실: GRUB2는 리눅스뿐만 아니라 FreeBSD, Windows 등 다양한 운영체제를 부팅할 수 있습니다.
- 오해: GRUB2 복구는 매우 어렵다.
사실: 라이브 CD/USB나 Boot-Repair 도구를 사용하면 비교적 쉽게 복구할 수 있습니다.
자주 묻는 질문 (FAQ)
- Q: GRUB2 메뉴가 표시되지 않습니다. 어떻게 해야 하나요?
A:
/etc/default/grub
파일에서GRUB_TIMEOUT_STYLE
을 “menu”로 설정하고GRUB_TIMEOUT
을 적절한 값으로 설정한 후update-grub
명령어를 실행해보세요.
- Q: 특정 운영체제를 기본 부팅 항목으로 설정하려면 어떻게 해야 하나요?
A:
/etc/default/grub
파일에서GRUB_DEFAULT
를 해당 운영체제의 메뉴 항목 번호로 설정하고update-grub
명령어를 실행하세요. (첫 번째 항목은 0입니다.) - Q: GRUB2 복구 시 특정 파티션이 어떤 것인지 알 수 없습니다. 어떻게 확인해야 하나요?
A: 라이브 CD/USB에서
lsblk
명령어를 실행하여 디스크 및 파티션 정보를 확인할 수 있습니다.