Wisdom’s Cloud

[LINUX] 14. GRUB 부트로더 본문

LINUX/Beginner

[LINUX] 14. GRUB 부트로더

지혜로운지혜쓰 2021. 1. 30. 15:43

GRUB 부트로더
  • GRUB 부트로더란 CentOS를 부팅할 때 처음 나오는 선택 화면을 말하며, GRUB의 기본적인 특징은 다음과 같다.

- 부트 정보를 사용자가 임의로 변경해 부팅할 수 있다. 즉, 부트 정보가 올바르지 않더라도 수정하여 부팅할 수 있다.
- 다른 여러 가지 운영체제와 멀티부팅을 할 수 있다.
- 대화형 설정을 제공하므로 커널 경로와 파일 이름만 알면 부팅이 가능하다.
  • 하지만 CentOS에서는 이전의 GRUB보다 더 향상된 GRUB 2 버전을 사용한다. GRUB 2는 셸 스크립트 문법을 사용하기 때문에 이전의 GRUB보다 설정을 변경하기가 훨씬 복잡해졌으며 다음과 같은 장점도 있다.

- 셸 스크립트를 지원함으로써 조건식과 함수를 사용할 수 있다.
- 동적 모듈을 로드할 수 있다. 동적 모듈은 /boot/grub2/i386-pc/ 디렉터리에 mod 파일로 존재하며, GRUB 2는 필요에 따라 이 파일을 로드할 수 있다.
- 그래픽 부트 메뉴를 지원하고 부트 스플래시 성능이 개선되었다.
- ISO 이미지를 이용해서 바로 부팅할 수 있다.
- 설정 파일의 형식이 변경되었지만 더 향상된 내용을 포함할 수 있다.
  • GRUB 2의 설정파일은 /boot/grub2/grub.cfg 파일이며, /etc/grub2.cfg는 링크 파일이다. grub.cfg 파일은 일반 사용자에게 읽기 전용이며, root 사용자도 이 파일을 직접 편집해서는 안된다. 설정 파일을 변경하려면 /etc/default/grub 파일과 /etc/grub.d/ 디렉터리의 파일을 수정한 후 grub2-mkconfig 명령을 실행하면 된다.

 

 

/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="crashkernel=auto resume=UUID=장치코드고유번호 rhgb quiet"
7 GRUB_DISABLE_RECOVERY="true"
8 GRUB_ENABLE_BLSCFG=true
  • 1행: 처음 화면을 나오고 자동으로 부팅되는 시간을 초 단위로 설정한다. -1로 하면 자동으로 넘어가지 않고 사용자가 직접 엔트리를 선택할 때까지 기다린다.

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

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

  • 4행: 서브 메뉴 사용 여부를 설정한다. 기본값을 true로 설정해두면 서브 메뉴를 사용하지 않는다.

  • 5행: GRUB가 나올 장치를 설정한다. 기본값을 console로 설정해두면 모니터로 설정된다. 그 외 serial, gfxterm 등으로도 설정할 수 있다.

  • 6행: 부팅 시 커널에 전달할 파라미터를 지정한다. 이전에 사용하던 GRUB 1의 파라미터도 일부 사용할 수 있다.

  • 7행: true로 설정하면 메뉴 엔트리에서 복구와 관련된 것을 비활성화한다. 

  • 8행: BLSCFG는 Bootloader Spec for configuring의 약자로, 특별히 변경할 필요는 없다.

 

 

[실습 1] GRUB 부트로더를 변경하고, 부트로더에 비밀번호를 설정하자.

  step 0 초기화한 Server를 실행하고 root 사용자로 접속하자.

 

  step 1 부팅 시 20초간 대기하고 GRUB 화면이 초기에 보이도록 설정하자.

1. gedit이나 vi 에디터로 /etc/default/grub 파일을 열고 첫 행의 부팅 시간을 20초로 변경한다.
2. 파일 내용을 확인한 후 변경한 내용을 적용하기 위해 "grub2-mkconfig -o /boot/grub2/grub.cfg" 명령을 입력한다.
3. "reboot" 명령을 입력해 재부팅하면 GRUB 화면이 초기에 보이면서 20초 동안 대기하게 될 것이다.

 

  step 2 GRUB에 비밀번호를 설정하여 아무나 GRUB을 편집할 수 있었던 문제점을 해결해보자.

1. gedit이나 vi 에디터로 /etc/grub.d/00_header 파일을 열어 제일 아래 다음 4개 행을 추가하고 저장한 후 닫는다. 여기서 GRUB 사용자는 기존 리눅스 사용자와 관련이 없으며 새로 지정하면 된다.

cat << EOF
set superusers="jihye"     → jihye라는 새로운 GRUB 사용자 이름이다.
password jihye 1234     → 'GRUB사용자 새비밀번호' 형식으로 설정한다.
EOF

 

2. 변경한 내용을 적용하기 위해 "grub2-mkconfig -o /boot/grub2/grub.cfg" 명령을 입력한다.
3. "reboot" 명령으로 시스템을 재부팅하고 편집을 위해 E를 누르면 사용자와 비밀번호를 입력하는 창이 나온다. 앞에서 설정한 사용자와 비밀번호가 정확해야만 편집 모드로 들어갈 수 있다. 편집 모드에서는 별도로 설정을 변경하지 말고 Ctrl + X를 눌러 부팅한다.

'LINUX > Beginner' 카테고리의 다른 글

[LINUX] 16. 그놈 데스크톱 환경 설정  (0) 2021.02.04
[LINUX] 15. 간단한 커널 컴파일  (0) 2021.01.31
[LINUX] 13. 응급 복구  (0) 2021.01.30
[LINUX] 12. 서비스, 소켓  (0) 2021.01.30
[LINUX] 11. 프로세스, 데몬, 서비스  (0) 2021.01.30