Linux OS確認コマンド|バージョンとカーネルの見分け方

Linux OS確認コマンド|バージョンとカーネルの見分け方

「このサーバーの OS とバージョンは?」と聞かれたときに使うコマンドをまとめます。まず cat /etc/os-release を打てば、ディストリビューションの名前とバージョンが分かります。

この記事で分かること

  • OS のバージョンを確かめるコマンドと、出力のどの行を見ればよいか
  • OS の版とカーネルの版(uname -r)の違いと、報告に書く行
  • シェルスクリプトで OS を判定する書き方

検証環境

  • OS: AlmaLinux 9.8 (Olive Jaguar)(VirtualBox 7.2.20 上の仮想マシン。ホスト名 web01 は検証用の名前。作り方はAlmaLinux 9インストール手順|VirtualBoxで練習機を作る)
  • カーネル: 5.14.0-687.53.1.el9_8.x86_64
  • コマンドの版: systemd 252(hostnamectl)/GNU coreutils 8.32(uname)/RPM 4.16.1.3/GNU bash 5.1.8
  • 取得日: 2026年10月5日(記事中の出力はすべてこの環境で実行したもの。Machine ID と Boot ID は伏せ字)
目次

結論|まず cat /etc/os-release を打つ

systemd のマニュアル os-release(5) は、/etc/os-release と /usr/lib/os-release に「OS を識別するデータ」が入ると定めています。

[opuser@web01 ~]$ cat /etc/os-release
NAME="AlmaLinux"
VERSION="9.8 (Olive Jaguar)"
ID="almalinux"
ID_LIKE="rhel centos fedora"
VERSION_ID="9.8"
PLATFORM_ID="platform:el9"
PRETTY_NAME="AlmaLinux 9.8 (Olive Jaguar)"
ANSI_COLOR="0;34"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:almalinux:almalinux:9::baseos"
HOME_URL="https://almalinux.org/"
DOCUMENTATION_URL="https://wiki.almalinux.org/"
BUG_REPORT_URL="https://bugs.almalinux.org/"

ALMALINUX_MANTISBT_PROJECT="AlmaLinux-9"
ALMALINUX_MANTISBT_PROJECT_VERSION="9.8"
REDHAT_SUPPORT_PRODUCT="AlmaLinux"
REDHAT_SUPPORT_PRODUCT_VERSION="9.8"
SUPPORT_END=2032-06-01

報告に書くなら、os-release(5) で「利用者に見せる名前」とされる PRETTY_NAME の1行で伝わります。数字だけ欲しいときは VERSION_ID(9.8)です。

OS のバージョン確認が要る3つの場面

  • 作業前に、手順書の対象 OS と合っているかを見る: 「AlmaLinux 9 で確認済み」の手順書なら、目の前のサーバーが 9 系かを先に確かめます(手順書で新人が見落としがちな5つのポイント)。
  • 報告書やチケットに書く: 作業記録や問い合わせに OS 名と版を添えると、読む人が環境を取り違えにくくなります。
  • ソフトの入れ方を選ぶ: AlmaLinux の公式リリースノートは dnf、Ubuntu Server の公式ドキュメントは apt を使います。

OS 確認コマンドの早見表

AlmaLinux 9.8 での結果つきです。

コマンド分かることこの環境での結果
cat /etc/os-releaseOS 名・版・系統(ID_LIKE)表示された
hostnamectlホスト名・OS 名・カーネル・仮想化の有無表示された
cat /etc/redhat-releaseOS 名と版の1行AlmaLinux release 9.8 (Olive Jaguar)
rpm -q almalinux-releaseos-release などを入れているパッケージの版almalinux-release-9.8-1.el9.x86_64
uname -r動いているカーネルの版(OS の版ではない)5.14.0-687.53.1.el9_8.x86_64
lsb_release -aディストリビューションの情報command not found(入っていなかった)

実行例と出力の読み方

/etc/os-release は /usr/lib/os-release への近道

[opuser@web01 ~]$ ls -l /etc/os-release
lrwxrwxrwx. 1 root root 21 May 19 16:33 /etc/os-release -> ../usr/lib/os-release

実体は /usr/lib/os-release でした。os-release(5) も、/etc 側を /usr/lib 側への相対リンクにし、読むときは /etc 側を優先して、無いときだけ /usr/lib 側を見る、と定めています。

hostnamectl は Operating System と Kernel の2行を見る

[opuser@web01 ~]$ hostnamectl
 Static hostname: web01
       Icon name: computer-vm
         Chassis: vm 🖴
      Machine ID: xxxxxxxx…
         Boot ID: xxxxxxxx…
  Virtualization: oracle
