Linux에서 GRUB2 부팅 메뉴 사용자 지정하기

LinuxBeginner
지금 연습하기

소개

이 실습에서는 Linux 환경에서 GRUB2 부팅 메뉴를 사용자 지정하는 방법을 배웁니다. GRUB2(GRand Unified Bootloader)는 컴퓨터가 시작될 때 가장 먼저 실행되는 프로그램으로, Linux 커널을 로드하는 역할을 합니다. 실습을 통해 기본 설정 파일인 /etc/default/grub을 직접 다루며 필요에 따라 부팅 환경을 변경하는 실무 경험을 쌓게 됩니다.

먼저 기본 GRUB2 설정을 확인하고 접근하는 것부터 시작합니다. 그 후, 부팅 메뉴가 표시되는 시간을 제어하는 GRUB_TIMEOUT과 기본 부팅 항목을 설정하는 GRUB_DEFAULT와 같은 주요 매개변수를 수정합니다. 마지막으로 grub2-mkconfig 명령어를 사용하여 새로운 GRUB2 설정 파일을 생성하고, 변경 사항이 올바르게 적용되었는지 검증하는 방법을 배웁니다.

참고: 본 실습은 일시적이고 휘발성인 LabEx 가상 환경에서 진행되므로, 실제 시스템을 재부팅하여 부팅 메뉴의 변경 사항을 눈으로 확인할 수는 없습니다. 대신, 생성된 GRUB2 파일을 검사하여 설정 변경을 검증하는 방법을 배웁니다. 이는 시스템 관리자가 운영 환경의 시스템을 재부팅하기 전에 설정을 검증해야 할 때 매우 중요한 기술입니다.

GRUB2 기본 설정 파일 /etc/default/grub 접근하기

이 단계에서는 GRUB2의 메인 설정 파일에 접근하고 내용을 확인하는 방법을 배웁니다. GRUB2(GRand Unified Bootloader, version 2)는 대부분의 현대 Linux 배포판에서 사용하는 기본 부트로더입니다. 컴퓨터를 켤 때 가장 먼저 실행되어 Linux 커널을 메모리에 로드하고 운영 체제를 시작하는 역할을 합니다.

GRUB2의 동작을 사용자 지정하기 위해 수정할 주요 설정 파일은 /etc/default/grub입니다. 이 파일에는 부팅 메뉴 타임아웃, 기본 부팅 운영 체제, 추가 커널 매개변수 등을 제어하는 키-값 쌍이 포함되어 있습니다.

변경을 수행하기 전에 현재 설정을 확인하는 것이 중요합니다. /etc/default/grubroot 사용자가 소유한 시스템 파일이므로, 접근하려면 sudo 명령어를 사용해야 합니다. 터미널에서 내용을 표시하기 위해 cat 명령어를 사용하겠습니다.

다음 명령어를 실행하여 GRUB2 기본 설정 파일의 내용을 확인하세요.

sudo cat /etc/default/grub

나중에 실습 과정에서 비교할 수 있도록 현재의 타임아웃 및 기본 항목 설정을 홈 디렉터리의 파일로 저장해 둡니다.

sudo grep -E "^(GRUB_TIMEOUT|GRUB_DEFAULT)" /etc/default/grub | tee ~/grub-current-settings.txt >/dev/null

다음과 유사한 출력이 나타날 것입니다. 정확한 값은 시스템 설정에 따라 약간 다를 수 있습니다.

GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M rhgb quiet net.ifnames=0 console=tty0 console=ttyS0,115200n8 no_timer_check iommu=pt crash_kexec_post_notifiers=1 nvme_core.io_timeout=4294967295 nvme_core.admin_timeout=4294967295"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true

이 파일에서 중요한 두 가지 매개변수를 간단히 살펴보겠습니다.

  • GRUB_TIMEOUT: 기본 항목으로 자동 부팅되기 전까지 GRUB2 메뉴가 표시되는 시간(초 단위)을 결정합니다.
  • GRUB_DEFAULT: 기본적으로 부팅할 운영 체제나 커널을 지정합니다.

