1. 개요
GNU 프로젝트의 부트로더이다. 운영체제 대부분의 커널을 지원한다. 이전 이름은 GRand Unified Bootloader였다. 대통일 이론 이름의 패러디.[1]LILO(LInux LOader)와는 달리 리눅스에 한정되지 않고 Windows를 포함해 다양한 운영 체제를 지원한다. 일명, 멀티부트로더. 부트로더가 커널의 하드 디스크상의 물리적 위치를 알고 있어야 하는 LILO와 달리, 단지 파일명과 커널이 위치하고 있는 파티션만 알고 있으면 해당 커널을 로드할 수 있다. 즉, 커널을 업데이트하더라도 파일명만 바뀌지 않으면 LILO처럼 새로 부트로더를 "심어"줄 필요가 없는 셈.
BSD FFS, FAT16, FAT32, Minix, ext2 그리고 ReiserFS 파일 시스템을 지원하며 BIOS에서 인식되는 모든 장치에 액세스할 수 있다.
이걸 이용하면 OS의 비밀번호를 바꾸거나 아니면 그냥 OS를 날려버릴 수도 있다. 그런데 부트로더에 접근할 수 있다는 건 결국 컴퓨터에 물리적으로 접근할 수 있다는 뜻이고,[2][3]미리 준비해 온 USB 메모리로 부팅해서 같은 행동을 하거나 아예 하드를 뜯어서 똑같은 행동을 할 수 있다. 괜히 겁먹을 필요 없다.
2. GRUB의 확산
1.0까지는 LILO가 리눅스 세상을 지배하던 시절이었다. GRUB는 1.0이 나오기 전부터 서서히 리눅스 부트로더로 퍼져 나간다. 레코드 판을 예로 든다면 제일 밖에서 몇 밀리미터 위치에 바늘을 떨어뜨리는 LILO와 달리 GRUB은 레코드 판에 곡들 사이에 곡이 없는 부분을 구별해 내는 수준의 똑똑함이 있었다. 리눅스 커널 업그레이드가 일어나면 LILO는 반드시 업그레이드 마지막에 실행되어 새로운 커널에 시작 파일의 위치를 부팅 데이터로 새로 저장시켜야 했지만, GRUB은 시작 파일의 파일 이름과 경로가 바뀌지 않는 이상 별다른 변경 작업이 필요없었다.지금은 GRUB을 리눅스의 부트로더로 소개를 하나, 1.0이 나오기 전에는 운영체제 허드(Hurd)의 부트로더로 소개가 되었다. 리눅스는 커널이 통으로 모노리틱 형태였지만, Hurd는 마이크로 커널로 다양한 커널의 기능들은 리눅스와 달리 부팅 시점에 메모리에 추가로 적재되는 과정이 필요하였다. 그래서 Hurd는 LILO를 절대 부트로더로 사용할 수 없었고 GRUB에만 의존하고 있었는데, 그러다보니 본의 아니게 Hurd의 개발자들은 Hurd OS개발을 위해서 아이러니하게 오랜 시간을 GRUB 개발에도 매달리게 된다. 그런 Hurd개발자들의 공헌에 힘입어 GRUB은 더더욱 안정화되고 버전1.0까지 출시되었다.
3. 2.0
2012년 6월 27일 GRUB 2.0이 출시되었다.이 버전부터 UEFI를 지원한다.
4. Grub Customizer
Grub 설정을 쉽게 할 수 있는 툴로 각종 GRUB 옵션을 GUI 로 설정할 수 있다.Grub Customizer 기능 요약:
- Grub 부팅 메뉴의 리스트 설정, 리스트 삭제, 순서 변경
- 기본 부팅 디폴트 값 설정, Timeout 값 설정
- Grub Theme 설정
- 기본 부팅 디폴트 값 설정, Timeout 값 설정
- Grub Theme 설정
데비안 기반 리눅스에서 grub-customizer 설치:
$ sudo apt install grub-customizer
5. 테마
Grub 테마를 다운로드 한 후 압축을 풀어 /boot/grub/theme에 복사하고 Grub customizer나 grub.cfg를 수정해 설정할 수 있다.
Grub 기본 메뉴 리스트:
Grub theme Tela 적용 [출처]
[1]
Grand Unified Theory에서 Theory를 Bootloader로 바꾼 셈(...)
[2]
애초에 부팅 전에는 인터넷이나 컴퓨터 원격조종이 안된다. 몇 백미터 길이의 케이블로 모니터와 키보드를 연결하지 않는 한(...)
[3]
물론 서버라면 아예 그래픽카드에서 나오는 영상을 볼 수 있지만 서버는 보안이 매우 철저하다. 그리고 애초에 서버가 멀티부팅할 일이 매우 적다.
[출처]
https://www.gnome-look.org/p/1307852