1.

Linux ディストリビューション確認方法完全ガイド

編集
この記事の要点
  • 汎用な確認は cat /etc/os-release (systemd 系全ディストロ標準)
  • 同等の lsb_release -a は LSB 準拠なら使えるが未インストールも多い
  • hostnamectl は systemd 提供で OS / カーネル / アーキテクチャをまとめ表示
  • RHEL 系専用: /etc/redhat-release、Debian 系: /etc/debian_version、SUSE: /etc/SuSE-release
  • カーネルは uname -a、CPU アーキは uname -m / dpkg --print-architecture

ディストリビューションを確認したい場面

SSH でログインしたサーバ、Docker コンテナ内、客先で渡された VM 等で「これは何の Linux?」「バージョンは?」を即座に知りたい場面は頻繁にあります。本記事では最初に試すべきコマンド順に紹介します。

1. /etc/os-release (最強・汎用)

systemd を採用する全ディストロが用意している標準ファイル (man os-release)。RHEL / CentOS / Ubuntu / Debian / Arch / openSUSE / Alpine ほぼ全てで使えます。

cat /etc/os-release

# 例: Ubuntu 22.04
# PRETTY_NAME="Ubuntu 22.04.4 LTS"
# NAME="Ubuntu"
# VERSION_ID="22.04"
# VERSION="22.04.4 LTS (Jammy Jellyfish)"
# VERSION_CODENAME=jammy
# ID=ubuntu
# ID_LIKE=debian
# HOME_URL="https://www.ubuntu.com/"

# 例: AlmaLinux 9
# NAME="AlmaLinux"
# VERSION="9.4 (Seafoam Ocelot)"
# ID="almalinux"
# ID_LIKE="rhel centos fedora"
# PRETTY_NAME="AlmaLinux 9.4 (Seafoam Ocelot)"
# PLATFORM_ID="platform:el9"

# シェルスクリプトから読む
source /etc/os-release
echo "OS=$NAME $VERSION_ID  family=$ID_LIKE"

2. lsb_release コマンド

LSB (Linux Standard Base) のコマンド。未インストールのことも多いので、まず動くか確認します。

lsb_release -a
# No LSB modules are available.
# Distributor ID: Ubuntu
# Description:    Ubuntu 22.04.4 LTS
# Release:        22.04
# Codename:       jammy

# 入っていない場合の追加
# Debian/Ubuntu
sudo apt install lsb-release
# RHEL/CentOS
sudo dnf install redhat-lsb-core

3. hostnamectl (systemd 標準)

OS / カーネル / アーキテクチャ / ホスト名 / 仮想化を 1 発で出す優れもの。

hostnamectl

# Static hostname: web01
#       Icon name: computer-vm
#         Chassis: vm
#      Machine ID: abc123...
#         Boot ID: def456...
#  Virtualization: kvm
# Operating System: Ubuntu 22.04.4 LTS
#          Kernel: Linux 5.15.0-105-generic
#    Architecture: x86-64

# OS のみ
hostnamectl --static
hostnamectl status | grep "Operating System"

4. uname (カーネル情報)

uname -a
# Linux web01 5.15.0-105-generic #115-Ubuntu SMP Mon Apr 15 09:52:04 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux

# 個別
uname -s     # カーネル名     Linux
uname -r     # カーネル version 5.15.0-105-generic
uname -m     # マシンアーキ   x86_64 / aarch64 / armv7l
uname -p     # プロセッサ
uname -o     # OS           GNU/Linux

# カーネルメジャー version だけ
uname -r | cut -d. -f1-2     # 5.15

5. ディストロ固有のファイル

