RHEL 9 커널 패키지 설치 및 업데이트
RHEL 9 커널 패키지 설치 및 업데이트
문서 개요
이 문서는 RHEL 9 계열 운영체제에서 커널 업데이트를 확인하고, 신규 커널을 설치하며, 오래된 커널을 안전하게 제거하는 방법을 설명한다.
RHEL 계열 운영체제는 커널 업데이트 시 기존 커널을 즉시 덮어쓰지 않고 새로운 버전의 커널을 추가로 설치한다.
따라서 신규 커널에 문제가 발생할 경우 GRUB 메뉴에서 이전 정상 커널로 부팅할 수 있다.
적용 대상
- Red Hat Enterprise Linux 9
- Rocky Linux 9
- AlmaLinux 9
- 기타 RHEL 9 호환 배포판
작업 전 주의사항
주의: 커널 업데이트 후 신규 커널을 적용하려면 시스템 재부팅이 필요하다. 운영 서버에서는 서비스 중단 시간과 콘솔 접속 수단을 확보한 후 작업한다.
작업 전 다음 항목을 확인한다.
- 현재 실행 중인 커널
- 기본 부팅 커널
- 설치된 커널 버전
- 이전 정상 커널 존재 여부
/boot및/boot/efi여유 공간- 외부 커널 모듈 또는 벤더 드라이버 사용 여부
- Secure Boot 사용 여부
- 시스템 재부팅 가능 여부
작업 전 기본 점검
현재 실행 중인 커널 확인
uname -r
기본 부팅 커널 확인
grubby --default-kernel
설치된 커널 확인
rpm -q kernel
rpm -q kernel-core
커널 관련 패키지 전체 확인
rpm -qa 'kernel*' | sort
boot 영역 확인
df -h /boot /boot/efi 2>/dev/null
마운트 상태 확인
findmnt /boot
findmnt /boot/efi
별도의 /boot 파티션을 사용하는 환경에서 해당 파티션이 마운트되지 않은 상태로 커널을 설치하면 잘못된 파일시스템 위치에 커널 파일이 생성될 수 있다.
부팅 커널 목록 확인
grubby --info=ALL
현재 부팅 로그의 오류 확인
journalctl -k -b 0 -p err --no-pager
커널 업데이트 확인
dnf check-update 사용
설치 가능한 커널 업데이트를 확인한다.
dnf check-update kernel
커널 관련 패키지를 전체적으로 확인한다.
dnf check-update 'kernel*'
시스템 전체 업데이트를 확인한다.
dnf check-update
업데이트가 존재할 경우 출력 예:
kernel.x86_64 5.14.0-570.26.1.el9_6 baseos
kernel-core.x86_64 5.14.0-570.26.1.el9_6 baseos
kernel-modules.x86_64 5.14.0-570.26.1.el9_6 baseos
종료 코드 확인
dnf check-update는 업데이트가 존재하면 종료 코드 100을 반환할 수 있다.
dnf check-update kernel
echo $?
주요 종료 코드:
| 종료 코드 | 의미 |
|---|---|
| 0 | 업데이트할 패키지가 없음 |
| 100 | 업데이트 가능한 패키지가 있음 |
| 기타 | 저장소 또는 DNF 처리 오류 가능 |
참고: 종료 코드 100은 명령 실패가 아니라 업데이트 가능한 패키지가 있다는 의미다.
사용 가능한 커널 버전 확인
기본 목록 확인
dnf list kernel
설치 가능한 모든 버전 확인
dnf --showduplicates list kernel
출력 예:
Installed Packages
kernel.x86_64 5.14.0-570.18.1.el9_6 @baseos
Available Packages
kernel.x86_64 5.14.0-570.26.1.el9_6 baseos
repoquery 사용
dnf repoquery kernel
설치 가능한 패키지만 확인:
dnf repoquery --available kernel
설치된 패키지만 확인:
dnf repoquery --installed kernel
repoquery 명령을 사용할 수 없는 경우 다음 패키지를 설치한다.
dnf install -y dnf-plugins-core
커널 업데이트
커널 패키지만 업데이트
dnf update kernel
다음과 같이 관련 커널 패키지가 의존성에 따라 함께 설치될 수 있다.
- kernel
- kernel-core
- kernel-modules-core
- kernel-modules
- kernel-modules-extra
커널 관련 패키지 전체 업데이트
dnf update 'kernel*'
이 명령은 kernel-tools, kernel-headers, kernel-devel 등도 함께 업데이트할 수 있다.
시스템 전체 업데이트
dnf update
RHEL 9에서는 다음 명령도 동일한 목적으로 사용할 수 있다.
dnf upgrade
시스템 전체 업데이트는 커널뿐 아니라 보안 패치, 라이브러리 및 서비스 패키지도 함께 갱신한다. DNF는 선택한 패키지에 의존성이 있으면 관련 의존 패키지도 함께 업데이트한다. :contentReference[oaicite:1]{index=1}
자동 승인 없이 업데이트 내용 확인
운영 환경에서는 먼저 변경 대상 패키지를 확인한 후 승인하는 것이 좋다.
dnf update kernel
출력되는 다음 항목을 확인한다.
- Installing
- Upgrading
- Removing
- Transaction Summary
- Download size
- 설치 대상 커널 버전
확인 후 y를 입력하여 진행한다.
자동 승인 방식
dnf update -y kernel
권장: 운영 서버에서는 먼저 -y 없이 트랜잭션 내용을 확인한 후 업데이트한다.
특정 커널 버전 설치
정확한 패키지 버전 확인
dnf --showduplicates list kernel kernel-core kernel-modules
특정 버전 설치
다음은 예제이며 실제 저장소에 존재하는 버전을 입력해야 한다.
dnf install \
kernel-5.14.0-570.26.1.el9_6 \
kernel-core-5.14.0-570.26.1.el9_6 \
kernel-modules-core-5.14.0-570.26.1.el9_6 \
kernel-modules-5.14.0-570.26.1.el9_6
아키텍처까지 명시하는 경우:
dnf install \
kernel-5.14.0-570.26.1.el9_6.x86_64 \
kernel-core-5.14.0-570.26.1.el9_6.x86_64 \
kernel-modules-core-5.14.0-570.26.1.el9_6.x86_64 \
kernel-modules-5.14.0-570.26.1.el9_6.x86_64
설치 환경에 따라 kernel-modules-extra 패키지가 추가로 필요할 수 있다.
dnf install kernel-modules-extra-5.14.0-570.26.1.el9_6.x86_64
설치 후 확인
rpm -q kernel kernel-core kernel-modules-core kernel-modules
grubby --info=ALL
ls -lh /boot/vmlinuz-* /boot/initramfs-*.img
현재 커널 패키지 재설치
사용 목적
다음과 같은 상황에서 동일 버전의 커널 패키지를 재설치할 수 있다.
- 커널 이미지 파일 손상
- 커널 모듈 파일 누락
- RPM 검증 오류
- 패키지 설치 중단
- initramfs 생성 과정 문제
작업 전 검증
rpm -V kernel-core-$(uname -r)
rpm -V kernel-modules-core-$(uname -r)
rpm -V kernel-modules-$(uname -r)
출력이 없으면 RPM 관리 기준으로 변경 또는 누락된 파일이 없다는 의미다.
재설치
주의: 현재 실행 중인 커널 패키지를 재설치하기 전에 이전 정상 커널과 콘솔 접속 수단을 확보한다.
dnf reinstall \
kernel-core-$(uname -r) \
kernel-modules-core-$(uname -r) \
kernel-modules-$(uname -r)
설치 구성에 따라 일부 패키지가 없을 수 있다.
패키지 존재 여부를 먼저 확인한다.
rpm -q \
kernel-core-$(uname -r) \
kernel-modules-core-$(uname -r) \
kernel-modules-$(uname -r)
재설치 후 확인
rpm -V kernel-core-$(uname -r)
ls -lh /boot/vmlinuz-$(uname -r)
ls -lh /boot/initramfs-$(uname -r).img
커널 설치 후 점검
설치된 커널 확인
rpm -q kernel-core
버전 순으로 확인:
rpm -q kernel-core \
--qf '%{VERSION}-%{RELEASE}.%{ARCH}\n' |
sort -V
기본 부팅 커널 확인
grubby --default-kernel
전체 부팅 항목 확인
grubby --info=ALL
신규 커널 파일 확인
ls -lh /boot/vmlinuz-* /boot/initramfs-*.img
boot 용량 재확인
df -h /boot /boot/efi 2>/dev/null
DNF 작업 이력 확인
dnf history
가장 최근 트랜잭션 상세 확인:
dnf history info last
특정 트랜잭션 확인:
dnf history info 트랜잭션번호
재부팅 전 확인
실행 커널과 기본 커널 비교
running_kernel=$(uname -r)
default_kernel=$(
basename "$(grubby --default-kernel)" |
sed 's/^vmlinuz-//'
)
printf '실행 중인 커널 : %s\n' "$running_kernel"
printf '기본 부팅 커널 : %s\n' "$default_kernel"
신규 커널을 설치한 직후에는 두 값이 다른 것이 정상일 수 있다.
실패한 서비스 확인
systemctl --failed --no-pager
파일시스템 상태 확인
findmnt
df -h
커널 오류 확인
journalctl -k -b 0 -p err --no-pager
외부 모듈 확인
외부 커널 모듈 또는 DKMS 계열 모듈을 사용하는 경우 신규 커널과 호환되는지 확인한다.
find /lib/modules/$(uname -r)/extra \
/lib/modules/$(uname -r)/updates \
-type f 2>/dev/null
DKMS가 설치된 환경:
dkms status
dkms가 설치되지 않은 경우 명령이 없을 수 있다.
시스템 재부팅
재부팅 실행
systemctl reboot
또는:
reboot
주의: 원격 서버에서는 재부팅 전에 iLO, iDRAC, IPMI, VMware 콘솔 또는 하이퍼바이저 콘솔 등 대체 접속 수단을 확보한다.
재부팅 후 검증
실행 중인 커널 확인
uname -r
기본 부팅 커널과 비교
grubby --default-kernel
basename "$(grubby --default-kernel)" | sed 's/^vmlinuz-//'
시스템 부팅 상태 확인
systemctl is-system-running
정상적인 경우:
running
일부 서비스가 실패한 경우:
degraded
실패한 서비스 확인
systemctl --failed --no-pager
현재 부팅의 커널 오류 확인
journalctl -k -b 0 -p err --no-pager
경고까지 포함:
journalctl -k -b 0 -p warning --no-pager
네트워크 확인
ip -br link
ip -br addr
ip route
스토리지 확인
lsblk
findmnt
df -h
주요 서비스 확인
예:
systemctl status sshd --no-pager
systemctl status NetworkManager --no-pager
서버 역할에 따라 nginx, MariaDB, rsyslog 등의 서비스를 추가로 확인한다.
systemctl status nginx --no-pager
systemctl status mariadb --no-pager
systemctl status rsyslog --no-pager
재부팅 필요 여부 확인
needs-restarting 사용
업데이트 후 이전 라이브러리 또는 실행 파일을 계속 사용하는 프로세스를 확인한다.
dnf needs-restarting
Red Hat 문서에서도 보안 업데이트 후 수동 재시작이 필요한 프로세스 확인 용도로 dnf needs-restarting을 안내한다. :contentReference[oaicite:2]{index=2}
시스템 재부팅 필요 여부 확인:
dnf needs-restarting -r
설치된 명령이 없는 경우:
dnf install -y dnf-utils
배포판 패키지 구성에 따라 다음 패키지로 제공될 수 있다.
dnf install -y dnf-plugins-core
실행 커널과 기본 커널 비교
running_kernel=$(uname -r)
default_kernel=$(
basename "$(grubby --default-kernel)" |
sed 's/^vmlinuz-//'
)
if [[ "$running_kernel" == "$default_kernel" ]]; then
echo "현재 기본 부팅 커널로 실행 중입니다."
else
echo "커널 변경 적용을 위한 재부팅이 필요할 수 있습니다."
fi
참고: Red Hat은 핵심 라이브러리와 서비스 업데이트가 모든 프로세스에 반영되도록 업데이트 후 시스템 재부팅을 권고한다. :contentReference[oaicite:3]{index=3}
설치된 커널 보관 개수 확인
installonly_limit 확인
grep -R --line-number \
'^[[:space:]]*installonly_limit' \
/etc/dnf/dnf.conf \
/etc/yum.conf 2>/dev/null
일반적인 설정 위치:
/etc/dnf/dnf.conf
설정 예:
[main]
installonly_limit=3
설정값은 커널과 같은 installonly 패키지를 몇 개까지 유지할지 결정한다.
현재 설정 확인
dnf config-manager --dump | grep '^installonly'
출력 예:
installonly_limit = 3
installonlypkgs = kernel, kernel-core, kernel-modules, ...
설정 변경 전 백업
cp -a /etc/dnf/dnf.conf \
/etc/dnf/dnf.conf.$(date +%Y%m%d-%H%M%S).bak
설정 적용 예
vi /etc/dnf/dnf.conf
[main]
installonly_limit=3
주의: 보관 개수를 지나치게 작게 설정하면 신규 커널 장애 시 이전 정상 커널로 복구하기 어렵다. 현재 커널과 최소 하나 이상의 이전 정상 커널을 유지한다.
오래된 커널 확인
현재 실행 중인 커널 확인
uname -r
기본 부팅 커널 확인
grubby --default-kernel
설치된 커널 목록 확인
rpm -q kernel-core
버전 순 확인:
rpm -q kernel-core \
--qf '%{VERSION}-%{RELEASE}.%{ARCH}\n' |
sort -V
installonly 패키지 확인
dnf repoquery --installonly
오래된 installonly 패키지 확인
삭제하지 않고 대상만 확인한다.
dnf repoquery \
--installonly \
--latest-limit=-2
이 명령은 최신 2개를 제외한 이전 installonly 패키지를 조회하는 용도로 사용할 수 있다.
확인 필수: 명령 결과에 현재 실행 중인 커널이나 기본 부팅 커널이 포함되는지 반드시 확인한다.
오래된 커널 삭제
삭제 금지 대상
다음 커널은 삭제하지 않는다.
- 현재 실행 중인 커널
- 현재 기본 부팅 커널
- 직전 정상 부팅이 확인된 커널
- 복구를 위해 보관해야 하는 벤더 지원 커널
특정 버전 직접 삭제
먼저 대상 패키지를 확인한다.
rpm -qa | grep '5.14.0-503.40.1.el9_5'
삭제 예:
dnf remove \
kernel-5.14.0-503.40.1.el9_5.x86_64 \
kernel-core-5.14.0-503.40.1.el9_5.x86_64 \
kernel-modules-core-5.14.0-503.40.1.el9_5.x86_64 \
kernel-modules-5.14.0-503.40.1.el9_5.x86_64
실제 삭제 전 DNF가 표시하는 제거 대상 패키지를 확인한다.
오래된 installonly 패키지 자동 제거
먼저 삭제 대상을 확인한다.
dnf repoquery \
--installonly \
--latest-limit=-2
확인 후 삭제:
dnf remove $(
dnf repoquery \
--installonly \
--latest-limit=-2 \
-q
)
주의: 명령 치환 방식은 조회 결과가 정확한지 먼저 확인한 후 사용한다. 운영 서버에서는 특정 버전을 직접 지정하여 삭제하는 방식이 더 안전하다.
oldinstallonly 사용
RHEL 9.5 계열에는 오래된 installonly 패키지를 제거하는 다음 명령이 제공된다. 관련 오류 동작도 RHEL 9.5에서 수정된 이력이 있다. :contentReference[oaicite:4]{index=4}
dnf remove --oldinstallonly
실행 전 반드시 다음을 확인한다.
uname -r
grubby --default-kernel
rpm -q kernel-core
삭제 후 확인
rpm -q kernel-core
grubby --info=ALL
ls -lh /boot/vmlinuz-* /boot/initramfs-*.img
df -h /boot
삭제 시 권장 절차
- 현재 실행 중인 커널을 확인한다.
- 기본 부팅 커널을 확인한다.
- 설치된 커널 목록을 버전 순으로 확인한다.
- 신규 커널로 정상 부팅했는지 확인한다.
- 직전 정상 커널을 최소 한 개 유지한다.
- 삭제할 정확한 커널 버전을 지정한다.
- DNF의 제거 대상 목록을 확인한다.
- 삭제 후 GRUB 항목과
/boot파일을 확인한다.
커널 업데이트 작업 예제
1. 작업 전 점검
uname -r
grubby --default-kernel
rpm -q kernel-core
df -h /boot /boot/efi 2>/dev/null
systemctl --failed --no-pager
2. 업데이트 확인
dnf check-update 'kernel*'
3. 커널 업데이트
dnf update kernel
4. 설치 결과 확인
rpm -q kernel-core
grubby --default-kernel
grubby --info=ALL
ls -lh /boot/vmlinuz-* /boot/initramfs-*.img
5. 재부팅
systemctl reboot
6. 재부팅 후 검증
uname -r
systemctl is-system-running
systemctl --failed --no-pager
journalctl -k -b 0 -p err --no-pager
ip -br addr
findmnt7. 이전 커널 정리
신규 커널의 정상 동작을 충분히 확인한 후 오래된 커널을 정리한다.
uname -r
grubby --default-kernel
rpm -q kernel-core삭제할 버전을 직접 지정한다.
dnf remove kernel-core-삭제할버전장애 발생 시 확인
커널 업데이트 중 boot 용량 부족
증상
다음과 유사한 오류가 발생할 수 있다.
No space left on device확인
df -h /boot
du -sh /boot/*
rpm -q kernel-core조치 방향
- 현재 커널과 기본 커널을 확인한다.
- 오래된 커널을 DNF로 제거한다.
/boot파일을 직접 삭제하지 않는다.- 삭제 후 커널 설치를 다시 수행한다.
관련 문서:
업데이트 후 신규 커널이 기본값이 아님
확인
uname -r
grubby --default-kernel
grubby --default-index
grubby --info=ALL기본 부팅 커널 변경은 다음 문서를 참고한다.
신규 커널로 부팅되지 않음
의심 구간
- initramfs 생성 실패
- 커널 이미지 누락
- GRUB 부팅 항목 오류
- 스토리지 또는 LVM 드라이버 누락
- 외부 커널 모듈 호환 문제
- Secure Boot 서명 문제
- 루트 파일시스템 관련 부팅 옵션 오류
확인
이전 커널로 부팅한 후 확인한다.
grubby --info=ALL
ls -lh /boot/vmlinuz-* /boot/initramfs-*.img
journalctl -b -1 -p err --no-pagerinitramfs 확인:
lsinitrd /boot/initramfs-신규커널버전.img관련 문서:
업데이트 후 네트워크 장치가 보이지 않음
확인
ip -br link
lspci -k
lsmod
journalctl -k -b 0 | grep -iE 'firmware|link|eth|enp|driver|failed'원인 가능성
- NIC 드라이버 모듈 누락
kernel-modules-extra미설치- 외부 벤더 드라이버 빌드 실패
- Secure Boot에 의한 서명되지 않은 모듈 차단
- 인터페이스 이름 변경
관련 문서:
최종 점검표
| 단계 | 점검 항목 | 명령어 |
|---|---|---|
| 업데이트 전 | 현재 실행 커널 | uname -r
|
| 업데이트 전 | 기본 부팅 커널 | grubby --default-kernel
|
| 업데이트 전 | boot 여유 공간 | df -h /boot /boot/efi
|
| 업데이트 전 | 기존 커널 목록 | rpm -q kernel-core
|
| 업데이트 후 | 신규 커널 설치 여부 | rpm -q kernel-core
|
| 업데이트 후 | 신규 부팅 항목 | grubby --info=ALL
|
| 업데이트 후 | initramfs 존재 여부 | ls -lh /boot/initramfs-*.img
|
| 재부팅 후 | 실행 커널 | uname -r
|
| 재부팅 후 | 실패 서비스 | systemctl --failed
|
| 재부팅 후 | 커널 오류 | journalctl -k -b 0 -p err
|
관련 문서
- RHEL 9 커널 관리 가이드
- RHEL 9 커널 기본 정보 확인
- RHEL 9 부팅 커널 및 GRUB 관리
- RHEL 9 커널 모듈 관리
- RHEL 9 initramfs 및 dracut 관리
- RHEL 9 커널 업데이트 점검표
- RHEL 9 boot 용량 부족 처리
참고 자료
- Red Hat Enterprise Linux 9 - Managing software with the DNF tool
- Red Hat Enterprise Linux 9 - Managing, monitoring, and updating the kernel
- Red Hat Enterprise Linux 9 - Managing and monitoring security updates
변경 이력
| 날짜 | 변경 내용 | 작성자 |
|---|---|---|
| 2026-07-10 | 최초 작성 | changil |