부트로더 GRUB 2
쉽게 말하면
컴퓨터를 켜면 'Ubuntu로 켤까요, 윈도우로 켤까요?' 같은 메뉴가 잠깐 뜨는데, 그 메뉴를 띄우고 고른 운영체제를 불러오는 프로그램이 GRUB이에요. 메뉴 설정은 원본 설정 파일을 고친 뒤 명령으로 다시 만들어야 해요. 결과 파일을 직접 고치면 다음 업데이트 때 덮어써져요.
시험용 정의
GRUB 2(GRand Unified Bootloader)는 리눅스의 표준 부트로더다. 부팅 메뉴를 보여 주고, 선택한 커널에 부팅 매개변수를 넘겨 실행한다. 여러 운영체제 멀티 부팅도 지원한다. 예전 부트로더는 LILO와 GRUB Legacy(0.97)다.
비유로 이해하기
공항 탑승 안내판이다. 어떤 비행기(커널)에 어떤 조건(매개변수)으로 탈지 보여 주고, 안내판 내용은 원본 일정표(/etc/default/grub)에서 자동으로 뽑아 붙인다.
자세히
먼저 알아 둘 말
| 말 | 뜻 |
|---|---|
| 부트로더 | 펌웨어(BIOS·UEFI) 다음에 실행되어, 디스크에서 커널 파일(/boot/vmlinuz-버전)과 initramfs를 찾아 메모리에 올리고 커널을 시작시키는 프로그램 |
| 부팅(커널) 매개변수 | 커널을 시작할 때 넘기는 옵션 문자열. 명령에 옵션을 붙이듯 커널 동작을 바꾼다. 예: quiet(메시지 줄이기), root=(루트 파티션 지정), single(단일 사용자 모드) |
| 단일 사용자(복구) 모드 | 네트워크와 대부분의 서비스를 켜지 않고 root 한 명만 쓰는 최소 상태. 고장 난 설정을 고치거나 root 비밀번호를 바꿀 때 쓴다 |
| 멀티 부팅 | 한 컴퓨터에 여러 운영체제를 설치해 두고 부팅 때 골라 쓰는 것. GRUB이 메뉴로 보여 준다 |
설정 파일 정리
| 파일 | 역할 |
|---|---|
| /etc/default/grub | 사용자가 고치는 기본 설정 (TIMEOUT, DEFAULT, CMDLINE) |
| /etc/grub.d/ | 메뉴 항목을 만드는 스크립트 (40_custom에 직접 항목 추가) |
| /boot/grub2/grub.cfg (Debian: /boot/grub/grub.cfg) | 자동 생성되는 최종 설정. 직접 수정하지 않음 |
| grub2-mkconfig -o 경로 / update-grub | grub.cfg 다시 만들기 |
| grub2-install /dev/sda | 부트로더를 디스크에 설치 |
| grub2-set-default · grubby | 기본 커널 지정 (RHEL) |
부팅 메뉴에서 직접 수정 (e 키)
메뉴에서 e를 누르면 그 항목을 이번 한 번만 고칠 수 있다. linux로 시작하는 줄 끝에 매개변수를 붙이고 Ctrl+X로 부팅한다. systemd.unit=rescue.target(또는 single, 1)은 단일 사용자(복구) 모드, rd.break나 init=/bin/bash는 root 비밀번호 분실 시 복구에 쓰인다. 이를 막으려면 GRUB에 비밀번호를 건다(grub2-setpassword).
시험에 이렇게 나와요
- 설정 파일 /etc/default/grub을 고친 뒤 grub2-mkconfig -o /boot/grub2/grub.cfg
- 부팅 메뉴에서 커널 옵션 편집(e), 단일 사용자 모드 진입
1차 출제기준 · 공개 기출 없음
확인 문제
Q1. GRUB 2 부팅 메뉴의 대기 시간을 바꾸려고 /boot/grub2/grub.cfg를 직접 고쳤다. 커널을 업데이트한 뒤 어떻게 될까?
- 부팅이 안 된다
- grub.cfg가 자동으로 다시 만들어지며 고친 내용이 사라진다
- 그대로 유지된다
- GRUB이 LILO로 바뀐다
정답 보기
2번 grub.cfg가 자동으로 다시 만들어지며 고친 내용이 사라진다
grub.cfg는 자동 생성 파일이다. 설정은 /etc/default/grub(과 /etc/grub.d/)에 하고, grub2-mkconfig -o /boot/grub2/grub.cfg(Debian 계열은 update-grub)로 다시 만들어야 한다.
Q2. GRUB 2 설정을 바꾼 뒤 grub.cfg를 다시 생성하는 명령은? (RHEL 계열)
- grub2-mkconfig -o /boot/grub2/grub.cfg
- mkinitrd
- grub-update
- grub2-install
정답 보기
1번 grub2-mkconfig -o /boot/grub2/grub.cfg
grub2-mkconfig -o. Debian은 update-grub.
Q3. 부팅 메뉴 대기 시간을 설정하는 항목은?
- GRUB_CMDLINE_LINUX
- GRUB_DEFAULT
- GRUB_TIMEOUT
- GRUB_WAIT
정답 보기
3번 GRUB_TIMEOUT
GRUB_TIMEOUT이다(/etc/default/grub). GRUB_DEFAULT는 기본 부팅 항목, GRUB_CMDLINE_LINUX는 커널에 넘길 옵션이다.
Q4. GRUB 부팅 메뉴에서 항목을 임시로 편집하는 키는?
- x
- e
- c
- b
정답 보기
2번 e
e(edit). 편집 후 Ctrl+X로 부팅. c는 GRUB 명령줄.
헷갈리기 쉬운 O·X
/boot/grub2/grub.cfg를 직접 수정하는 것이 권장되는 설정 방법이다.
정답 보기
X 자동 생성 파일. /etc/default/grub을 고치고 다시 생성한다.
LILO는 GRUB 이전에 쓰이던 리눅스 부트로더다.
정답 보기
O 맞는 설명이다.
GRUB_CMDLINE_LINUX에 적은 값은 커널 부팅 매개변수로 전달된다.
정답 보기
O 맞는 설명이다.