다음 단계에서는 이러한 매개변수를 수정하여 부팅 메뉴의 동작을 변경하는 방법을 배웁니다.

GRUB_TIMEOUT 및 GRUB_DEFAULT 매개변수 수정하기

이 단계에서는 GRUB2 설정 파일을 수정하여 부팅 메뉴의 동작을 변경합니다. 구체적으로 메뉴 타임아웃 시간을 늘리고 특정 기본 부팅 항목을 설정합니다. /etc/default/grub 파일을 편집하기 위해 간단하고 직관적인 명령줄 텍스트 편집기인 nano를 사용합니다. 시스템 파일이므로 편집 권한을 얻기 위해 sudo를 사용해야 합니다.

먼저 sudo 권한으로 nano를 사용하여 파일을 엽니다.

sudo nano /etc/default/grub

nano 편집기가 열리고 파일 내용이 표시됩니다. 이제 두 가지 변경 사항을 적용합니다.

  1. GRUB_TIMEOUT 값 변경: GRUB_TIMEOUT으로 시작하는 줄을 찾습니다. 아마 1로 설정되어 있을 것입니다. 화살표 키를 사용하여 커서를 해당 줄로 이동하고 값을 1에서 15로 변경합니다. 이렇게 하면 GRUB2 메뉴가 자동으로 부팅되기 전까지 15초 동안 대기하게 됩니다.

    변경 후 해당 줄은 다음과 같아야 합니다.

    GRUB_TIMEOUT=15
    
  2. GRUB_DEFAULT 매개변수 변경: GRUB_DEFAULT로 시작하는 줄을 찾습니다. 값은 saved일 수 있습니다. 이 값을 0으로 변경합니다. GRUB_DEFAULT=0으로 설정하면 GRUB2는 메뉴 목록의 첫 번째 항목으로 자동 부팅합니다(목록은 0부터 시작하므로 0이 첫 번째 항목입니다).

    변경 후 해당 줄은 다음과 같아야 합니다.

    GRUB_DEFAULT=0
    

변경을 완료했으면 파일을 저장하고 nano를 종료합니다.

  • Ctrl + O를 눌러 변경 사항을 저장합니다.
  • nano가 저장할 파일 이름을 확인하라고 요청하면 Enter를 누릅니다.
  • Ctrl + X를 눌러 nano 편집기를 종료하고 셸 프롬프트로 돌아옵니다.

이제 GRUB2 기본 설정을 성공적으로 수정했습니다. 다음 단계에서는 이러한 변경 사항을 적용합니다.

GRUB2 설정 변경 사항 적용 및 검증하기

이 단계에서는 이전 단계에서 수행한 설정 변경 사항을 적용하고, GRUB2가 올바르게 설정되었는지 검증하는 방법을 배웁니다. grub2-mkconfig 명령어를 사용하여 수정 사항을 바탕으로 새로운 설정 파일을 생성합니다.

새로운 GRUB2 설정 생성하기

/etc/default/grub 파일을 수정했으므로, 새로운 GRUB2 설정 파일을 생성하여 변경 사항을 적용해야 합니다. grub2-mkconfig 명령어는 /etc/default/grub의 설정과 /etc/grub.d/의 스크립트를 읽어 최종 GRUB2 설정을 만듭니다.

다음 명령어를 실행하여 새로운 설정을 생성하세요.

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

다음과 유사한 출력이 표시될 것입니다.

Generating grub configuration file ...
Adding boot menu entry for UEFI Firmware Settings ...
done

이 명령어는 시스템에서 사용 가능한 커널을 스캔하고, 설정 값을 읽어 최종 GRUB2 메뉴 설정을 생성합니다.

설정 변경 사항 검증하기

변경 사항이 GRUB2 설정에 올바르게 적용되었는지 확인해 보겠습니다. 먼저 수정된 설정이 /etc/default/grub 파일에 반영되어 있는지 확인합니다.

