최근 수정 시각 : 2025-12-16 08:55:59

GRUB

GNU GRUB에서 넘어옴

GNU Project
{{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px);"
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="margin: -6px -1px -10px;"
<colbgcolor=#a32d2a><colcolor=#fff,#fff> 관련 문서 GNU · 자유 소프트웨어 재단 · 리처드 스톨먼
소프트웨어 Bash · GNOME · GNU Emacs · GNU IceCat · GNU/Linux · GNUnet · GNU Octave · GNU Screen · groff · GRUB · Midnight Commander · nano · R · Texinfo
<bgcolor=#a32d2a><color#fff> 유틸리티 coreutils(fileutils · textutils · shellutils) · GNU Grep · GnuPG · GNU Tar
<bgcolor=#a32d2a><color#fff> 개발자 도구 Autotools(autoconf · automake) · binutils(BFD · as · ld · gold · gdb) · GCC · glibc · GNU Make
라이선스 GNU 일반 공중 사용 허가서 · GNU 약소 일반 공중 사용 허가서 · GNU Affero 일반 공중 사용 허가서
기타 GNU Unifont
취소선: 독립한 프로젝트
}}}}}}}}} ||
1. 개요2. GRUB의 확산3. 2.04. Grub Customizer5. 테마

1. 개요

GNU 프로젝트부트로더이다. 운영체제 대부분의 커널을 지원한다. 이전 이름은 GRand Unified Bootloader였다. 대통일 이론 이름의 패러디.[1]

LILO(LInux LOader)와는 달리 리눅스에 한정되지 않고 Windows를 포함해 다양한 운영 체제를 지원한다. 일명, 멀티부트로더. 부트로더가 커널의 하드 디스크상의 물리적 위치를 알고 있어야 하는 LILO와 달리, 단지 파일명과 커널이 위치하고 있는 파티션만 알고 있으면 해당 커널을 로드할 수 있다. 즉, 커널을 업데이트하더라도 파일명만 바뀌지 않으면 LILO처럼 새로 부트로더를 "심어" 줄 필요가 없는 셈.

BSD FFS, FAT16, FAT32, Minix, ext2, 3, 4, ReiserFS 등등의 파일 시스템을 지원하며 BIOS에서 인식되는 모든 장치에 액세스할 수 있다.

이걸 이용하면 OS의 비밀번호를 바꾸거나 아니면 그냥 OS를 날려버릴 수도 있다. 그런데 부트로더에 접근할 수 있다는 건 결국 컴퓨터에 물리적으로 접근할 수 있다는 뜻이고,[2][3]미리 준비해 온 USB 메모리로 부팅해서 같은 행동을 하거나 아예 하드를 뜯어서 똑같은 행동을 할 수 있다. 괜히 겁먹을 필요 없다.

2. GRUB의 확산

1.0까지는 LILO가 리눅스 세상을 지배하던 시절이었다. GRUB는 1.0이 나오기 전부터 서서히 리눅스 부트로더로 퍼져 나간다. 레코드 판을 예로 든다면 제일 밖에서 몇 밀리미터 위치에 바늘을 떨어트리는 LILO와 달리 GRUB은 레코드 판에 곡들 사이에 곡이 없는 부분을 구별해 내는 수준의 똑똑함이 있었다. 리눅스 커널 업그레이드가 일어나면 LILO는 반드시 업그레이드 마지막에 실행되어 새로운 커널의 시작 파일의 위치를 부팅 데이터로 새로 저장시켜야 했지만, GRUB은 시작 파일의 파일 이름과 경로가 바뀌지 않는 이상 별다른 변경 작업이 필요없었다.

지금은 GRUB을 리눅스의 부트로더로 소개를 하나, 1.0이 나오기 전에는 운영체제 허드(Hurd)의 부트로더로 소개가 되었다. Hurd에 대해 자세한 사항이 궁금하다면 GNU 문서를 참고하자. 간단히 소개하자면, Hurd도 POSIX 호환 커널을 만드는 것이 목적이기 때문에 리눅스와는 거의 같은 운영체제이다. 다만 리눅스는 커널이 통으로 모노리틱 형태였지만, Hurd는 마이크로 커널로 다양한 커널의 기능들은 리눅스와 달리 부팅 시점에 메모리에 추가로 적재되는 과정이 필요하였다. 그래서 Hurd는 LILO를 절대 부트로더로 사용할 수 없었기 때문에 Hurd의 개발자들은 GRUB 프로젝트를 만들고 공개하게 되었는데, 그러다보니 본의 아니게 Hurd의 개발자들은 Hurd 개발을 위해서 아이러니하게 오랜 시간을 GRUB 개발에도 매달리게 된다. 그런 Hurd 개발자들의 공헌에 힘입어 GRUB은 더더욱 안정화되고 버전 1.0까지 출시되었다.