ファイル系統
/etc/redhat-releaseRHEL / CentOS / Rocky / Alma / Fedora
/etc/system-releaseAmazon Linux など
/etc/debian_versionDebian / Ubuntu / Raspbian
/etc/SuSE-release (古い) / /etc/SUSE-brandSUSE / openSUSE
/etc/arch-releaseArch Linux
/etc/alpine-releaseAlpine Linux
/etc/gentoo-releaseGentoo
/etc/issueログインバナー (起動時表示)
/etc/issue.netネットワーク経由ログイン用
# まとめてチェック
cat /etc/*-release /etc/*_version /etc/issue 2>/dev/null

# 例: AlmaLinux 9
cat /etc/redhat-release
# AlmaLinux release 9.4 (Seafoam Ocelot)

# 例: Debian 12
cat /etc/debian_version
# 12.5

6. アーキテクチャの確認

# CPU アーキテクチャ
uname -m
# x86_64                    Intel / AMD 64bit
# aarch64                   ARM 64bit (M1 Mac, Graviton, Raspberry Pi 4 64bit OS)
# armv7l                    ARM 32bit (Raspberry Pi 旧)
# i686                      Intel 32bit
# ppc64le                   POWER (IBM)
# riscv64                   RISC-V

# Debian/Ubuntu 系: dpkg アーキ
dpkg --print-architecture
# amd64 / arm64 / armhf / i386

# CPU 詳細
lscpu
cat /proc/cpuinfo | grep "model name" | head -1

# RHEL 系: arch
arch

7. Docker コンテナ内で確認

# コンテナに入って通常確認
docker exec -it mycontainer bash
cat /etc/os-release

# ワンライナー
docker run --rm alpine cat /etc/os-release
docker run --rm ubuntu:22.04 cat /etc/os-release
docker run --rm rockylinux:9 cat /etc/redhat-release

# イメージのアーキも確認
docker inspect ubuntu:22.04 | grep -i Architecture

シェルスクリプトでの判別

#!/bin/bash
if [ -f /etc/os-release ]; then
    . /etc/os-release
    DISTRO=$ID
    VERSION=$VERSION_ID
elif [ -f /etc/redhat-release ]; then
    DISTRO=$(awk '{print tolower($1)}' /etc/redhat-release)
    VERSION=$(grep -oE '[0-9]+(\.[0-9]+)?' /etc/redhat-release | head -1)
else
    DISTRO=unknown
    VERSION=unknown
fi

case "$DISTRO" in
    ubuntu|debian) echo "Debian 系"; PKG="apt" ;;
    centos|rhel|rocky|almalinux|fedora) echo "RHEL 系"; PKG="dnf" ;;
    alpine) echo "Alpine"; PKG="apk" ;;
    arch|manjaro) echo "Arch 系"; PKG="pacman" ;;
    *) echo "未対応: $DISTRO" ;;
esac
echo "Distro=$DISTRO  Version=$VERSION  Pkg=$PKG"

カーネルとディストロの関係

ディストロ系統パッケージ管理初期化
Ubuntu / Debian / RaspbianDebian 系apt / dpkgsystemd
RHEL / CentOS Stream / Rocky / AlmaRHEL 系dnf / yum / rpmsystemd
FedoraRHEL 系dnf / rpmsystemd
Amazon Linux 2 / 2023RHEL 派生yum / dnfsystemd
openSUSE / SUSE Linux EnterpriseSUSE 系zypper / rpmsystemd
Alpine独立 (musl libc)apkOpenRC
Arch / Manjaro独立pacmansystemd
Gentoo独立 (ソースベース)portageOpenRC / systemd 選択

FAQ

Q: Amazon Linux か RHEL か見分けたい
A: /etc/os-releaseID を確認。amzn なら Amazon Linux、rhel なら RHEL です。ID_LIKE も互換系統 (fedora / centos / rhel) を示します。

Q: 古いディストロで /etc/os-release が無い
A: systemd 採用前 (CentOS 6 以前 / 古い Debian) は /etc/redhat-release/etc/lsb-release/etc/issue を見てください。今ならそれらは EOL に達しているため移行検討も。

Q: Raspberry Pi で 32bit / 64bit どちらの OS を入れたか分からない
A: uname -marmv7l = 32bit、aarch64 = 64bit。getconf LONG_BIT でも 32 / 64 が出ます。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. ディストリビューションの確認
  2. Ubuntu

最近更新/作成されたページ