sudo grep -E "(GRUB_TIMEOUT|GRUB_DEFAULT)" /etc/default/grub

수정된 값이 표시되어야 합니다.

GRUB_TIMEOUT=15
GRUB_DEFAULT=0

다음으로, 이 설정들이 생성된 GRUB2 설정 파일에 적용되었는지 확인합니다.

sudo grep -E "(timeout|default)" /boot/grub2/grub.cfg | head -5

실제 GRUB2 설정 파일에 설정이 어떻게 나타나는지 확인할 수 있습니다.

설정 백업 생성하기

변경 사항을 적용하기 전에 중요한 설정 파일의 백업을 생성하는 것은 좋은 습관입니다.

sudo cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.backup

필요한 경우 복구할 수 있는 백업 사본이 생성되었습니다.

GRUB2 설정 문제 해결 및 검증

마지막 단계에서는 GRUB2 설정을 위한 필수 문제 해결 기법을 배우고 변경 사항을 검증하는 방법을 이해합니다. 이러한 기술은 시스템 관리자가 운영 환경의 시스템을 재부팅하기 전에 GRUB2 수정 사항이 올바르게 작동하는지 확인하는 데 매우 중요합니다.

GRUB2 설정 구문 확인

내장된 구문 검사기를 사용하여 GRUB2 설정에 구문 오류가 없는지 확인합니다.

sudo grub2-script-check /boot/grub2/grub.cfg

오류가 없으면 이 명령어는 아무것도 출력하지 않습니다. 구문 오류가 있는 경우 줄 번호와 함께 표시되므로 문제를 식별하고 수정하는 데 도움이 됩니다.

GRUB2 디렉터리 구조 이해

GRUB2 설정 디렉터리 구조를 탐색하여 작동 방식을 이해합니다. 이 디렉터리는 접근 시 루트 권한이 필요합니다.

sudo ls -la /etc/grub.d/

GRUB2 메뉴의 각 부분을 생성하는 모든 스크립트가 표시됩니다. 각 스크립트에는 실행 순서를 결정하는 숫자 접두사가 붙어 있습니다. 다음과 같은 다양한 스크립트를 볼 수 있습니다.

  • 00_header: 기본적인 GRUB2 설정
  • 00_tuned: Tuned 관련 설정
  • 01_users: 사용자 설정
  • 10_linux: Linux 커널을 찾아 추가
  • 20_linux_xen: Xen 하이퍼바이저 지원
  • 30_os-prober: 다른 운영 체제 검색
  • 40_custom: 사용자 정의 메뉴 항목 포함

실제 스크립트는 시스템 설정 및 설치된 패키지에 따라 다를 수 있습니다.

사용 가능한 부팅 항목 확인

생성된 설정에서 어떤 부팅 항목을 사용할 수 있는지 확인합니다.

sudo grep "menuentry" /boot/grub2/grub.cfg | head -10

이 명령어는 메뉴 항목 참조와 실제 메뉴 항목을 보여줍니다. 출력에는 설정 변수(예: menuentry_id_option)와 실제 부팅 메뉴 항목이 모두 포함될 수 있습니다. 전체 메뉴 항목 정의가 포함된 줄을 찾으세요.

타임아웃 및 기본 설정 확인

타임아웃과 기본 설정이 올바르게 구성되었는지 확인합니다.

sudo grep -E "set timeout|set default" /boot/grub2/grub.cfg

설정 파일에 여러 개의 타임아웃 및 기본 설정이 표시될 수 있습니다. 이는 GRUB2가 상황에 따라 다른 타임아웃 값을 사용하기 때문에 정상입니다.

  • 메인 타임아웃 (설정한 대로 보통 15초)
  • 특수 상황을 위한 조건부 타임아웃
  • 다양한 타임아웃 스타일 (메뉴, 숨김)

