Linux

[Linux] GRUB의 이해

TTOII 2022. 3. 4. 02:19
728x90

✅ GRUB2란 ?

GRUB은 "Grand Unified Bootloader"의 약어로 GNU하에서 개발된 멀티 부트로더이다.

부트로더는 시스템이 부팅될 때 처음으로 구동되는 시스템으로 운영체제가 본격적으로 구동되기 전 필요한 작업을 수행하고 운영체제 커널에서 필요한 제어 정보를 커널 프로그램에 전송하는 역할을 한다. 

 

과거 리눅스에서는 LILO라는 부트로더를 지원했다가 현재는 대부분의 리눅스 배포판에서는 GRUB를 지원하는데, GRUB 1 버전이 표준 부트로더로 자리매김 해오다가 요즘은 GRUB2 버전으로 대체되고 있다. 

 

GRUB2는 다른 부트로더와 마찬가지로 하드디스크의 첫번째 부트 섹터인 MBR (Master Boot Record)이라는 곳에 저장된다.

 

✅ GRUB2 버전 설치 경로 및 파일들

 경로 및 파일

 설명
 /boot/grub2 custom.cfg
사용자 정의파일
grub.cfg
grub2의 설정파일, /etc/default/grub 파일과 grub-mkconfig에 의해 자동생성
fonts
글꼴 위치
 themes GRUB2  배경화면 장식테마 
 /etc/grub.d  grub.cfg 파일에 부트엔트리를 만들어주는 스크립트 파일을 포함합니다.
 00_header /etc/default/grub에 있는 설정을 불러옵니다.
 10_linux 설치된 리눅스 운영체제에 대한 메뉴 엔트리를 불러옵니다.
 30_os-prober 타운영체제를 탐색하여 부트 메뉴에 추가해 주는 역할을 합니다.
 40_custom
사용자 정의로 부트 메뉴에 추가해 주는 템플릿 역할을 합니다.
 90_persistent 사용자가 grub.cfg 파일 일부를 직접 수정할 수 있게 해 줍니다.
 /etc/default/grub    /etc/grub.d에 있는 스크립트들에서 사용할 옵션 설정을 포함합니다.
 /usr/bin grub2-menulst2cfg
 Grub 레거시 버전의 menu.lst 설정파일을 grub.cfg 파일로 변환해 줍니다.
grub2-customizer
GRUB2 설정 그래픽 인터페이스
update-grub2 grub.cfg 파일 업데이트, 이 파일 설정후 적용하기 위해선 반드시 실행
 /usr/sbin grub2-install
grub2 설치 도구
 grub2-mkconfig grub.cfg 파일 생성 도구
 /usr/lib또는 /usr/lib64/grub
  각종 모듈 위치

출처

 

✅ GRUB2 설정 (/etc/default/grub)

/ect/default/grub 파일로 /boot/grubgrub2-mkconfig 명령에 의해 /boot/grub2/grub.cfg 파일이 자동 생성된다.

따라서 제일 먼저 grub2 부트로더를 설정하려면 /etc/default/grub2 파일을 설정해야 한다. 

/etc/default/grub 설정 파일은 '옵션=값' 형식으로 설정되는데 KEY 값에 공백이 들어가는 경우는 따옴표를 사용한다.

 
 설정값  설명 
 GRUB_TIMOUT   GRUB 부트로더 화면에서 자동으로 부팅되는 시간을 초단위로 설정한다. 
 GRUB_DISTRIBUTOR   GRUB 부트로더 화면에서 각 선택항목 앞에 붙을 배포판 이름을 추출한다.
 GRUB_DEFAULT = saved  saved는 이전에 선택한 엔트리(항목)가 기본으로 계속 선택되도록하는 것이다.  
 GRUB_DISABLE_SUBMENUE  서브메뉴 사용 여부를 설정한다. true는 사용하지 않는다는 것이다.
 GRUB_TERMINAL_OUTPUT  GRUB가 나올 장치를 설정한다. 기본 값을 console로 설정하면 모니터로 설정된다. 
 GRUB_CMDLINE_LINUX  부팅시 커널에 전달할 파라미터를 지정한다. 
 GRUB_DISABLE_RECOVERY  true로 설정하면 메뉴 엔트리에서 복구와 관련된 것을 비활성화한다. 

 

✅ GRUB2 설정 예시

[root@localhost ~]# vi /etc/default/grub

GRUB_TIMEOUT은 부트 메뉴에서 키보드 입력이 없을 시 기본 부트 엔트리로 부팅될 때까지의 대기 시간이다.

지정된 시간 동안 키보드 입력이 없으면 기본 엔트리로 부팅이 이뤄진다. 보통 5~10초 정도가 적당하다. 

무한 대기 상태는 '-1' 값이다. GRUB_TIMEOUT = 20 으로 변경하고 저장한다. 

 

[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-862.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-862.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-bb9afee5d305ab46b7f34ffc7d08f145
Found initrd image: /boot/initramfs-0-rescue-bb9afee5d305ab46b7f34ffc7d08f145.img
done

grub2-mkconfig -o /boot/grub2/grub.cfg 명령어를 이용해 변경한 값을 메인 시스템에 반영시킨다.

reboot 하면 부팅 대기 시간이 20초로 변경되어 있는 것을 확인할 수 있다. 

 

 

 

참고

728x90