Linux / 리눅스 배포판 종류와 버전 확인하는 방법

현재 사용 중인 리눅스 배포판과 버전은 먼저 cat /etc/os-release로 확인하는 것이 좋습니다. 이 파일의 PRETTY_NAME은 사람이 읽기 좋은 전체 이름을, ID와 VERSION_ID는 스크립트에서 활용하기 좋은 배포판 식별자와 버전을 보여 줍니다.

hostnamectl은 배포판·커널·아키텍처를 한 화면에서 확인할 때 편리하고, uname -r은 배포판 버전이 아니라 현재 실행 중인 리눅스 커널 버전을 확인할 때 사용합니다. 세 정보는 서로 의미가 다르므로 목적에 맞게 구분해야 합니다.

가장 먼저 실행할 명령

배포판 이름과 버전만 빠르게 확인하려면 다음 명령이면 충분합니다.

cat /etc/os-release

필요한 정보만 간단히 보고 싶다면 다음처럼 출력할 수 있습니다.

grep -E '^(PRETTY_NAME|ID|VERSION_ID|ID_LIKE)=' /etc/os-release

배포판, 커널과 CPU 아키텍처를 함께 점검할 때는 아래 명령을 차례로 실행합니다.

cat /etc/os-release
hostnamectl
uname -r
uname -m

리눅스 배포판이란?

리눅스(Linux)는 엄밀히 말하면 운영체제의 핵심인 커널을 가리킵니다. 리눅스 배포판(Linux distribution)은 리눅스 커널에 시스템 도구, 라이브러리, 패키지 관리자, 설치 프로그램과 기본 설정을 조합해 실제로 사용할 수 있게 만든 운영체제입니다.

Ubuntu, Debian, Fedora, Rocky Linux, openSUSE와 Arch Linux는 모두 리눅스 커널을 사용하지만 패키지 형식, 업데이트 정책과 관리 명령이 서로 다릅니다. 따라서 프로그램 설치법이나 서버 설정 문서를 적용하기 전에 배포판 계열과 버전을 확인해야 합니다.

주요 계열 대표적인 배포판 패키지 형식·도구 확인할 값
Debian 계열 Debian, Ubuntu, Linux Mint DEB, APT ID, ID_LIKE=debian
Red Hat 계열 RHEL, Fedora, Rocky Linux, AlmaLinux RPM, DNF ID, ID_LIKE의 rhel·fedora 계열 값
SUSE 계열 openSUSE, SUSE Linux Enterprise RPM, Zypper ID, ID_LIKE=suse
Arch 계열 Arch Linux, Manjaro pkg.tar.zst, Pacman ID, ID_LIKE=arch
독립 계열 Alpine Linux 등 배포판별로 다름 ID와 공식 문서

ID_LIKE는 해당 배포판과 비슷한 상위 계열을 알려 주는 보조 정보입니다. 값이 없을 수도 있으므로 실제 배포판을 구분할 때는 ID를 먼저 확인하고, 호환 계열이 필요할 때 ID_LIKE를 참고하는 편이 안전합니다.

/etc/os-release에서 배포판과 버전 확인

/etc/os-release는 운영체제 식별 정보를 환경 변수와 비슷한 키=값 형식으로 제공합니다. systemd의 os-release 공식 문서에 따르면 /etc/os-release가 있으면 이 파일을 우선 사용하고, 없을 때 /usr/lib/os-release를 확인합니다.

전체 정보 확인하기

cat /etc/os-release

출력 형식은 배포판마다 조금씩 다르지만 일반적으로 다음과 같은 값을 볼 수 있습니다.

PRETTY_NAME="Ubuntu 24.04 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian

위 결과라면 배포판은 Ubuntu이고 주요 버전은 24.04이며 Debian 계열임을 알 수 있습니다. 패치 버전이나 세부 표시는 시스템의 업데이트 상태에 따라 달라질 수 있습니다.

각 필드의 의미

필드 의미 주요 용도
PRETTY_NAME 사람이 읽기 쉬운 전체 배포판 이름 화면 표시와 수동 확인
NAME 버전을 제외한 운영체제 이름 설명용 이름 표시
ID 소문자로 된 배포판 식별자 스크립트의 배포판 분기
VERSION_ID 기계가 비교하기 쉬운 배포판 버전 지원 버전 검사
ID_LIKE 호환되는 상위 배포판 계열 패키지·설정 방식의 계열 판단
VERSION_CODENAME 배포판 버전의 코드명 저장소 설정과 문서 확인

롤링 릴리스처럼 고정된 주요 버전을 사용하지 않는 배포판은 VERSION_ID가 없을 수 있습니다. 값이 비어 있다고 해서 파일이 잘못된 것은 아닙니다.

hostnamectl로 시스템 정보를 한 번에 확인

systemd를 사용하는 배포판에서는 hostnamectl로 호스트 이름, 배포판, 커널과 CPU 아키텍처를 한 화면에서 볼 수 있습니다.

hostnamectl