확인해야 할 핵심 설정은 다음과 같습니다.

  • set default="0" - 첫 번째 메뉴 항목을 기본값으로 설정
  • set timeout=15 - 메인 메뉴 타임아웃을 15초로 설정

GRUB2 복구 알아보기

GRUB2 복구를 이해하는 것은 부팅 문제를 해결하는 데 필수적입니다. 비상 상황에서는 다음을 수행할 수 있습니다.

  1. GRUB2 명령줄 접근: GRUB2 메뉴에서 c를 눌러 명령줄 모드로 진입
  2. 부팅 항목 편집: 부팅 전 e를 눌러 부팅 항목 편집
  3. 복구 모드 사용: GRUB2가 설정을 찾을 수 없는 경우 복구 모드로 전환

일반적인 복구 명령어는 다음과 같습니다.

  • ls: 사용 가능한 파티션 및 파일 나열
  • set root=(hd0,1): 루트 파티션 설정
  • linux /boot/vmlinuz root=/dev/sda1: 커널 로드
  • boot: 부팅 프로세스 시작

최종 설정 검증

전체 GRUB2 설정을 마지막으로 확인합니다.

sudo cat /etc/default/grub | grep -E "(TIMEOUT|DEFAULT)"

기본 설정이 소스 설정 파일에 올바르게 저장되었는지 확인합니다.

학습 내용:

  • GRUB2 타임아웃 및 기본 부팅 설정 수정
  • grub2-mkconfig를 사용하여 설정 변경 사항 적용
  • GRUB2 설정 검증 및 문제 해결 방법 학습
  • 중요한 부팅 파일을 위한 백업 절차 생성
  • GRUB2 디렉터리 구조 및 복구 옵션 이해
  • 시스템 재부팅 전 설정을 검증하는 기술 습득

이제 GRUB2 설정이 15초 타임아웃과 첫 번째 메뉴 항목을 기본값으로 하여 올바르게 사용자 지정되었습니다. 운영 환경에서는 다음 시스템 재부팅 시 이러한 변경 사항이 적용되어 더 사용자 친화적인 부팅 환경을 제공하게 됩니다.

요약

이 종합 실습을 통해 필수적인 GRUB2 부트로더 사용자 지정 및 문제 해결 기법을 직접 경험했습니다. 기본 GRUB2 설정을 검사하는 것부터 시작하여, GRUB_TIMEOUTGRUB_DEFAULT를 포함한 주요 매개변수를 수정하여 부팅 메뉴 동작을 사용자 지정했습니다. grub2-mkconfig 명령어를 사용하여 이러한 변경 사항을 적용하고 수정 사항이 올바르게 구현되었는지 검증하는 방법을 배웠습니다.

개발한 핵심 기술에는 GRUB2 설정 구조 이해, /etc/default/grub 파일의 안전한 수정, 설정 변경 사항의 올바른 적용, 그리고 적절한 검증 및 백업 절차 구현이 포함됩니다. 또한 구문 검사, 설정 유효성 검사, 시스템 관리자에게 필수적인 GRUB2 복구 옵션 이해 등 중요한 문제 해결 기법도 배웠습니다.

이 실습은 시스템 관리자가 실제 환경에서 필요로 하는 실무 기술, 특히 운영 시스템에 적용하기 전에 GRUB2 설정을 검증하는 능력을 강조했습니다. 구문 유효성 검사를 위해 grub2-script-check와 같은 명령어를 사용하고, 다양한 grep 명령어를 사용하여 변경 사항이 생성된 설정 파일에 올바르게 적용되었는지 확인하는 방법을 익혔습니다.

이러한 기술은 엔터프라이즈 Linux 환경에서 부팅 설정 시나리오를 자신 있게 처리하고 부팅 관련 문제를 효과적으로 해결할 수 있도록 준비시켜 줍니다. 실습한 검증 기법은 운영 시스템을 재부팅하기 전에 GRUB2 설정이 올바른지 확인하는 데 특히 유용합니다.