Linux를 사용하다 보면 5.15.0, 6.1.98, 6.12.4, 6.8.0-60-generic처럼 다양한 커널 버전 번호를 보게 됩니다.
처음에는 단순한 숫자처럼 보이지만, 이 버전 번호에는 메이저 버전, 마이너 버전, 유지보수 버전, 배포판 정보 등 다양한 의미가 포함되어 있습니다.
커널 버전 체계를 이해하면 현재 시스템이 최신인지, 장기 지원(LTS) 버전인지, 운영 서버에서 사용하기 적합한 버전인지 쉽게 판단할 수 있습니다.
이번 글에서는 Linux Kernel 버전 관리 방식과 버전 번호 읽는 방법, Semantic Versioning과의 차이점, 실무에서 버전을 관리하는 방법까지 자세히 알아보겠습니다.
Linux Kernel 버전이란?
Linux Kernel 버전은 현재 실행 중인 커널의 릴리스 정보를 나타내는 번호 체계입니다.
기본 구조는 다음과 같습니다.
Major.Minor.Patch
예를 들어
6.8.12
이라면
- Major : 6
- Minor : 8
- Patch : 12
를 의미합니다.
버전 번호의 의미
예를 들어 다음 버전을 살펴보겠습니다.
6.8.12
각 숫자의 의미는 다음과 같습니다.
| 항목 | 의미 |
|---|---|
| 6 | 메이저(Major) 버전 |
| 8 | 마이너(Minor) 버전 |
| 12 | 유지보수(Patch) 버전 |
Patch 번호가 증가할수록 버그 수정과 보안 업데이트가 추가됩니다.
Major Version
Major 버전은 커널의 큰 변화를 의미합니다.
예를 들어
5.x
↓
6.x
새로운 기능이나 구조적인 변경이 포함될 수 있습니다.
하지만 Linux Kernel은 일반적인 소프트웨어처럼 Major 버전이 올라갈 때마다 호환성이 크게 깨지는 구조는 아닙니다.
Minor Version
Minor 버전은 새로운 기능이 추가되는 릴리스입니다.
예를 들어
6.7
↓
6.8
↓
6.9
각 버전마다
- 새로운 Driver
- 새로운 CPU 지원
- 새로운 Filesystem 기능
- eBPF 기능 추가
등이 포함됩니다.
Patch Version
Patch 버전은 유지보수 버전입니다.
예를 들어
6.8.0
↓
6.8.1
↓
6.8.2
↓
6.8.15
주요 변경은
- 버그 수정
- 보안 패치
- 안정성 향상
입니다.
새로운 기능은 거의 추가되지 않습니다.
Ubuntu Kernel 버전
Ubuntu에서는 다음과 같이 표시됩니다.
6.8.0-60-generic
의미는 다음과 같습니다.
| 항목 | 의미 |
|---|---|
| 6 | Major |
| 8 | Minor |
| 0 | Ubuntu 기준 Patch 시작점 |
| 60 | Ubuntu 빌드 번호 |
| generic | 일반 커널 패키지 |
Ubuntu는 자체적으로 커널을 다시 빌드하여 배포합니다.
RHEL Kernel 버전
RHEL은 조금 다른 형태입니다.
예를 들어
5.14.0-503.el9
의미
- Kernel Base Version
- Red Hat Build Number
- Enterprise Linux 버전
Backport 정책을 사용하기 때문에 실제 기능은 최신일 수도 있습니다.
Semantic Versioning과의 차이
일반적인 소프트웨어는 Semantic Versioning(SemVer)을 사용합니다.
예를 들어
2.1.5
의 의미는
- Major : 호환성 변경
- Minor : 기능 추가
- Patch : 버그 수정
입니다.
Linux Kernel은 비슷한 구조를 사용하지만 SemVer를 엄격하게 따르지는 않습니다.
Kernel 릴리스 흐름
일반적인 릴리스 과정은 다음과 같습니다.
Mainline
↓
RC1
↓
RC2
↓
RC3
↓
...
↓
Stable
↓
Patch Release
RC(Release Candidate)는 정식 릴리스 전 테스트 버전입니다.
RC 버전이란?
예를 들어
6.12-rc1
↓
6.12-rc2
↓
6.12-rc7
↓
6.12
RC 버전에서는
- 버그 수정
- 성능 개선
- 리뷰
등이 진행됩니다.
운영 서버에서는 RC 버전 사용을 권장하지 않습니다.
현재 커널 버전 확인
현재 실행 중인 커널
uname -r
예시
6.8.0-60-generic
가장 자주 사용하는 명령입니다.
자세한 버전 확인
uname -a
출력 예시
Linux server
6.8.0-60-generic
x86_64 GNU/Linux
빌드 날짜와 아키텍처 정보도 함께 확인할 수 있습니다.
설치된 커널 목록
Ubuntu
dpkg -l | grep linux-image
RHEL
rpm -qa | grep kernel
시스템에 설치된 커널 목록을 확인할 수 있습니다.
부팅 가능한 커널 확인
ls /boot
예시
vmlinuz-6.8.0
vmlinuz-6.5.0
initrd.img
System.map
여러 버전의 커널이 함께 설치되어 있는 경우가 많습니다.
오래된 커널 삭제
Ubuntu에서는
sudo apt autoremove
또는
sudo apt remove linux-image-버전
을 사용할 수 있습니다.
운영 서버에서는 반드시 현재 실행 중인 커널을 삭제하지 않도록 주의해야 합니다.
커널 업그레이드
Ubuntu
sudo apt update
sudo apt upgrade
RHEL
sudo dnf update kernel
업데이트 후에는 일반적으로 재부팅이 필요합니다.
버전 관리 시 주의사항
운영 환경에서는 다음 사항을 권장합니다.
- LTS 버전 사용
- 최신 보안 패치 적용
- RC 버전 사용 지양
- 충분한 테스트 후 업그레이드
- 이전 커널 유지
문제가 발생하면 이전 커널로 부팅할 수 있도록 대비하는 것이 좋습니다.
실무에서 자주 사용하는 명령어
현재 커널 확인
uname -r
전체 정보 확인
uname -a
Ubuntu 설치 커널 확인
dpkg -l | grep linux-image
RHEL 설치 커널 확인
rpm -qa | grep kernel
부팅 이미지 확인
ls /boot
커널 업데이트
sudo apt upgrade
실무 사례
예를 들어 Ubuntu LTS 서버를 운영하는 기업에서 새로운 보안 취약점이 발표되었다고 가정해 보겠습니다.
운영팀은 다음과 같은 절차로 대응합니다.
uname -r로 현재 커널 버전 확인- 보안 공지를 통해 필요한 최소 패치 버전 확인
- 테스트 서버에서 새 커널 설치 및 검증
- 운영 서버에 순차적으로 업데이트 적용
- 재부팅 후 새 커널이 정상적으로 실행되는지 확인
- 이전 커널은 일정 기간 유지하여 문제 발생 시 롤백 가능하도록 준비
이처럼 커널 버전 관리는 단순히 최신 버전을 사용하는 것이 아니라 안정성과 보안, 운영 정책을 함께 고려하는 것이 중요합니다.
자주 묻는 질문
Linux Kernel은 Semantic Versioning을 사용하나요?
비슷한 형태의 버전 번호를 사용하지만 일반적인 Semantic Versioning 규칙을 엄격하게 따르지는 않습니다. 버전 번호만으로 호환성 변화를 판단하기보다는 공식 릴리스 노트를 함께 확인하는 것이 좋습니다.
운영 서버에서는 어떤 버전을 사용하는 것이 좋나요?
일반적으로 LTS(Long Term Support) 버전을 사용하는 것이 가장 안정적입니다. 장기간 보안 패치와 버그 수정이 제공되므로 운영 환경에 적합합니다.
Patch 버전만 올라가면 새로운 기능도 추가되나요?
대부분의 Patch 릴리스는 보안 패치와 버그 수정이 목적입니다. 새로운 기능은 일반적으로 Minor 버전이나 Mainline 릴리스에서 추가됩니다.
마무리
Linux Kernel 버전 번호는 단순한 숫자가 아니라 커널의 릴리스 상태와 유지보수 수준을 나타내는 중요한 정보입니다. Major, Minor, Patch 버전의 의미를 이해하고 배포판별 버전 체계를 함께 살펴보면 현재 시스템의 상태를 정확하게 파악할 수 있습니다. 특히 운영 환경에서는 LTS 커널과 최신 보안 패치를 유지하는 것이 안정적인 시스템 운영의 핵심입니다.