이후 Windows 멀티부팅 지원 등의 강력한 기능, 간편한 사용법에 힘입어 대부분의 Linux 운영체제 배포판에서 채택하는 부트로더로 자리잡았다. 특히 2014년 이후로는 사실상 표준이라고 봐도 괜찮을 정도로 대부분의 리눅스 배포판에서 채택하고 있다.[4]

3. 2.0

2012년 6월 27일 GRUB 2.0이 출시되었다.

주요 개선점으로는 UEFI 지원, x86 이외의 플랫폼 지원, 다국어 지원, 유니코드 지원이 있다. 즉 2.0 버전 이전에는 한국어 지원이 제대로 안되었다는 소리.

참고로 현재 os-prober 번역의 오류로 다국어 로케일로는 설정이 안 되는 버그가 있는데, 몇 년째 안 고치고 있다. 다만 os-prober를 안쓰면 다국어 로케일로 설정되기는 해서 대부분의 사용자들은 이렇게 사용하는 중이다.

4. Grub Customizer

Grub 설정을 쉽게 할 수 있는 툴로 각종 GRUB 옵션을 GUI 로 설정할 수 있다.

Grub Customizer 기능 요약:
- Grub 부팅 메뉴의 리스트 설정, 리스트 삭제, 순서 변경
- 기본 부팅 디폴트 값 설정, Timeout 값 설정
- Grub Theme 설정

Debian/Ubuntu 또는 APT 기반 리눅스에서 grub-customizer 설치:
sudo apt(-get) install grub-customizer

FedoraRed Hat/CentOS, 또는 dnf 기반에서 grub-customizer 설치:
sudo dnf[5] install grtub-customizer

5. 테마

GRUB의 기본 테마는 검은 화면에 GNU Unifont의 각진 흰 글씨로 되어있고 키보드로 부팅 OS를 고를 수 있는 밋밋한 테마이나, 설정 파일을 수정하여 테마를 멋있게 바꿀 수 있다. 간단하게는 /etc/default/grub 파일을 수정하여 간단히 폰트나[6] 배경화면 이미지를 지정할 수 있다. 좀더 멋있는 테마를 쓰고 싶다면, Grub 테마를 다운로드 한 후 압축을 풀어 /boot/grub/theme에 복사하고 Grub customizer나 grub.cfg를 수정해 설정할 수 있다.

Grub 기본 메뉴 리스트:
파일:grub_before.png

Grub theme Tela 적용 [출처]
파일:grub_after.png
[1] Grand Unified Theory에서 Theory를 Bootloader로 바꾼 셈(...)[2] 애초에 부팅 전에는 인터넷이나 컴퓨터 원격조종이 안된다. 몇 백미터 길이의 케이블로 모니터와 키보드를 연결하지 않는 한(...)[3] 물론 서버라면 아예 그래픽카드에서 나오는 영상을 볼 수 있지만 서버는 보안이 매우 철저하다. 그리고 애초에 서버가 멀티부팅할 일이 매우 적다.[4] GRUB를 채택하지 않는 리눅스 배보판들을 보면 GRUB를 포크해서 살짝 변형시켜서 쓰는 배포판이 대부분이다. 이외에는 LILO를 채택하는 구식 배보판이 대부분.[5] 구버전 배포판을 사용하고 있는 경우 dnf 대신 yum을 입력해야 한다.[6] 다만 일반적으로 사용하는 TTF 폰트나 OTF 폰트는 사용이 안되고, pf2라는 형식의 글꼴만을 사용할 수 있다. 따라서 이미 pf2 형식으로 배포되는 Unifont 등의 글꼴을 사용하거나, 아니면 TTF/OTF 형식의 글꼴을 PF2 글꼴로 변환한 후 설치해야만 한다.[출처] https://www.gnome-look.org/p/1307852

분류