출력에서 주로 확인할 항목은 다음과 같습니다.

  • Operating System: 배포판 이름과 버전
  • Kernel: 현재 실행 중인 커널 릴리스
  • Architecture: 시스템 아키텍처
  • Virtualization: 가상 머신이나 컨테이너로 인식된 환경

hostnamectl은 보기 편한 요약 명령이지만 최소 설치 환경, 일부 컨테이너 또는 systemd를 사용하지 않는 배포판에는 없을 수 있습니다. 이런 환경에서는 /etc/os-release와 uname을 사용하면 됩니다.

배포판 버전과 커널 버전은 다르다

uname이 보여 주는 값은 Ubuntu 24.04나 Rocky Linux 10 같은 배포판 버전이 아닙니다. 현재 부팅되어 실행 중인 커널의 이름, 릴리스와 하드웨어 아키텍처입니다.

uname -r
uname -m
uname -a
명령 확인하는 정보 사용 예
uname -r 커널 릴리스 드라이버·커널 모듈 호환성 확인
uname -m 하드웨어 아키텍처 x86_64·aarch64용 패키지 선택
uname -a 커널 관련 정보를 한 줄로 표시 장애 보고용 시스템 요약

예를 들어 배포판을 유지한 채 커널만 업데이트할 수 있고, 같은 배포판 버전이라도 실행 중인 커널은 서로 다를 수 있습니다. 커널 업데이트 후 재부팅하지 않았다면 설치된 최신 커널과 uname -r의 결과가 다를 수도 있습니다. 각 옵션의 정의는 GNU Coreutils의 uname 문서에서 확인할 수 있습니다.

다른 확인 방법과 구형 환경 대처

lsb_release 명령

lsb_release가 설치되어 있다면 배포판 공급자, 설명, 릴리스와 코드명을 확인할 수 있습니다.

lsb_release -a

다만 모든 배포판의 최소 설치 환경에 기본으로 포함되는 명령은 아닙니다. command -v lsb_release로 존재 여부를 먼저 확인할 수 있습니다. Linux Standard Base의 lsb_release 명세에는 각 출력 항목의 의미가 정리되어 있습니다.

배포판별 release 파일

/etc/os-release가 없는 오래된 시스템에서는 배포판별 파일을 보조 수단으로 확인할 수 있습니다.

cat /etc/redhat-release
cat /etc/debian_version
cat /etc/alpine-release

