Linux / ディストリビューション・バージョン・カーネルの確認方法

現在使用中のLinuxディストリビューションとバージョンは、まずcat /etc/os-releaseで確認するのが良いです。このファイルのPRETTY_NAMEは人が読みやすい全体の名前を、IDとVERSION_IDはスクリプトで活用しやすいディストリビューションの識別子とバージョンを示します。

hostnamectlはディストリビューション・カーネル・アーキテクチャを一画面で確認する際に便利で、uname -rはディストリビューションのバージョンではなく、現在実行中のLinuxカーネルのバージョンを確認する時に使用します。三つの情報はそれぞれ意味が異なるため、目的に合わせて区別する必要があります。

最初に実行するコマンド

ディストリビューション名とバージョンだけを素早く確認するには、次のコマンドで十分です。

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(リナックス)は厳密に言えば、OS(Operating System、基本ソフトウェア)の中核であるカーネルを指します。Linuxディストリビューションは、Linuxカーネルにシステムツール、ライブラリ、パッケージマネージャ、インストーラー、基本設定を組み合わせて、実際に使用できるようにしたOSです。

Ubuntu、Debian、Fedora、Rocky Linux、openSUSEとArch Linuxはすべて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アーキテクチャを1画面で確認できます。

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 カーネル関連情報を1行で表示 障害報告用システムサマリー

例えば、ディストリビューションを維持したままカーネルだけを更新することができ、同じディストリビューションのバージョンであっても実行中のカーネルは異なる場合があります。カーネル更新後に再起動していなければ、インストールされた最新カーネルと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は現在のシステムで共有されているカーネルを示します。復旧作業やクロスディストリビューションビルド環境では、この違いを理解して結果を解釈する必要があります。

よくある質問

Linuxのバージョンを確認する最も確実なコマンドは何ですか?

ディストリビューションとバージョンを確認する目的であれば、まず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用のイメージが別々に提供される場合があるため、プログラムやインストールイメージを選択する際に併せて確認する必要があります。

まとめ

Linuxのディストリビューション名とバージョンは/etc/os-releaseで確認し、システム全体の概要が必要な場合はhostnamectlを使用します。カーネルバージョンとアーキテクチャはそれぞれuname -rとuname -mで確認します。

特に自動化では、PRETTY_NAMEを文字列として解析するよりも、ID、VERSION_ID、必要に応じてID_LIKEを使用する必要があります。コンテナ、WSL、およびchrootでは、ユーザー空間のディストリビューションと実行中のカーネルが異なる出所の情報である可能性があることも覚えておくと良いでしょう。