RHEL 9 부팅 커널 및 GRUB 관리 문서 원본 보기
←
RHEL 9 부팅 커널 및 GRUB 관리
둘러보기로 이동
검색으로 이동
문서 편집 작업을 수행할 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 작업은 다음 중 하나의 권한을 가진 사용자에게 제한됩니다:
관리자
, 문서 편집자.
문서의 원본을 보거나 복사할 수 있습니다.
= RHEL 9 부팅 커널 및 GRUB 관리 = __TOC__ == 문서 개요 == 이 문서는 RHEL 9 계열 운영체제에서 설치된 부팅 커널을 확인하고, 기본 부팅 커널을 변경하며, 커널 부팅 인수를 추가하거나 제거하는 방법을 설명한다. RHEL 9에서는 Boot Loader Specification(BLS) 형식의 부팅 항목과 <code>grubby</code> 명령어를 사용하여 커널별 부팅 설정을 관리한다. 주요 작업 범위는 다음과 같다. * 설치된 부팅 커널 확인 * 기본 부팅 커널 확인 및 변경 * 커널 부팅 인수 확인 * 부팅 인수 추가 및 제거 * 일회성 부팅 옵션 변경 * GRUB 설정 파일 확인 * GRUB 설정 재생성 * 부팅 관련 장애 점검 == 적용 대상 == * Red Hat Enterprise Linux 9 * Rocky Linux 9 * AlmaLinux 9 * 기타 RHEL 9 호환 배포판 == 작업 전 주의사항 == <div style="border:1px solid #d33; padding:10px; margin:10px 0; background:#fff5f5;"> '''주의:''' 잘못된 기본 커널 지정이나 커널 부팅 인수 변경은 시스템 부팅 실패, 루트 파일시스템 인식 실패 또는 네트워크 연결 장애를 유발할 수 있다. </div> 작업 전 다음 사항을 확인한다. * 현재 실행 중인 커널 * 기본 부팅 커널 * 정상 부팅 가능한 이전 커널 * 콘솔 또는 원격 관리 접속 수단 * <code>/boot</code> 및 <code>/boot/efi</code> 마운트 상태 * BIOS 또는 UEFI 부팅 방식 * 현재 적용된 커널 명령행 인수 == RHEL 9 GRUB 구성 개요 == === BLS 부팅 항목 === RHEL 9는 커널별 부팅 항목을 Boot Loader Specification 형식으로 관리한다. 일반적인 BLS 부팅 항목 저장 경로: <syntaxhighlight lang="text"> /boot/loader/entries/ </syntaxhighlight> 부팅 항목 파일 확인: <syntaxhighlight lang="bash"> ls -lh /boot/loader/entries/ </syntaxhighlight> 출력 예: <syntaxhighlight lang="text"> -rw-r--r--. 1 root root 456 Jul 10 10:20 0123456789abcdef-5.14.0-570.18.1.el9_6.x86_64.conf -rw-r--r--. 1 root root 454 Jun 16 09:10 0123456789abcdef-5.14.0-570.12.1.el9_6.x86_64.conf -rw-r--r--. 1 root root 392 Jan 15 2026 0123456789abcdef-0-rescue.conf </syntaxhighlight> 각 파일은 특정 커널의 다음 정보를 포함한다. * 부팅 메뉴 제목 * 커널 이미지 경로 * initramfs 이미지 경로 * 커널 명령행 인수 * 시스템 머신 ID === GRUB 설정 파일 경로 === RHEL 9에서 실제 GRUB 설정 파일은 BIOS와 UEFI 환경 모두 다음 경로를 사용한다. <syntaxhighlight lang="text"> /boot/grub2/grub.cfg </syntaxhighlight> UEFI 환경에는 다음 파일이 존재할 수 있다. <syntaxhighlight lang="text"> /boot/efi/EFI/redhat/grub.cfg </syntaxhighlight> 이 파일은 실제 설정 파일이 아니라 <code>/boot/grub2/grub.cfg</code>를 불러오는 스텁 파일이다. <div style="border:1px solid #d33; padding:10px; margin:10px 0; background:#fff5f5;"> '''주의:''' RHEL 9 UEFI 시스템에서 <code>grub2-mkconfig</code>의 출력 대상으로 <code>/boot/efi/EFI/redhat/grub.cfg</code>를 지정하지 않는다. </div> == 부팅 방식 확인 == === UEFI 여부 확인 === <syntaxhighlight lang="bash"> if [[ -d /sys/firmware/efi ]]; then echo "UEFI 부팅 환경" else echo "Legacy BIOS 부팅 환경" fi </syntaxhighlight> === efibootmgr 확인 === UEFI 환경에서는 다음 명령으로 펌웨어 부팅 항목을 확인할 수 있다. <syntaxhighlight lang="bash"> efibootmgr -v </syntaxhighlight> 명령이 없는 경우: <syntaxhighlight lang="bash"> dnf install -y efibootmgr </syntaxhighlight> === 부팅 관련 파티션 확인 === <syntaxhighlight lang="bash"> findmnt /boot findmnt /boot/efi </syntaxhighlight> <syntaxhighlight lang="bash"> lsblk -f </syntaxhighlight> == 현재 실행 중인 커널 확인 == <syntaxhighlight lang="bash"> uname -r </syntaxhighlight> 출력 예: <syntaxhighlight lang="text"> 5.14.0-570.18.1.el9_6.x86_64 </syntaxhighlight> 현재 실행 커널은 설치된 최신 커널이나 기본 부팅 커널과 다를 수 있다. == 설치된 부팅 커널 확인 == === grubby 전체 정보 확인 === <syntaxhighlight lang="bash"> grubby --info=ALL </syntaxhighlight> 출력 예: <syntaxhighlight lang="text"> index=0 kernel="/boot/vmlinuz-5.14.0-570.18.1.el9_6.x86_64" args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M rd.lvm.lv=rl/root rhgb quiet" root="/dev/mapper/rl-root" initrd="/boot/initramfs-5.14.0-570.18.1.el9_6.x86_64.img" title="Rocky Linux (5.14.0-570.18.1.el9_6.x86_64) 9.6 (Blue Onyx)" id="0123456789abcdef-5.14.0-570.18.1.el9_6.x86_64" index=1 kernel="/boot/vmlinuz-5.14.0-570.12.1.el9_6.x86_64" args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M rd.lvm.lv=rl/root rhgb quiet" root="/dev/mapper/rl-root" initrd="/boot/initramfs-5.14.0-570.12.1.el9_6.x86_64.img" title="Rocky Linux (5.14.0-570.12.1.el9_6.x86_64) 9.6 (Blue Onyx)" id="0123456789abcdef-5.14.0-570.12.1.el9_6.x86_64" </syntaxhighlight> 주요 항목: {| class="wikitable" ! 항목 ! 설명 |- | index | GRUB 부팅 항목 순번 |- | kernel | 커널 이미지 경로 |- | args | 해당 커널에 적용되는 부팅 인수 |- | root | 루트 파일시스템 장치 |- | initrd | initramfs 이미지 경로 |- | title | GRUB 메뉴에 표시되는 제목 |- | id | BLS 부팅 항목 ID |} === 커널 경로만 확인 === <syntaxhighlight lang="bash"> grubby --info=ALL | grep '^kernel=' </syntaxhighlight> === 부팅 메뉴 제목만 확인 === <syntaxhighlight lang="bash"> grubby --info=ALL | grep '^title=' </syntaxhighlight> === 인덱스와 커널 경로 함께 확인 === <syntaxhighlight lang="bash"> grubby --info=ALL | awk -F= ' /^index=/ { index=$2 } /^kernel=/ { print "index=" index, $0 } ' </syntaxhighlight> == 기본 부팅 커널 확인 == === 기본 커널 이미지 확인 === <syntaxhighlight lang="bash"> grubby --default-kernel </syntaxhighlight> 출력 예: <syntaxhighlight lang="text"> /boot/vmlinuz-5.14.0-570.18.1.el9_6.x86_64 </syntaxhighlight> === 기본 커널 버전만 확인 === <syntaxhighlight lang="bash"> basename "$(grubby --default-kernel)" | sed 's/^vmlinuz-//' </syntaxhighlight> 출력 예: <syntaxhighlight lang="text"> 5.14.0-570.18.1.el9_6.x86_64 </syntaxhighlight> === 기본 부팅 인덱스 확인 === <syntaxhighlight lang="bash"> grubby --default-index </syntaxhighlight> 출력 예: <syntaxhighlight lang="text"> 0 </syntaxhighlight> === 기본 부팅 항목 상세 확인 === <syntaxhighlight lang="bash"> grubby --info="$(grubby --default-kernel)" </syntaxhighlight> == 기본 부팅 커널 변경 == === 작업 전 확인 === <syntaxhighlight lang="bash"> uname -r grubby --default-kernel grubby --info=ALL rpm -q kernel-core </syntaxhighlight> 변경 대상 커널 이미지가 실제로 존재하는지 확인한다. <syntaxhighlight lang="bash"> ls -lh /boot/vmlinuz-* </syntaxhighlight> 대상 initramfs 확인: <syntaxhighlight lang="bash"> ls -lh /boot/initramfs-*.img </syntaxhighlight> === 특정 커널을 기본값으로 지정 === <syntaxhighlight lang="bash"> grubby --set-default \ /boot/vmlinuz-5.14.0-570.12.1.el9_6.x86_64 </syntaxhighlight> 출력 예: <syntaxhighlight lang="text"> The default is /boot/loader/entries/0123456789abcdef-5.14.0-570.12.1.el9_6.x86_64.conf with index 1 and kernel /boot/vmlinuz-5.14.0-570.12.1.el9_6.x86_64 </syntaxhighlight> === 현재 실행 중인 커널을 기본값으로 지정 === <syntaxhighlight lang="bash"> grubby --set-default "/boot/vmlinuz-$(uname -r)" </syntaxhighlight> === 인덱스로 기본값 지정 === 먼저 인덱스를 확인한다. <syntaxhighlight lang="bash"> grubby --info=ALL | grep -E '^(index|kernel|title)=' </syntaxhighlight> 인덱스 1을 기본 부팅 항목으로 지정하는 예: <syntaxhighlight lang="bash"> grubby --set-default-index=1 </syntaxhighlight> <div style="border:1px solid #e6a700; padding:10px; margin:10px 0; background:#fffbea;"> '''권장:''' 운영 환경에서는 인덱스보다 커널 이미지 경로를 지정하는 방식이 더 명확하다. 커널 설치 또는 삭제 후 인덱스 순서가 변경될 수 있다. </div> === 변경 결과 확인 === <syntaxhighlight lang="bash"> grubby --default-kernel grubby --default-index </syntaxhighlight> === 재부팅 === <syntaxhighlight lang="bash"> systemctl reboot </syntaxhighlight> === 재부팅 후 검증 === <syntaxhighlight lang="bash"> uname -r grubby --default-kernel </syntaxhighlight> == 실행 커널과 기본 커널 비교 == <syntaxhighlight lang="bash"> running_kernel=$(uname -r) default_kernel=$( basename "$(grubby --default-kernel)" | sed 's/^vmlinuz-//' ) printf '실행 중인 커널 : %s\n' "$running_kernel" printf '기본 부팅 커널 : %s\n' "$default_kernel" if [[ "$running_kernel" == "$default_kernel" ]]; then echo "실행 커널과 기본 부팅 커널이 일치합니다." else echo "실행 커널과 기본 부팅 커널이 다릅니다." fi </syntaxhighlight> == 현재 적용된 커널 부팅 인수 확인 == === /proc/cmdline 확인 === 현재 부팅 시 실제로 커널에 전달된 인수를 확인한다. <syntaxhighlight lang="bash"> cat /proc/cmdline </syntaxhighlight> 출력 예: <syntaxhighlight lang="text"> BOOT_IMAGE=(hd0,gpt2)/vmlinuz-5.14.0-570.18.1.el9_6.x86_64 root=/dev/mapper/rl-root ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M rd.lvm.lv=rl/root rhgb quiet </syntaxhighlight> === 기본 커널에 설정된 인수 확인 === <syntaxhighlight lang="bash"> grubby --info="$(grubby --default-kernel)" | grep '^args=' </syntaxhighlight> === 모든 커널의 부팅 인수 확인 === <syntaxhighlight lang="bash"> grubby --info=ALL | grep '^args=' </syntaxhighlight> === BLS 파일에서 직접 확인 === <syntaxhighlight lang="bash"> grep -H '^options ' /boot/loader/entries/*.conf </syntaxhighlight> <div style="border:1px solid #e6a700; padding:10px; margin:10px 0; background:#fffbea;"> '''참고:''' <code>/proc/cmdline</code>은 현재 실행 중인 커널에 실제 적용된 값이며, <code>grubby --info</code>는 다음 부팅에 사용할 저장된 설정을 보여준다. </div> == 커널 부팅 인수 추가 == RHEL 9에서 신규 커널이 설치되면 일반적으로 기존 커널의 명령행 인수가 신규 커널에도 전달된다. === 기본 커널에 인수 추가 === 예제로 커널 패닉 후 10초 뒤 재부팅하도록 설정한다. <syntaxhighlight lang="bash"> grubby \ --update-kernel=DEFAULT \ --args="panic=10" </syntaxhighlight> === 모든 설치 커널에 인수 추가 === <syntaxhighlight lang="bash"> grubby \ --update-kernel=ALL \ --args="panic=10" </syntaxhighlight> === 특정 커널에 인수 추가 === <syntaxhighlight lang="bash"> grubby \ --update-kernel=/boot/vmlinuz-5.14.0-570.18.1.el9_6.x86_64 \ --args="panic=10" </syntaxhighlight> === 여러 인수 추가 === <syntaxhighlight lang="bash"> grubby \ --update-kernel=ALL \ --args="panic=10 audit=1" </syntaxhighlight> === 적용 결과 확인 === <syntaxhighlight lang="bash"> grubby --info=ALL | grep '^args=' </syntaxhighlight> === 재부팅 후 적용 확인 === <syntaxhighlight lang="bash"> cat /proc/cmdline </syntaxhighlight> == 커널 부팅 인수 제거 == === 기본 커널에서 제거 === <syntaxhighlight lang="bash"> grubby \ --update-kernel=DEFAULT \ --remove-args="panic=10" </syntaxhighlight> === 모든 커널에서 제거 === <syntaxhighlight lang="bash"> grubby \ --update-kernel=ALL \ --remove-args="panic=10" </syntaxhighlight> === 여러 인수 제거 === <syntaxhighlight lang="bash"> grubby \ --update-kernel=ALL \ --remove-args="panic=10 audit=1" </syntaxhighlight> === 적용 결과 확인 === <syntaxhighlight lang="bash"> grubby --info=ALL | grep '^args=' </syntaxhighlight> == 자주 사용하는 부팅 인수 예제 == {| class="wikitable" ! 인수 ! 기능 ! 주의사항 |- | <code>rhgb</code> | 그래픽 부팅 화면 사용 | 장애 분석 시 제거할 수 있음 |- | <code>quiet</code> | 부팅 메시지 출력을 줄임 | 장애 분석 시 제거하면 로그 확인이 쉬움 |- | <code>rd.break</code> | initramfs 단계에서 셸 진입 | 비밀번호 복구 또는 초기 부팅 장애 분석에 사용 |- | <code>systemd.unit=rescue.target</code> | 복구 모드로 부팅 | 최소 서비스만 시작 |- | <code>systemd.unit=emergency.target</code> | 긴급 모드로 부팅 | 대부분의 서비스와 파일시스템이 자동 시작되지 않음 |- | <code>selinux=0</code> | SELinux 완전 비활성화 | 일반적인 장애 분석 용도로 권장하지 않음 |- | <code>enforcing=0</code> | SELinux Permissive 모드로 부팅 | 임시 장애 분석에 사용 가능 |- | <code>panic=10</code> | 커널 패닉 후 10초 뒤 재부팅 | 장애 원인 분석 전에 자동 재부팅될 수 있음 |- | <code>audit=1</code> | 부팅 초기부터 audit 활성화 | 보안 감사 목적 |- | <code>nomodeset</code> | 커널 그래픽 모드 설정 비활성화 | GPU 또는 화면 출력 장애 분석 시 제한적으로 사용 |- | <code>ipv6.disable=1</code> | IPv6 기능 비활성화 | 서비스 의존성과 네트워크 영향을 확인해야 함 |- | <code>mitigations=off</code> | 일부 CPU 보안 완화 기능 비활성화 | 보안 위험이 있으므로 운영 환경 비권장 |} <div style="border:1px solid #d33; padding:10px; margin:10px 0; background:#fff5f5;"> '''주의:''' <code>selinux=0</code>, <code>mitigations=off</code>, 스토리지 관련 <code>rd.*</code> 인수는 시스템 보안 또는 부팅에 큰 영향을 줄 수 있다. </div> == 일회성 부팅 옵션 변경 == 일회성 변경은 GRUB 메뉴에서 특정 부팅 항목을 편집하여 적용한다. 이 방법으로 변경한 값은 다음 부팅에 영구 저장되지 않는다. === 적용 절차 === # 시스템 부팅 시 GRUB 메뉴를 표시한다. # 사용할 커널 항목을 선택한다. # <code>e</code> 키를 눌러 편집 모드로 진입한다. # <code>linux</code> 또는 <code>linuxefi</code>로 시작하는 줄을 찾는다. # 필요한 인수를 추가하거나 제거한다. # <code>Ctrl+x</code> 또는 <code>F10</code>을 눌러 부팅한다. === 부팅 메시지 상세 출력 === 다음 항목을 제거한다. <syntaxhighlight lang="text"> rhgb quiet </syntaxhighlight> === rescue.target 부팅 === 커널 인수 끝에 다음을 추가한다. <syntaxhighlight lang="text"> systemd.unit=rescue.target </syntaxhighlight> === emergency.target 부팅 === <syntaxhighlight lang="text"> systemd.unit=emergency.target </syntaxhighlight> === initramfs 중단점 진입 === <syntaxhighlight lang="text"> rd.break </syntaxhighlight> == GRUB 메뉴 표시 설정 == === 현재 설정 확인 === <syntaxhighlight lang="bash"> grep -E \ '^(GRUB_TIMEOUT|GRUB_TIMEOUT_STYLE|GRUB_DEFAULT|GRUB_DISABLE_SUBMENU)' \ /etc/default/grub </syntaxhighlight> === 설정 파일 백업 === <syntaxhighlight lang="bash"> cp -a /etc/default/grub \ /etc/default/grub.$(date +%Y%m%d-%H%M%S).bak </syntaxhighlight> === 설정 예제 === <syntaxhighlight lang="ini"> GRUB_TIMEOUT=5 GRUB_TIMEOUT_STYLE=menu </syntaxhighlight> 주요 항목: {| class="wikitable" ! 설정 ! 설명 |- | GRUB_TIMEOUT | 기본 항목이 자동 부팅되기 전 대기 시간 |- | GRUB_TIMEOUT_STYLE=menu | 부팅 메뉴를 표시 |- | GRUB_TIMEOUT_STYLE=hidden | 메뉴를 숨기고 제한 시간 동안 키 입력 대기 |- | GRUB_DEFAULT=saved | 저장된 기본 부팅 항목 사용 |} === 설정 반영 === BIOS와 UEFI 환경 모두 다음 경로에 설정을 생성한다. <syntaxhighlight lang="bash"> grub2-mkconfig -o /boot/grub2/grub.cfg </syntaxhighlight> === 적용 후 확인 === <syntaxhighlight lang="bash"> grep -E \ '^(set timeout|set default|menuentry|submenu)' \ /boot/grub2/grub.cfg | head -30 </syntaxhighlight> == GRUB 설정 파일 재생성 == === 사용 목적 === 다음과 같은 경우 GRUB 설정 파일을 재생성할 수 있다. * <code>/etc/default/grub</code> 변경 * <code>/etc/grub.d/</code> 템플릿 변경 * 부팅 메뉴 설정 오류 * GRUB 설정 파일 손상 * 부팅 항목 표시 문제 === 작업 전 백업 === <syntaxhighlight lang="bash"> cp -a /boot/grub2/grub.cfg \ /boot/grub2/grub.cfg.$(date +%Y%m%d-%H%M%S).bak </syntaxhighlight> <syntaxhighlight lang="bash"> cp -a /etc/default/grub \ /etc/default/grub.$(date +%Y%m%d-%H%M%S).bak </syntaxhighlight> === 문법 및 파일 확인 === <syntaxhighlight lang="bash"> ls -lh /boot/grub2/grub.cfg ls -lh /boot/loader/entries/ </syntaxhighlight> === GRUB 설정 생성 === <syntaxhighlight lang="bash"> grub2-mkconfig -o /boot/grub2/grub.cfg </syntaxhighlight> 출력 예: <syntaxhighlight lang="text"> Generating grub configuration file ... Adding boot menu entry for UEFI Firmware Settings ... done </syntaxhighlight> === 생성 후 검증 === <syntaxhighlight lang="bash"> test -s /boot/grub2/grub.cfg && echo "grub.cfg 파일 존재 및 크기 정상" </syntaxhighlight> <syntaxhighlight lang="bash"> grep -E 'blscfg|menuentry' /boot/grub2/grub.cfg | head </syntaxhighlight> <syntaxhighlight lang="bash"> grubby --info=ALL </syntaxhighlight> == UEFI 환경 주의사항 == === UEFI GRUB 스텁 파일 확인 === Rocky Linux: <syntaxhighlight lang="bash"> cat /boot/efi/EFI/rocky/grub.cfg </syntaxhighlight> RHEL: <syntaxhighlight lang="bash"> cat /boot/efi/EFI/redhat/grub.cfg </syntaxhighlight> AlmaLinux: <syntaxhighlight lang="bash"> cat /boot/efi/EFI/almalinux/grub.cfg </syntaxhighlight> 일반적으로 다음과 같이 실제 GRUB 설정 파일을 검색하거나 불러오는 간단한 내용이 포함된다. <syntaxhighlight lang="text"> search --no-floppy --fs-uuid --set=dev ... set prefix=($dev)/grub2 export $prefix configfile $prefix/grub.cfg </syntaxhighlight> <div style="border:1px solid #d33; padding:10px; margin:10px 0; background:#fff5f5;"> '''주의:''' 다음과 같이 UEFI 스텁 파일을 직접 재생성하지 않는다. </div> <syntaxhighlight lang="bash"> grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg </syntaxhighlight> RHEL 9에서는 다음 경로를 사용한다. <syntaxhighlight lang="bash"> grub2-mkconfig -o /boot/grub2/grub.cfg </syntaxhighlight> == BLS 부팅 항목 직접 확인 == === 전체 항목 확인 === <syntaxhighlight lang="bash"> for file in /boot/loader/entries/*.conf; do echo "===== $file =====" cat "$file" echo done </syntaxhighlight> === 주요 설정만 확인 === <syntaxhighlight lang="bash"> grep -H -E \ '^(title|version|linux|initrd|options|id) ' \ /boot/loader/entries/*.conf </syntaxhighlight> 출력 예: <syntaxhighlight lang="text"> title Rocky Linux (5.14.0-570.18.1.el9_6.x86_64) 9.6 (Blue Onyx) version 5.14.0-570.18.1.el9_6.x86_64 linux /vmlinuz-5.14.0-570.18.1.el9_6.x86_64 initrd /initramfs-5.14.0-570.18.1.el9_6.x86_64.img options root=/dev/mapper/rl-root ro rd.lvm.lv=rl/root rhgb quiet </syntaxhighlight> === 특정 커널 항목 찾기 === <syntaxhighlight lang="bash"> grep -Rl \ '5.14.0-570.18.1.el9_6.x86_64' \ /boot/loader/entries/ </syntaxhighlight> <div style="border:1px solid #e6a700; padding:10px; margin:10px 0; background:#fffbea;"> '''권장:''' BLS 파일을 직접 수정하기보다 <code>grubby</code>를 사용한다. 직접 수정하면 커널 업데이트나 설정 재생성 과정에서 관리가 복잡해질 수 있다. </div> == rescue 부팅 항목 확인 == === rescue 커널 확인 === <syntaxhighlight lang="bash"> grubby --info=ALL | grep -A6 -B1 'rescue' </syntaxhighlight> === rescue 이미지 확인 === <syntaxhighlight lang="bash"> ls -lh /boot/vmlinuz-0-rescue-* /boot/initramfs-0-rescue-*.img </syntaxhighlight> === rescue BLS 항목 확인 === <syntaxhighlight lang="bash"> ls -lh /boot/loader/entries/*rescue*.conf </syntaxhighlight> rescue 항목은 일반 커널이 부팅되지 않을 때 사용할 수 있으므로 임의로 삭제하지 않는다. == 기본 점검 명령어 모음 == <syntaxhighlight lang="bash"> echo "=== 부팅 방식 ===" if [[ -d /sys/firmware/efi ]]; then echo "UEFI" else echo "Legacy BIOS" fi echo echo "=== 현재 실행 커널 ===" uname -r echo echo "=== 기본 부팅 커널 ===" grubby --default-kernel echo echo "=== 기본 부팅 인덱스 ===" grubby --default-index echo echo "=== 설치된 부팅 항목 ===" grubby --info=ALL echo echo "=== 현재 적용된 커널 인수 ===" cat /proc/cmdline echo echo "=== BLS 부팅 항목 ===" ls -lh /boot/loader/entries/ echo echo "=== GRUB 설정 파일 ===" ls -lh /boot/grub2/grub.cfg echo echo "=== boot 마운트 ===" findmnt /boot findmnt /boot/efi </syntaxhighlight> == 장애 발생 시 확인 == === 기본 커널을 변경했지만 이전 커널로 부팅됨 === ==== 확인 ==== <syntaxhighlight lang="bash"> uname -r grubby --default-kernel grubby --default-index grubby --info=ALL </syntaxhighlight> ==== 원인 가능성 ==== # GRUB 메뉴에서 다른 커널을 수동 선택함 # 기본 부팅 항목 변경이 적용되지 않음 # 신규 커널 부팅 실패 후 이전 커널로 복귀함 # <code>grubenv</code> 저장 정보 오류 # UEFI 펌웨어가 다른 디스크의 GRUB를 부팅함 ==== 추가 확인 ==== <syntaxhighlight lang="bash"> grub2-editenv list </syntaxhighlight> UEFI 환경: <syntaxhighlight lang="bash"> efibootmgr -v </syntaxhighlight> === grubby에 커널이 표시되지 않음 === ==== 확인 ==== <syntaxhighlight lang="bash"> rpm -q kernel-core ls -lh /boot/vmlinuz-* ls -lh /boot/initramfs-*.img ls -lh /boot/loader/entries/ </syntaxhighlight> ==== 원인 가능성 ==== # 커널 패키지 설치 실패 # BLS 항목 누락 # <code>/boot</code> 미마운트 상태에서 커널 설치 # 커널 또는 initramfs 파일 수동 삭제 # <code>/boot</code> 용량 부족 === 부팅 인수를 추가했지만 적용되지 않음 === ==== 확인 ==== 저장된 설정: <syntaxhighlight lang="bash"> grubby --info=ALL | grep '^args=' </syntaxhighlight> 현재 적용된 설정: <syntaxhighlight lang="bash"> cat /proc/cmdline </syntaxhighlight> ==== 원인 가능성 ==== # 변경 후 재부팅하지 않음 # 다른 커널로 부팅함 # 특정 커널에만 인수를 적용함 # GRUB 메뉴에서 일회성으로 인수를 수정함 # 중복된 커널 인수로 인해 다른 값이 우선 적용됨 === grub2-mkconfig 후 부팅 메뉴가 사라짐 === ==== 확인 ==== <syntaxhighlight lang="bash"> ls -lh /boot/grub2/grub.cfg ls -lh /boot/loader/entries/ grep -E 'blscfg|menuentry' /boot/grub2/grub.cfg | head </syntaxhighlight> ==== 원인 가능성 ==== # 잘못된 출력 경로에 설정 파일 생성 # UEFI 스텁 파일을 직접 덮어씀 # BLS 설정 비활성화 # <code>/boot</code> 미마운트 # 설정 파일 생성 중 오류 === 부팅 시 GRUB 메뉴가 표시되지 않음 === ==== 확인 ==== <syntaxhighlight lang="bash"> grep -E \ '^(GRUB_TIMEOUT|GRUB_TIMEOUT_STYLE)' \ /etc/default/grub </syntaxhighlight> ==== 설정 예 ==== <syntaxhighlight lang="ini"> GRUB_TIMEOUT=5 GRUB_TIMEOUT_STYLE=menu </syntaxhighlight> ==== 적용 ==== <syntaxhighlight lang="bash"> grub2-mkconfig -o /boot/grub2/grub.cfg </syntaxhighlight> == 작업 예제: 이전 커널을 기본값으로 변경 == === 1. 현재 상태 확인 === <syntaxhighlight lang="bash"> uname -r grubby --default-kernel grubby --info=ALL </syntaxhighlight> === 2. 이전 커널 파일 확인 === <syntaxhighlight lang="bash"> ls -lh \ /boot/vmlinuz-5.14.0-570.12.1.el9_6.x86_64 \ /boot/initramfs-5.14.0-570.12.1.el9_6.x86_64.img </syntaxhighlight> === 3. 기본 커널 변경 === <syntaxhighlight lang="bash"> grubby --set-default \ /boot/vmlinuz-5.14.0-570.12.1.el9_6.x86_64 </syntaxhighlight> === 4. 적용 결과 확인 === <syntaxhighlight lang="bash"> grubby --default-kernel grubby --default-index </syntaxhighlight> === 5. 재부팅 === <syntaxhighlight lang="bash"> systemctl reboot </syntaxhighlight> === 6. 재부팅 후 확인 === <syntaxhighlight lang="bash"> uname -r journalctl -k -b 0 -p err --no-pager systemctl --failed --no-pager </syntaxhighlight> == 작업 예제: 부팅 메시지 상세 표시 == 기본적으로 설정된 <code>rhgb quiet</code> 인수를 제거하여 부팅 메시지를 자세히 표시한다. === 작업 전 백업 및 확인 === <syntaxhighlight lang="bash"> grubby --info=ALL | grep '^args=' </syntaxhighlight> === 모든 커널에서 제거 === <syntaxhighlight lang="bash"> grubby \ --update-kernel=ALL \ --remove-args="rhgb quiet" </syntaxhighlight> === 적용 확인 === <syntaxhighlight lang="bash"> grubby --info=ALL | grep '^args=' </syntaxhighlight> === 원복 === <syntaxhighlight lang="bash"> grubby \ --update-kernel=ALL \ --args="rhgb quiet" </syntaxhighlight> == 최종 점검표 == {| class="wikitable" ! 단계 ! 점검 항목 ! 명령어 |- | 작업 전 | 현재 실행 커널 | <code>uname -r</code> |- | 작업 전 | 기본 부팅 커널 | <code>grubby --default-kernel</code> |- | 작업 전 | 전체 부팅 항목 | <code>grubby --info=ALL</code> |- | 작업 전 | 현재 부팅 인수 | <code>cat /proc/cmdline</code> |- | 작업 전 | boot 마운트 | <code>findmnt /boot</code> |- | 변경 후 | 기본 커널 | <code>grubby --default-kernel</code> |- | 변경 후 | 저장된 부팅 인수 | <code>grubby --info=ALL</code> |- | 재부팅 후 | 실제 실행 커널 | <code>uname -r</code> |- | 재부팅 후 | 실제 적용 인수 | <code>cat /proc/cmdline</code> |- | 재부팅 후 | 커널 오류 | <code>journalctl -k -b 0 -p err</code> |} == 관련 문서 == * [[RHEL 9 커널 관리 가이드]] * [[RHEL 9 커널 기본 정보 확인]] * [[RHEL 9 커널 패키지 설치 및 업데이트]] * [[RHEL 9 initramfs 및 dracut 관리]] * [[RHEL 9 커널 장애 분석]] * [[RHEL 9 부팅 장애 복구]] == 참고 자료 == * Red Hat Enterprise Linux 9 - Configuring kernel command-line parameters * Red Hat Enterprise Linux 9 - Managing, monitoring, and updating the kernel * Red Hat Enterprise Linux 9 - Reinstalling GRUB == 변경 이력 == {| class="wikitable" ! 날짜 ! 변경 내용 ! 작성자 |- | 2026-07-10 | 최초 작성 | changil |}
RHEL 9 부팅 커널 및 GRUB 관리
문서로 돌아갑니다.
둘러보기 메뉴
개인 도구
로그인
associated-pages
문서
토론
한국어
보기
읽기
원본 보기
역사 보기
더 보기
검색
둘러보기
대문
최근 바뀜
임의 문서로
미디어위키 도움말
특수 문서 목록
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
문서 정보