이 파일들은 배포판마다 존재 여부와 형식이 다릅니다. 자동화에서는 무작정 /etc/*release를 합쳐 읽기보다 /etc/os-release를 우선하고, 필요한 배포판의 파일만 명시적으로 확인하는 것이 좋습니다.

셸 스크립트에서 배포판 판별하기

설치 스크립트나 운영 자동화에서는 사람이 읽기 위한 PRETTY_NAME보다 ID와 VERSION_ID를 사용하는 편이 안정적입니다.

if [ -r /etc/os-release ]; then
    . /etc/os-release
    printf 'distribution=%s\n' "$ID"
    printf 'version=%s\n' "${VERSION_ID:-unknown}"
    printf 'family=%s\n' "${ID_LIKE:-unknown}"
else
    printf 'distribution=unknown\n'
    uname -srm
fi

${VERSION_ID:-unknown} 형식은 값이 없거나 비어 있을 때 unknown을 사용합니다. os-release에는 선택 필드가 많고 배포판이 자체 필드를 추가할 수도 있으므로, 스크립트는 필요한 값이 항상 존재한다고 가정하지 않아야 합니다.

배포판에 따라 패키지 설치 명령을 나눌 때는 버전 문자열보다 ID를 먼저 비교하고 ID_LIKE를 보조 조건으로 사용합니다. 그래도 배포판마다 저장소 구성과 패키지 이름이 다를 수 있으므로, 계열이 같다는 이유만으로 모든 명령이 호환된다고 단정해서는 안 됩니다.

컨테이너·WSL·chroot에서 주의할 점

컨테이너

컨테이너 안의 /etc/os-release는 일반적으로 호스트가 아니라 컨테이너 이미지의 사용자 공간 배포판을 나타냅니다. 반면 uname -r은 호스트와 공유하는 커널 정보를 보여 줄 수 있습니다. 두 명령의 결과가 서로 다른 계열처럼 보이는 것은 정상일 수 있습니다.

Windows Subsystem for Linux

WSL(Windows Subsystem for Linux)에서는 /etc/os-release가 설치한 Ubuntu, Debian 등의 배포판 정보를 보여 줍니다. uname -r에는 WSL용 커널임을 나타내는 문자열이 포함될 수 있으므로, 배포판 버전을 찾을 때는 여전히 /etc/os-release를 기준으로 봅니다.

chroot 환경

chroot 안에서는 /etc/os-release가 chroot 파일 시스템의 배포판을, uname은 현재 시스템에서 공유하는 커널을 나타냅니다. 복구 작업이나 교차 배포판 빌드 환경에서는 이 차이를 알고 결과를 해석해야 합니다.

자주 묻는 질문

리눅스 버전을 확인하는 가장 확실한 명령은 무엇인가요?

배포판과 버전을 확인하는 목적이라면 cat /etc/os-release를 먼저 사용합니다. 커널 버전은 uname -r, CPU 아키텍처는 uname -m으로 별도로 확인합니다.

hostnamectl이 없거나 실행되지 않으면 문제가 있나요?

반드시 문제인 것은 아닙니다. systemd를 사용하지 않거나 필요한 구성 요소가 빠진 최소 환경에서는 hostnamectl이 없을 수 있습니다. /etc/os-release와 uname으로 필요한 정보를 나누어 확인하면 됩니다.

CentOS, Rocky Linux와 AlmaLinux는 어떻게 구분하나요?

/etc/os-release의 ID를 확인하면 각각의 배포판을 구분할 수 있습니다. 이들은 같은 계열의 관리 방식을 공유하는 부분이 있지만 지원 정책과 저장소는 별개이므로 ID_LIKE만 보고 동일한 배포판으로 처리하면 안 됩니다.

x86_64와 aarch64는 배포판 버전인가요?

아닙니다. 두 값은 하드웨어 아키텍처를 나타냅니다. 같은 배포판과 버전이라도 x86_64용 이미지와 ARM 64비트 계열인 aarch64용 이미지가 따로 제공될 수 있으므로 프로그램이나 설치 이미지를 선택할 때 함께 확인해야 합니다.

정리

리눅스 배포판 이름과 버전은 /etc/os-release에서 확인하고, 시스템 전체 요약이 필요하면 hostnamectl을 사용합니다. 커널 버전과 아키텍처는 각각 uname -r과 uname -m으로 확인합니다.

특히 자동화에서는 PRETTY_NAME을 문자열로 분석하기보다 ID, VERSION_ID와 필요할 때 ID_LIKE를 사용해야 합니다. 컨테이너, WSL과 chroot에서는 사용자 공간의 배포판과 실행 중인 커널이 서로 다른 출처의 정보일 수 있다는 점도 함께 기억해 두면 됩니다.

같은 카테고리의 다른 글
Linux / 명령어 / blkid - 블록 장치 UUID와 파일 시스템 형식 조회

Linux / 명령어 / blkid - 블록 장치 UUID와 파일 시스템 형식 조회

Linux blkid 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / bunzip2 - bzip2 압축 파일 풀기

Linux / 명령어 / bunzip2 - bzip2 압축 파일 풀기

Linux bunzip2 명령어의 용도와 기본 문법을 알아봅니다. 파일 처리 예제, 주요 옵션과 원본 보존·덮어쓰기 주의점을 설명합니다.

Linux / 명령어 / nmap - 허가된 호스트의 포트와 서비스 조사

Linux / 명령어 / nmap - 허가된 호스트의 포트와 서비스 조사

Linux nmap 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / du - 파일과 디렉터리 용량 확인

Linux / 명령어 / du - 파일과 디렉터리 용량 확인

Linux du 명령어로 디렉터리와 파일의 디스크 사용량을 확인하고 큰 항목을 찾는 방법을 설명합니다. apparent size, 파일시스템 경계와 df 결과가 다른 이유도 정리합니다.

Linux / 리눅스 디렉토리 구조와 주요 디렉토리별 용도

Linux / 리눅스 디렉토리 구조와 주요 디렉토리별 용도

리눅스의 /etc, /var, /usr, /home, /proc, /dev 등 주요 디렉토리별 용도와 이름의 의미를 정리합니다. 리눅스 파일시스템 구조를 처음 배우거나 서버 관리에 필요한 디렉토리를 확인할 때 참고할 수 있습니다.

Linux / 명령어 / basename - 경로에서 마지막 이름 추출

Linux / 명령어 / basename - 경로에서 마지막 이름 추출

Linux basename 명령어로 경로에서 마지막 파일명이나 디렉터리 이름을 추출하고 접미사를 제거하는 방법을 설명합니다. 여러 경로와 안전한 셸 스크립트 처리 방법도 정리합니다.

Linux / 명령어 / rsync - 파일·디렉터리의 변경분 동기화

Linux / 명령어 / rsync - 파일·디렉터리의 변경분 동기화

Linux rsync 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux / 명령어 / wc - 줄·단어·문자 수 계산

Linux / 명령어 / wc - 줄·단어·문자 수 계산

Linux wc 명령어로 줄·단어·바이트·문자 수를 확인하는 방법을 설명합니다. 개행 기준의 줄 수, -c와 -m 차이, 여러 파일 합계와 안전한 파이프 활용 예제를 정리합니다.

Linux 강좌 / 배포판 선택하기

Linux 강좌 / 배포판 선택하기

리눅스 입문과 서버 실습에 Ubuntu와 Rocky Linux 중 무엇을 선택하면 좋을까요? 학습 목표, 패키지 관리 방식과 지원 정책을 기준으로 두 배포판을 비교합니다.

Linux / 명령어 / gzip - 파일을 gzip 형식으로 압축하기

Linux / 명령어 / gzip - 파일을 gzip 형식으로 압축하기

Linux gzip 명령어의 용도와 기본 문법을 알아봅니다. 파일 처리 예제, 주요 옵션과 원본 보존·덮어쓰기 주의점을 설명합니다.