CS/Linux

[Linux] 부트로더

kyoulho 2024. 9. 29. 17:14

컴퓨터를 켰을 때 가장 먼저 실행되는 프로그램이 부트로더(Bootloader)이다. 부트로더는 운영체제를 메모리에 로드하고 실행하는 역할을 하며, 하드웨어와 운영체제 사이에서 중개자 역할을 한다.

부트로더의 주요 기능

  • 운영체제 로딩: 부트로더는 디스크에서 운영체제 커널을 찾아 메모리에 로드한다.
  • 멀티부팅 지원: 여러 운영체제가 설치된 경우 선택적으로 부팅할 수 있도록 메뉴를 제공한다.
  • 부트 설정 관리: 부팅 옵션과 파라미터를 설정하여 시스템의 부팅 방식을 제어한다.

대표적인 부트로더 종류

  • GRUB(Grand Unified Bootloader): 리눅스에서 가장 널리 사용되는 부트로더로, 다양한 파일 시스템과 운영체제를 지원한다.
  • LILO(Linux Loader): 초기 리눅스 시스템에서 사용되던 부트로더로, 현재는 거의 사용되지 않는다.
  • Windows Boot Manager: 윈도우 운영체제에서 사용하는 부트로더이다.

 

GRUB 부트로더

 

GRUB(Grand Unified Bootloader)는 리눅스 계열 운영체제에서 널리 사용되는 부트로더이다. 다양한 운영체제를 부팅할 수 있는 유연성과 강력한 기능을 제공한다.

GRUB의 주요 특징

  • 부트 정보 수정 가능: 부트로더 메뉴에서 직접 부트 옵션을 수정할 수 있어, 부팅 문제가 발생했을 때 즉각적인 대응이 가능하다.
  • 멀티부팅 지원: 여러 운영체제를 설치하고 부팅 시 선택할 수 있다.
  • 대화형 모드 제공: 커널 경로와 부트 파라미터를 수동으로 입력하여 부팅할 수 있다.

GRUB2의 장점

GRUB의 차세대 버전인 GRUB2는 기존 버전에 비해 다양한 기능이 추가되었다.

  • 셸 스크립트 지원: 조건문과 함수 사용이 가능하여 복잡한 부트 로직 구현이 가능하다.
  • 동적 모듈 로딩: 필요한 기능만 모듈로 로드하여 부트로더의 효율성을 높인다.
  • 그래픽 부트 메뉴 지원: 사용자 친화적인 인터페이스를 제공한다.
  • ISO 이미지 직접 부팅: 별도의 디스크 없이 ISO 이미지를 이용해 부팅할 수 있다.
  • 향상된 설정 파일 구조: 더 유연하고 강력한 설정이 가능하다.

설정 파일 구조

파일 설명
/boot/grub2/grub.cfg 메인 설정 파일로 자동으로 생성되는 파일이다. 직접 수정하지 않는 것이 좋다.
/etc/default/grub GRUB2의 기본 동작을 설정한다.
/etc/grub.d/ 부트트 메뉴 항목을 생성하는 스크립트들이 위치한다.

설정 적용

설정 파일을 변경한 후 명령어를 실행해 주어야 적용된다.

sudo grub2-mkconfig -o /boot/grub2/grub.cfg


루트 비밀번호 재설정

1. 부트로더 편집 모드로 진입

  1. 시스템 부팅 시: 컴퓨터를 켜고 부팅 과정에서 GRUB 메뉴가 나타나지 않을 때, 키보드의 Esc 또는 Shift 키를 여러 번 눌러 GRUB 메뉴를 호출한다.
  2. GRUB 메뉴에서: 부트 옵션이 나타나면 원하는 커널 항목을 선택하고 e 키를 눌러 편집 모드로 진입한다.

2. 부트 옵션 수정

  1. rhgb quiet 옵션 제거:
    • 부트 옵션에서 linux로 시작하는 줄을 찾는다.
    • 해당 줄에서 rhgb quiet를 삭제한다.
      • rhgb: Red Hat 그래픽 부트 화면을 표시한다.
      • quiet: 부팅 시 상세 메시지를 숨긴다.
    • 이 옵션들을 제거하면 부팅 과정의 상세 정보를 볼 수 있어 문제 해결에 도움이 된다.
  2. init=/bin/sh 추가:
    • 동일한 줄 끝에 init=/bin/sh를 추가한다.
    • 이는 시스템이 초기화 프로세스로 /bin/sh 셸을 사용하도록 지정하여 루트 셸로 직접 접근할 수 있게 한다.

3. 변경 사항 적용 및 부팅

  • 부팅 시작: Ctrl + X 또는 F10 키를 눌러 수정된 설정으로 부팅한다.

4. 루트 파일 시스템 재마운트

/ 볼륨이 읽기 전용으로 마운트 되어있기 때문에 비밀번호를 변경할 수 없다. 읽기쓰기 모드로 재마운트한다.

# 현재 마운트 상태 확인
mount

# 읽기-쓰기 모드로 재마운트
mount -o remount,rw /

5. 비밀번호 변경 및 시스템 재부팅

# 비밀번호 변경
passwd

# 시스템 재부팅
reboot


GRUB에 비밀번호 지정하여 보안 강화하기

부트로더를 통하여 루트의 비밀번호를 변경할 수 있기 때문에 시스템 보안을 위해 부트로더 접근에 비밀번호를 설정할 수 있다. 이를 통해 무단으로 부트 옵션을 변경하거나 싱글 유저 모드로 부팅하는 것을 방지할 수 있다.

1. 암호화된 비밀번호 생성

# 암호화된 비밀번호 생성
[root@localhost ~]# grub2-mkpasswd-pbkdf2 
암호를 입력하십시오: 
암호를 재입력하십시오: 
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.42F2B494329DC81FF87ED6E998D303B40F61E0991F34FE3C3BD666E2D3E185FAF48153E0EA9385DF65D546B8B15D7DA07FF10F66D7C1780D2F26106D25C2182B.723F547D6E2B99FBEF561D520B7BE37D19347E2A5B817211733853F89AB32F1BB02B4D1F3124FB32A944DE78A782A034DC08D50E5BCAA7C498511DEBC8D755B2

2. 비밀번호 설정 파일 수정

커스텀 설정 파일 수정

sudo vi /etc/grub.d/40_custom

비밀번호 설정 추가

커스텀 파일 마지막줄에 비밀번호 설정을 추가한다.

# set superusers="사용자이름"
# password_pbkdf2 사용자이름 암호화된_비밀번호

set superusers="kyoulho"
password_pdkdf2 kyoulho grub.pbkdf2.sha512.10000.42F2B494329DC81FF87ED6E998D303B40F61E0991F34FE3C3BD666E2D3E185FAF48153E0EA9385DF65D546B8B15D7DA07FF10F66D7C1780D2F26106D25C2182B.723F547D6E2B99FBEF561D520B7BE37D19347E2A5B817211733853F89AB32F1BB02B4D1F3124FB32A944DE78A782A034DC08D50E5BCAA7C498511DEBC8D755B2

설정 적용

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

728x90