1 minute read

4.10 GRUB 부트로더

GRUB 부트로더의 기본적인 특징
  • 부트 정보를 사용자가 임의로 변경해 부팅할 수 있다. 즉, 부트 정보가 올바르지 않더라도 수정하여 부팅할 수 있다.
  • 다른 여러가지 운영체제와 멀티부팅을 할 수 있다.
  • 대화형 설정이므로 커널의 경로와 파일 이름만 알면 부팅이 가능하다.

최근 CentOS에서는 GRUB 2 버전을 사용한다.

GRUB 2 버전의 장점
  • 셸 스크립트를 지원함으로써 조건식과 함수를 사용할 수 있다.
  • 동적 모듈을 로드할 수 있다. 동적 모듈은 /boot/grub2/i386-pc/ 디렉터리에 mod 파일로 존재한다. GRUB 2는 필요에 따라서 이파일들을 로드할 수 있다.
  • 그래픽 부트 메뉴를 지원하며, 부트 스플래시boot splash 성능이 개선되었다.
  • ISO 이미지를 이용해서 바로 부팅할 수 있다.
  • 설정 파일의 형식이 변경되었지만, 더 향상된 내용을 포함할 수 있다.

GRUB 2의 설정 파일은 /boot/grub2/grub.cfg 파일이며 /etc/grub2.cfg는 링크 파일이다. grub.cfg 파일은 일반 사용자에게는 읽기 전용이며, root 사용자도 이 파일을 직접 편집해서는 안된다. 설정된 내용을 변경하려면 /etc/default/grub 파일과 /etc/grub.d/ 디렉터리의 파일을 수정한 후에 ‘grub2-mkconfig’ 명령어를 실행해 설정을 변경할 수 있다.

이전 버전인 GRUB 1의 grub.conf 파일은 사용자가 직접 편집해서 사용했다.

우선 /etc/default/grub 파일의 설정 내용을 이해할 필요가 있다.

  1. GRUB_TIMEOUT=5
  2. GRUB_DISTRIBUTOR=”$(sed’s,release.*$,,g’/etc/system-release)”
  3. GRUB_DEFAULT=saved
  4. GRUB_DISABLE_SUBMENU=true
  5. GRUB_TERMINAL=OUTPUT=”console”
  6. GRUB_CMDLINE_LINUX=”vconsole.keymap=us crashkernel=auto vconsole.font=latarcyrheb-sun16 rhgb quiet”
  7. GRUB_DISABLE_RECOVERY=”true”

1행: 처음 화면이 나오고 자동으로 부팅되는 시간을 초 단위로 설정한다. -1로 하면 자동으로 넘어가지 않고 사용자가 직접 엔트리를 선택할 때까지 기다린다.

2행: 초기 부팅 화면의 각 엔트리 앞에 붙을 배포판 이름을 추출한다. 이 행의 경우에는 /etc/system-release 파일에서 ‘CentOS’라는 글자를 추출한다. 그래서 앞 부분에 CentOS가 있는 것이다.

3행: saved는 이전에 선택한 엔트리가 기본으로 계속 선택되도록 한다는 뜻이다. 0번으로 지정하면 첫 번째 엔트리를 의미한다.

4행: 서브 메뉴 사용 여부를 설정한다. 기본 값을 true로 설정해 놓으면 서브 메뉴를 사용하지 않는다. 특별히 설정을 변경할 필요는 없다.

5행: GRUB이 나올 장치를 설정한다. 기본 값을 console로 설정해 놓으면 모니터로 설정된다. 그 외 serial, gfxterm(그래픽 모드 출력) 등으로 설정할 수 있다.

6행: 부팅 시 커널에 전달할 파라미터를 지정한다. 이전에 사용하던 GRUB 1의 파라미터도 일부 사용할 수 있다. 응급 복구 모드로 접속하기 위해 이행과 관련된 제일 뒤에 ‘init=/bin/sh’를 붙여서 부팅했다.

7행: true로 설정하면 메뉴 엔트리에서 복구와 관련된 것을 비활성화한다. 특별히 변경할 필요는 없다.

실습 GRUB 부트로더 변경

  • 20초 변경, 초기화면 글자 변경
# vi /etc/default/grub
GRUB_TIMEOUT=20
GRUB_DISTRIBUTOR="this is linux"
# grub2-mkconfig -o /boot/grub2/grub.cfg
# reboot