Operating System: AlmaLinux 9.8 (Olive Jaguar)
     CPE OS Name: cpe:/o:almalinux:almalinux:9::baseos
          Kernel: Linux 5.14.0-687.53.1.el9_8.x86_64
    Architecture: x86-64
 Hardware Vendor: innotek GmbH
  Hardware Model: VirtualBox
Firmware Version: VirtualBox

Operating System は PRETTY_NAME と、Kernel は uname -r と同じ値でした。2行だけなら grep で絞ります。

[opuser@web01 ~]$ hostnamectl | grep -E "Operating System|Kernel"
Operating System: AlmaLinux 9.8 (Olive Jaguar)
          Kernel: Linux 5.14.0-687.53.1.el9_8.x86_64

/etc/redhat-release と rpm -q で RHEL 系の版を見る

[opuser@web01 ~]$ cat /etc/redhat-release
AlmaLinux release 9.8 (Olive Jaguar)

/etc/almalinux-release と /etc/system-release も同じ1行でした。どのパッケージのファイルかは rpm -qf で分かります。

[opuser@web01 ~]$ rpm -q almalinux-release
almalinux-release-9.8-1.el9.x86_64
[opuser@web01 ~]$ rpm -qf /etc/os-release /etc/redhat-release
almalinux-release-9.8-1.el9.x86_64
almalinux-release-9.8-1.el9.x86_64

どちらも almalinux-release パッケージのファイルです。AlmaLinux の公式リリースノートは、このパッケージを RHEL の redhat-release の代わりと説明しています。

uname -r と uname -a はカーネルの版

[opuser@web01 ~]$ uname -r
5.14.0-687.53.1.el9_8.x86_64
[opuser@web01 ~]$ uname -a
Linux web01 5.14.0-687.53.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Sep 30 11:17:58 EDT 2026 x86_64 x86_64 x86_64 GNU/Linux

uname(1) では -r は kernel release(カーネルの版)です。uname -a には AlmaLinux という OS 名は出てきません。

オプションuname(1) での意味この環境での出力
-sカーネルの名前Linux
-nネットワーク上のホスト名web01
-rカーネルのリリース(版)5.14.0-687.53.1.el9_8.x86_64
-vカーネルのバージョン(この環境ではビルド番号と日時)#1 SMP PREEMPT_DYNAMIC Wed Sep 30 11:17:58 EDT 2026
-mマシンのハードウェア名x86_64

os-release の項目の意味と、報告に書く行

意味の欄は os-release(5) の要約、右端は使い分けの目安です。

項目os-release(5) での意味この環境の値報告に書くか
PRETTY_NAME利用者に見せる形の OS 名。版やコードネームを含むことがあるAlmaLinux 9.8 (Olive Jaguar)書く(1行で伝わる)
NAME版を含まない OS 名AlmaLinuxPRETTY_NAME を書けば不要
VERSION_ID名前やコードネームを除いた版。スクリプトでの処理向け9.8数字だけ求められたとき
ID小文字の OS 識別子。スクリプト向けalmalinuxスクリプトの判定に使う
ID_LIKEパッケージなどが近い OS の ID を、近い順に空白区切りで並べたものrhel centos fedora系統(RHEL 系か)を伝えるとき
SUPPORT_ENDこの版のサポートが終わる日(その日からサポートなし)2032-06-01更新の計画を話すとき

OS の版とカーネルの版は別物

OSの版とカーネルの版は別の層であることを示す図。cat /etc/os-release・/etc/redhat-release・rpm -q almalinux-release はOS(AlmaLinux 9.8)を、uname -r・uname -a・/proc/version はカーネル(5.14.0-687.53.1.el9_8)を見ており、hostnamectl は両方を表示する
図: どのコマンドがどの層を見ているか(AlmaLinux 9.8 の実行結果と AlmaLinux Wiki をもとに作成)

「9.8」は OS の版、「5.14.0-687.53.1」はカーネルの版です。入っているカーネルを rpm -q kernel で見ると2つありました。

[opuser@web01 ~]$ rpm -q kernel
kernel-5.14.0-687.5.3.el9_8.x86_64
kernel-5.14.0-687.53.1.el9_8.x86_64

AlmaLinux Wiki の 9.8 リリースノートでは、9.8 の配布時のカーネルは 5.14.0-687.5.3 です。この環境は更新後の 687.53.1 で起動し、OS の表示は 9.8 のままでした。いま動いている版は uname -r で見ます。proc_version(5) が「現在動いているカーネルの版」とする /proc/version も、同じ 5.14.0-687.53.1.el9_8.x86_64 でした。

