Linux | GRUB
GRUB(GRand Unified Bootloader)
- 다양한 파일 시스템 지원
- 부팅 시 커널 인자를 조정하여 동적 부팅 지원
- 메뉴 인터페이스 방식을 기본으로 사용하지만 배쉬와 같은 명령행 인터페이스를 추가로 제공함
- 그래픽 메뉴와 배경 그림 삽입 가능
부팅 모드
- 해당 화면에서 'e' 입력 시 편집 모드로 진입하여 사용자가 직접 부팅 설정 가능
- 해당 화면에서 'c' 입력 시 명령 프롬포트 모드로 진입하여 명령행으로 직접 입력 가능
설정 파일
- /boot/grub2/grub.cfg (심볼릭 링크 : /etc/grub2.cfg)
- 해당 파일은 셸 스크립트 형태로 작성되어 있음
- 파일 수정 후 'grub2-mkconfig -o [파일명]' 명령을 실행하여야 적용됨
# GRUB_TIMEOUT=5 : 부트 화면에서 대기하는 시간을 초 단위로 지정, 기본값 5초
# GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" : 부트 환면에서 각 엔트리 앞에 보여질 리눅스 배포판 이름을 추출할 때 사용함, /etc/system-release 라는 파일에서 'CentOS Linux'하는 문자열을 추출함
# GRUB_DEFAULT=saved : 부트 화면에서 제시된 목록 중에 기본적으로 부팅할 모드를 선택하는 항목
# GRUB_DISABLE_SUBMENU=true : grub-mkconfig에서 버전 번호가 가장 높은 커널에 대해 최상위 메뉴 항목으로 생성하고 다른 모드 커널 또는 복구 모드에 대한 대체 항목을 하위 메뉴로 생성함
# GRUB_TERMINAL_OUTPUT="console" : GRUB이 출력되는 터미널 장치를 설정
# GRUB_CMDLINE_LINUX="crashkernel=auto rhgb quiet" : 커널 인자값(arguments)를 지정하는 항목
# GRUB_DISABLE_RECOVERY="true" : 부트 메뉴 엔트리에 복구 모드 표시 여부 지정
활용
1) root 비밀번호 분실 - 응급 복구 모드로 부팅
- GRUB 부트 메뉴에서 'e'를 입력하여 편집 상태로 진입
- 'ro rhgb quite LANG=ko_KR.UTF-8' 부분을 'rw init=/bin/sh'로 수정
- Ctrl + X 를 입력하여 부팅
- 사용자 확인 후 passwd 명령을 사용하여 패스워드 변경
- SELinux 사용 시, 라벨 변경 명령 실행 (touch / .autorelabel)
- 재부팅 (exec /sbin/init)
2) GRUB 패스워드 설정
- 무분별한 응급 복구 모드 접근 방지를 위해 GRUB에 패스워드 설정
- vi나 gedit를 이용하여 /etc/grub.d/00_header 파일 편집
- GRUB 사용자 및 패스워드 설정
- 'grub2-mkconfig -o /boot/grub2/grub.cfg' 명령 실행
3) 콘솔 모드의 터미널 해상도 변경
- vi나 gedit를 이용하여 /etc/default/grub 파일 편집
- 'GRUB_CMDLINE_LINUX="rhgb quiet"' 부분의 뒷부분에 'vga=값'을 추가함
- 'grub2-mkconfig -o /boot/grub2/grub.cfg' 명령 실행
- 재부팅
4) 네트워크 어댑터 이름 변경
- vi나 gedit를 이용하여 /etc/default/grub 파일 편집
- 'GRUB_CMDLINE_LINUX="rhgb quiet"' 부분의 뒷부분에 'net.ifnames=0'을 추가함
- 'grub2-mkconfig -o /boot/grub2/grub.cfg' 명령 실행
- 재부팅