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

삭제 시 권장 절차

  1. 현재 실행 중인 커널을 확인한다.
  2. 기본 부팅 커널을 확인한다.
  3. 설치된 커널 목록을 버전 순으로 확인한다.
  4. 신규 커널로 정상 부팅했는지 확인한다.
  5. 직전 정상 커널을 최소 한 개 유지한다.
  6. 삭제할 정확한 커널 버전을 지정한다.
  7. DNF의 제거 대상 목록을 확인한다.
  8. 삭제 후 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
findmnt

7. 이전 커널 정리

신규 커널의 정상 동작을 충분히 확인한 후 오래된 커널을 정리한다.

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

기본 부팅 커널 변경은 다음 문서를 참고한다.

신규 커널로 부팅되지 않음

의심 구간

  1. initramfs 생성 실패
  2. 커널 이미지 누락
  3. GRUB 부팅 항목 오류
  4. 스토리지 또는 LVM 드라이버 누락
  5. 외부 커널 모듈 호환 문제
  6. Secure Boot 서명 문제
  7. 루트 파일시스템 관련 부팅 옵션 오류

확인

이전 커널로 부팅한 후 확인한다.

grubby --info=ALL
ls -lh /boot/vmlinuz-* /boot/initramfs-*.img
journalctl -b -1 -p err --no-pager

initramfs 확인:

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

관련 문서

참고 자료

  • 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