やりがちな失敗と確かめ方

カーネルの版を「OS のバージョン」として書く

uname -r の「5.14.0」を OS のバージョンとして書くと、AlmaLinux の何版か伝わりません。OS は PRETTY_NAME か VERSION_ID、カーネルは uname -r と分けて書きます。

lsb_release が入っていない

[opuser@web01 ~]$ lsb_release -a
-bash: lsb_release: command not found

この環境には入っていませんでした。Ubuntu 24.04 の lsb_release の man ページは、os-release の情報を使う実装だと説明しています。確認のためにパッケージを入れるより、/etc/os-release を直接読むほうが早く済みます。

別の系統のファイルを探して「無い」と慌てる

[opuser@web01 ~]$ cat /etc/debian_version
cat: /etc/debian_version: No such file or directory

見つけた手順のファイルが、目の前の OS には無いことがあります。系統が分からないうちは、共通の /etc/os-release から見ます。

hostnamectl に名前を付けて実行する

hostnamectl(1) によると、hostnamectl hostname 名前 のように名前を渡すとホスト名が変わります。確認だけなら引数なし(status と同じ扱い)で実行します。

シェルスクリプトで OS を判定する書き方

os-release(5) には「Bourne シェルのスクリプトから source できる」とあり、. で読み込むと項目名がそのまま変数になります。

[opuser@web01 ~]$ . /etc/os-release; echo "$NAME $VERSION_ID"
AlmaLinux 9.8
[opuser@web01 ~]$ echo "$ID $VERSION_ID ${VERSION_ID%%.*}"
almalinux 9.8 9

対話中のシェルで読み込むと、変数はそのシェルに残ります。${VERSION_ID%%.*} は最初の点から後ろを削る書き方で、9 だけを取り出せます。

系統で分けるときは ID_LIKE も見ます。os-release(5) は、ID の値を知らないときは ID_LIKE を確かめるよう勧めています。

[opuser@web01 ~]$ cat /tmp/os-check.sh
#!/bin/bash
# /etc/os-release を読み込んで OS の系統を判定する
. /etc/os-release
echo "OS: $PRETTY_NAME (ID=$ID, VERSION_ID=$VERSION_ID)"
case " $ID $ID_LIKE " in
  *" rhel "*|*" fedora "*) echo "RHEL系: パッケージは dnf で入れる" ;;
  *" debian "*)            echo "Debian系: パッケージは apt で入れる" ;;
  *)                       echo "未対応のOS: $ID" ;;
esac
if [ "${VERSION_ID%%.*}" -ge 9 ]; then echo "メジャーバージョン9以上"; fi
[opuser@web01 ~]$ bash /tmp/os-check.sh
OS: AlmaLinux 9.8 (Olive Jaguar) (ID=almalinux, VERSION_ID=9.8)
RHEL系: パッケージは dnf で入れる
メジャーバージョン9以上

ID は almalinux でも、ID_LIKE に rhel があるので RHEL 系に分岐しました。前後に空白を足すのは、別の語の一部に一致させないためです。VERSION_ID は省略できる項目(os-release(5))なので、多くの OS で使うなら空のときの扱いも足します。

よくある質問

Q. 報告には OS とカーネル、どちらの版を書けばいい?

A. 「OS のバージョン」なら PRETTY_NAME、カーネルの話なら uname -r です。迷ったら hostnamectl の Operating System と Kernel の2行を両方書いておくと、読む人が取り違えにくくなります。

Q. 「9.8」の数字は更新で変わる?

A. AlmaLinux Wiki の 9.8 リリースノートには、AlmaLinux OS 9 を 9.8 に上げる手順として dnf upgrade -y が書かれています。更新で小数点以下が上がるので、報告には作業直前に確かめた値を書きます。

Q. Ubuntu でも /etc/os-release で確認できる?

A. /etc/os-release は特定のディストリビューションのものではなく、systemd のマニュアル os-release(5) で決められたファイルです。仕様の例にも「ID=ubuntu なら ID_LIKE=debian が適切」とあります。なお、この記事の実行結果はすべて AlmaLinux 9.8 のものです。

次に読む

参考にした一次資料

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

インフラの運用・構築に10年以上携わり、AWS 認定8資格を持つ運営者です。いまは Claude Code などの AI ツールを日々の作業の自動化に使いながら、これから使う人のための教科書サイトを運営しています。

コメント

コメント一覧 (1件)

コメントする

目次