- Linux
LinuxのOSバージョン確認コマンド|unameとos-releaseの違い
LinuxのOSバージョンは、ディストリビューション(UbuntuやRocky Linuxなど)なら cat /etc/os-release、カーネルなら uname -r で確認します。 この2つは別々のものを指しているので、「Ubuntu 24.04」と「6.8.0」のように答えが2種類あるのが正しい状態です。どちらを聞かれているのかを最初に区別できると、手順書やパッケージの選び方で迷わなくなります。
この記事では、Ubuntu 24.04.4 LTS で実際にコマンドを実行した結果を載せながら、uname と os-release の違い、OS別の早見表、Dockerコンテナ内やWSL2での見え方、lsb_release が入っていないときの代替、シェルスクリプトでOSを判定して分岐するコードまでを順に説明します。手元で動かせなかったディストリビューションの値は「未実行」と明記しています。
OSバージョン確認コマンドの早見表
| 知りたいこと | コマンド | Ubuntu 24.04 での出力(実行結果) |
|---|---|---|
| ディストリビューション名とバージョン(まずこれ) | cat /etc/os-release |
PRETTY_NAME="Ubuntu 24.04.4 LTS" ほか |
| 1行だけ欲しい | grep PRETTY_NAME /etc/os-release |
PRETTY_NAME="Ubuntu 24.04.4 LTS" |
| バージョン番号だけ | . /etc/os-release; echo "$VERSION_ID" |
24.04 |
| カーネルのバージョン | uname -r |
6.18.44-fc-v64(検証環境の値) |
| カーネル名・版・CPUをまとめて | uname -srm |
Linux 6.18.44-fc-v64 x86_64 |
| CPUアーキテクチャ | uname -m または arch |
x86_64 |
| 32bitか64bitか | getconf LONG_BIT |
64 |
| カーネルのビルド情報 | cat /proc/version |
Linux version 6.18.44-fc-v64 (...) |
| Ubuntu/Debian系の定番 | lsb_release -a |
Description: Ubuntu 24.04.4 LTS ほか |
| systemdがある環境でまとめて | hostnamectl |
OS名・カーネル・アーキテクチャを一覧表示(今回は未実行) |
| ログイン画面用の表示 | cat /etc/issue |
Ubuntu 24.04.4 LTS \n \l |
| glibcのバージョン | ldd --version |
ldd (Ubuntu GLIBC 2.39-0ubuntu8.7) 2.39 |
迷ったら cat /etc/os-release と uname -r の2つを実行すれば用が足ります。 残りは「1行で欲しい」「スクリプトで使いたい」といった場面に合わせて選びます。
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「LinuxのOSバージョン確認コマンド|unameとos-releaseの違い」
カーネルとディストリビューションの違いを図で整理する
Linuxという言葉は、2つの意味で使われます。ひとつはカーネル(ハードウェアとプログラムの間を取り持つ中心部分)、もうひとつはディストリビューション(カーネルにコマンド類・パッケージ管理・設定を組み合わせて配布しているまとまり)です。
flowchart TB
subgraph D["ディストリビューション(/etc/os-release で確認)"]
A["アプリ・コマンド類<br>bash / coreutils / systemd"]
P["パッケージ管理<br>apt / dnf / apk"]
L["ライブラリ<br>glibc / musl"]
end
subgraph K["カーネル(uname -r で確認)"]
K1["Linux カーネル<br>プロセス・メモリ・ファイル・ネットワーク"]
end
H["ハードウェア / 仮想マシン(uname -m でCPUの種類)"]
D --> K --> H
| 項目 | カーネル | ディストリビューション |
|---|---|---|
| 何を指すか | OSの中心部分(Linux本体) | カーネル+コマンド類+パッケージ管理のまとまり |
| 確認コマンド | uname -r |
cat /etc/os-release |
| バージョンの例 | 6.8.0-xx-generic |
Ubuntu 24.04.4 LTS |
| 情報の出どころ | 動いているカーネル自身(システムコール) | ファイル(テキスト) |
| いつ変わるか | カーネル更新後に再起動したとき | OSのアップグレードや更新をしたとき |
| コンテナの中では | ホストと同じ値になる | コンテナイメージごとの値になる |
| 知りたくなる場面 | ドライバ、カーネルの機能、不具合情報との照合 | パッケージの入れ方、サポート期限、手順書選び |
「OSのバージョンを教えてください」と聞かれたときは、ほとんどの場合ディストリビューションのほうです。カーネルのバージョンが必要なときは「カーネルは?」と明示されることが多いので、両方を控えておくと安心です。
ディストリビューションを確認する(/etc/os-release)
cat /etc/os-release の実行結果
/etc/os-release は、ディストリビューションの名前やバージョンを KEY=値 の形で書いたテキストファイルです。systemd を採用しているディストリビューションを中心に、現在の主要なLinuxのほぼすべてに置かれています。
cat /etc/os-release
実行結果(Ubuntu 24.04.4 LTS):
PRETTY_NAME="Ubuntu 24.04.4 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04.4 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo
各項目の読み方
| 項目 | 意味 | 上の例 | 使いどころ |
|---|---|---|---|
PRETTY_NAME |
人が読むための表示名 | Ubuntu 24.04.4 LTS |
報告や問い合わせにそのまま貼る |
NAME |
ディストリビューション名 | Ubuntu |
表示用 |
VERSION_ID |
バージョン番号(機械向け) | 24.04 |
スクリプトでの比較 |
VERSION |
バージョンの表示用文字列 | 24.04.4 LTS (Noble Numbat) |
細かい版(ポイントリリース)を知る |
VERSION_CODENAME |
コードネーム | noble |
aptのリポジトリ設定など |
ID |
小文字の識別子 | ubuntu |
スクリプトでの判定に使う |
ID_LIKE |
近い系統の識別子(空白区切り) | debian |
派生ディストリビューションの系統判定 |
人に伝えるときは PRETTY_NAME、スクリプトで判定するときは ID と VERSION_ID と覚えておくと使い分けやすくなります。VERSION_ID や ID_LIKE は省略されることがあり、たとえば Debian には ID_LIKE がありません(後述の早見表を参照)。
必要な行だけ取り出す
grep -E '^(PRETTY_NAME|ID|VERSION_ID|ID_LIKE|VERSION_CODENAME)=' /etc/os-release
実行結果:
PRETTY_NAME="Ubuntu 24.04.4 LTS"
VERSION_ID="24.04"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
値だけが欲しいときは、ファイルをシェルに読み込ませるのが手軽です。os-release はシェルの変数代入と同じ書式で書かれているので、.(ドットコマンド)でそのまま読めます。
( . /etc/os-release; echo "$ID $VERSION_ID / $PRETTY_NAME / like=${ID_LIKE:-}" )
実行結果:
ubuntu 24.04 / Ubuntu 24.04.4 LTS / like=debian
丸かっこで囲むとサブシェルの中だけで読み込まれるため、今のシェルの変数を上書きせずに済みます。awk で取り出す書き方も動作を確かめました。
awk -F= '$1=="VERSION_ID"{gsub(/"/,"",$2);print $2}' /etc/os-release
24.04
/etc/os-release の実体は /usr/lib/os-release
ls -l /etc/os-release
dpkg -S /usr/lib/os-release
実行結果:
lrwxrwxrwx 1 root root 21 Feb 6 2026 /etc/os-release -> ../usr/lib/os-release
base-files: /usr/lib/os-release
Ubuntu では /etc/os-release はシンボリックリンクで、実体は base-files パッケージが置いた /usr/lib/os-release です。/etc/os-release が見つからない環境では /usr/lib/os-release を探す、という順番で読むと取りこぼしが減ります(後半のスクリプトでもこの順で読んでいます)。
カーネルを確認する(uname)
uname のオプションと実行結果
uname は、いま動いているカーネルの情報を表示するコマンドです。ファイルを読むのではなく、カーネルに直接問い合わせます。
| コマンド | 表示するもの | 実行結果(検証環境) |
|---|---|---|
uname(-s と同じ) |
カーネル名 | Linux |
uname -r |
カーネルのリリース(バージョン) | 6.18.44-fc-v64 |
uname -v |
カーネルのビルド情報 | #1 SMP PREEMPT_DYNAMIC @0 |
uname -m |
CPUアーキテクチャ | x86_64 |
uname -n |
ホスト名 | vm |
uname -o |
OSの種類 | GNU/Linux |
uname -p / uname -i |
プロセッサ / ハードウェア(環境により unknown) |
x86_64 / x86_64 |
uname -srm |
よく使う3つをまとめて | Linux 6.18.44-fc-v64 x86_64 |
uname -a |
すべて | 下の実行結果 |
uname -a
Linux vm 6.18.44-fc-v64 #1 SMP PREEMPT_DYNAMIC @0 x86_64 x86_64 x86_64 GNU/Linux
今回の検証環境は仮想マシン上の Ubuntu 24.04 で、カーネルは環境側が用意したもの(6.18.44-fc-v64)です。通常の Ubuntu 24.04 では 6.8.0-xx-generic のように、末尾にディストリビューション固有の文字列が付きます(この一般的な値は今回未実行です)。
uname -r の読み方
uname -r の文字列は、おおまかに「カーネルのバージョン」と「ディストリビューションが付けた枝番・種類」に分かれます。
| 例(代表的な形・未実行) | 読み方 |
|---|---|
6.8.0-45-generic |
Ubuntu。6.8.0 がカーネル、45 がUbuntu側の更新番号、generic が種類 |
6.12.xx+deb13-amd64 |
Debian 13。deb13 が Debian 13 向けのビルド |
5.14.0-xxx.el9_x.x86_64 |
RHEL 9 系。el9 が Enterprise Linux 9 |
6.1.xx-xx.amzn2023.x86_64 |
Amazon Linux 2023 |
x.x.x-microsoft-standard-WSL2 |
WSL2(Windows上のLinux) |
uname -r の末尾を見ると、ディストリビューションの見当が付くこともありますが、コンテナの中ではホストのカーネルが見えるため、判定には使わず /etc/os-release を見るのが確実です。
/proc/version でも同じ情報が見られる
cat /proc/version
Linux version 6.18.44-fc-v64 (builder@sandboxing) (gcc (GCC) 15.3.0, GNU ld (GNU Binutils) 2.46) #1 SMP PREEMPT_DYNAMIC @0
uname コマンドが入っていない最小構成の環境でも、/proc/version や /proc/sys/kernel/osrelease を cat すればカーネルのバージョンがわかります。
OS別早見表(主要ディストリビューションの値)
Ubuntu 24.04 の行は今回の実行結果、それ以外の行は各ディストリビューションで一般に知られている代表的な値で、今回は未実行です(コンテナイメージを取得できない検証環境のため)。手元の環境では、表のコマンドを実行して実際の値を確認してください。
| ディストリビューション | ID |
ID_LIKE |
VERSION_ID の形 |
PRETTY_NAME の例 |
標準のカーネル系列 | パッケージ管理 | 確認 |
|---|---|---|---|---|---|---|---|
| Ubuntu 24.04 LTS | ubuntu |
debian |
24.04 |
Ubuntu 24.04.4 LTS |
6.8 系 | apt | 実行結果(カーネル系列を除く) |
| Debian 13 | debian |
(なし) | 13 |
Debian GNU/Linux 13 (trixie) |
6.12 系 | apt | 未実行 |
| RHEL 9 | rhel |
fedora |
9.x |
Red Hat Enterprise Linux 9.x (Plow) |
5.14 系 | dnf | 未実行 |
| RHEL 10 | rhel |
fedora |
10.x |
Red Hat Enterprise Linux 10.x (Coughlan) |
6.12 系 | dnf | 未実行 |
| Rocky Linux 9 / 10 | rocky |
rhel centos fedora |
9.x / 10.x |
Rocky Linux 9.x (Blue Onyx) |
RHELと同系列 | dnf | 未実行 |
| AlmaLinux 9 / 10 | almalinux |
rhel centos fedora |
9.x / 10.x |
AlmaLinux 9.x (...) |
RHELと同系列 | dnf | 未実行 |
| Amazon Linux 2023 | amzn |
fedora |
2023 |
Amazon Linux 2023.x.yyyymmdd |
6.1 系ほか | dnf | 未実行 |
| Alpine Linux | alpine |
(なし) | 3.xx.x |
Alpine Linux v3.xx |
LTS系列 | apk | 未実行 |
この表から読み取れるポイントは3つあります。
IDは小文字で、ディストリビューションごとに決まった値です。スクリプトの分岐はこの値で行います。- RHEL互換のディストリビューションは
ID_LIKEにrhelを含みます。IDを1つずつ列挙しなくても、ID_LIKEを見ればまとめて扱えます。 VERSION_IDの形はばらばらです(24.04、13、9.6、2023、3.22.1)。数値として比べるときは、メジャー番号だけを取り出すと扱いやすくなります。
ディストリビューション固有のファイル
os-release のほかに、系統ごとの確認用ファイルもあります。
| 系統 | ファイル | 内容 | 確認 |
|---|---|---|---|
| Debian / Ubuntu | /etc/debian_version |
Debianのバージョン。Ubuntu 24.04 では trixie/sid |
実行結果 |
| Ubuntu | /etc/lsb-release |
DISTRIB_RELEASE=24.04 など |
実行結果 |
| RHEL系 | /etc/redhat-release |
Rocky Linux release 9.x (Blue Onyx) のような1行 |
未実行 |
| Amazon Linux | /etc/system-release |
Amazon Linux release 2023... のような1行 |
未実行 |
| Alpine | /etc/alpine-release |
3.xx.x のような番号だけ |
未実行 |
| 共通 | /etc/issue |
ログイン画面用の表示 | 実行結果 |
Ubuntu 24.04 での実行結果は次のとおりです。
cat /etc/debian_version
cat /etc/lsb-release
ls /etc/*release /etc/*version
trixie/sid
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=24.04
DISTRIB_CODENAME=noble
DISTRIB_DESCRIPTION="Ubuntu 24.04.4 LTS"
/etc/debian_version
/etc/lsb-release
/etc/os-release
Ubuntu の /etc/debian_version は Ubuntu 自身の番号ではなく、もとになった Debian の系列名を示します。 Ubuntu のバージョンを知りたいときは os-release か lsb-release を見ます。どのファイルがあるかわからないときは、ls /etc/*release と打つと一覧できます。
lsb_release と hostnamectl の使い方
lsb_release -a
lsb_release -a
実行結果:
Distributor ID: Ubuntu
Description: Ubuntu 24.04.4 LTS
Release: 24.04
Codename: noble
短く取り出すオプションも便利です。
| コマンド | 実行結果 |
|---|---|
lsb_release -d |
Description: Ubuntu 24.04.4 LTS |
lsb_release -rs |
24.04 |
lsb_release -cs |
noble |
lsb_release -cs は、aptのリポジトリ設定を書く手順でよく登場します。
lsb_release がないときの代替
lsb_release は lsb-release パッケージに含まれるコマンドで(dpkg -S /usr/bin/lsb_release の結果は lsb-release: /usr/bin/lsb_release)、最小構成のコンテナイメージやRHEL系では入っていないことがあります。その場合は command not found と表示されます。パッケージを追加しなくても、os-release から同じ値が取れます。
| lsb_release での書き方 | os-release を使った代替 | Ubuntu 24.04 での結果 |
|---|---|---|
lsb_release -is |
. /etc/os-release; echo "$ID" |
ubuntu(lsb_release は Ubuntu) |
lsb_release -rs |
. /etc/os-release; echo "$VERSION_ID" |
24.04 |
lsb_release -cs |
. /etc/os-release; echo "$VERSION_CODENAME" |
noble |
lsb_release -ds |
. /etc/os-release; echo "$PRETTY_NAME" |
Ubuntu 24.04.4 LTS |
新しく書く手順やスクリプトでは、os-release を読む形にしておくと、どのディストリビューションでもそのまま動きます。
hostnamectl
hostnamectl は、systemd が動いている環境でOS名・カーネル・アーキテクチャ・仮想化の種類を一度に表示するコマンドです。一般的なサーバーやデスクトップでは次のような項目が並びます(書式の例・今回は未実行)。
Static hostname: web01
Operating System: Ubuntu 24.04.4 LTS
Kernel: Linux 6.8.0-xx-generic
Architecture: x86-64
今回の検証環境は systemd が PID 1 で動いていないため、実行すると次の表示になりました。コンテナの中でも同じ表示になることがあります。
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
この表示が出たときは、cat /etc/os-release と uname -r に切り替えれば同じ情報が得られます。
Dockerコンテナの中では uname がホストのカーネルを返す
コンテナは、ホストのカーネルを共有して動きます。そのため、コンテナの中でカーネルのバージョンを調べると、ホストと同じ値が返ってきます。Docker で確かめた結果です(イメージは検証用の最小構成のもの)。
# ホスト側
uname -r
# コンテナの中
docker run --rm mini:1 cat /proc/sys/kernel/osrelease
docker run --rm mini:1 cat /proc/version
実行結果:
6.18.44-fc-v64
6.18.44-fc-v64
Linux version 6.18.44-fc-v64 (builder@sandboxing) (gcc (GCC) 15.3.0, GNU ld (GNU Binutils) 2.46) #1 SMP PREEMPT_DYNAMIC @0
ホストとコンテナで同じ 6.18.44-fc-v64 が表示されました。一方で、ディストリビューションの情報はコンテナイメージごとに決まります。今回のイメージは最小構成のため、os-release も uname コマンドも入っていませんでした。
docker run --rm mini:1 cat /etc/os-release
docker run --rm mini:1 sh -c 'uname -r'
docker run --rm mini:1 ls /.dockerenv
cat: /etc/os-release: No such file or directory
sh: 1: uname: not found
/.dockerenv
| 調べるもの | コンテナの中で見える値 |
|---|---|
uname -r、/proc/version |
ホストのカーネル |
/etc/os-release |
コンテナイメージのディストリビューション(最小構成のイメージには無いこともある) |
/.dockerenv |
Docker のコンテナ内に置かれる目印のファイル |
「Ubuntu 22.04 のホストで Alpine のコンテナを動かす」といった組み合わせでは、/etc/os-release は Alpine、uname -r は Ubuntu のカーネルという結果になります。コンテナの中でパッケージを入れるときは os-release、カーネルの機能に関わる調査ではホスト側の値を見る、と分けて考えると整理しやすくなります。
WSL2 での見え方
WSL2(Windows上でLinuxを動かす仕組み)では、ディストリビューションは自分で選んだもの(Ubuntu など)、カーネルは Microsoft が用意したものが使われます。そのため、cat /etc/os-release は Ubuntu の内容、uname -r は x.x.x-microsoft-standard-WSL2 という形になります(一般に知られた形で、今回は未実行)。
スクリプトで WSL かどうかを見分けるときは、/proc/version に microsoft という文字が含まれるかを調べる方法がよく使われます。
grep -qi microsoft /proc/version && echo "WSL" || echo "WSLではない"
今回の検証環境(WSLではない仮想マシン)では WSLではない 側に分岐することを確かめました。Windows 側からは wsl -l -v で、各ディストリビューションが WSL1 と WSL2 のどちらで動いているかを確認できます(未実行)。
シェルスクリプトでOSを判定して分岐する
インストール手順をスクリプトにまとめるときは、OSごとにパッケージ管理コマンドを切り替えたくなります。os-release を読み込んで ID で分岐し、知らない ID は ID_LIKE で系統を判定する形にすると、派生ディストリビューションにも対応できます。
os.sh(POSIX sh で動きます):
#!/bin/sh
# OSを判定して分岐する(POSIX sh で動く)
if [ -r /etc/os-release ]; then
. /etc/os-release
elif [ -r /usr/lib/os-release ]; then
. /usr/lib/os-release
else
ID=unknown
VERSION_ID=unknown
fi
case "$ID" in
ubuntu|debian) FAMILY=debian; PKG="apt-get" ;;
rhel|rocky|almalinux|centos|fedora|amzn) FAMILY=rhel; PKG="dnf" ;;
alpine) FAMILY=alpine; PKG="apk" ;;
*)
case " ${ID_LIKE:-} " in
*" debian "*) FAMILY=debian; PKG="apt-get" ;;
*" rhel "*|*" fedora "*) FAMILY=rhel; PKG="dnf" ;;
*) FAMILY=unknown; PKG="" ;;
esac ;;
esac
MAJOR=${VERSION_ID%%.*}
echo "ID=$ID VERSION_ID=$VERSION_ID MAJOR=$MAJOR FAMILY=$FAMILY PKG=$PKG"
echo "KERNEL=$(uname -r) ARCH=$(uname -m)"
if grep -qi microsoft /proc/version 2>/dev/null; then
echo "ENV=WSL"
elif [ -f /.dockerenv ] || [ -f /run/.containerenv ]; then
echo "ENV=container"
else
echo "ENV=host-or-vm"
fi
実行結果(Ubuntu 24.04、sh os.sh):
ID=ubuntu VERSION_ID=24.04 MAJOR=24 FAMILY=debian PKG=apt-get
KERNEL=6.18.44-fc-v64 ARCH=x86_64
ENV=host-or-vm
他のディストリビューションでの分岐は、os-release の内容をまねたテスト用ファイルを読み込ませて確かめました(実機ではなく、判定ロジックの確認です)。
| 読み込ませた内容 | 実行結果(1行目) |
|---|---|
ID=debian、VERSION_ID="13" |
ID=debian VERSION_ID=13 MAJOR=13 FAMILY=debian PKG=apt-get |
ID="rocky"、VERSION_ID="9.6"、ID_LIKE="rhel centos fedora" |
ID=rocky VERSION_ID=9.6 MAJOR=9 FAMILY=rhel PKG=dnf |
ID=alpine、VERSION_ID=3.22.1 |
ID=alpine VERSION_ID=3.22.1 MAJOR=3 FAMILY=alpine PKG=apk |
ID=linuxmint、VERSION_ID="22"、ID_LIKE="ubuntu debian" |
ID=linuxmint VERSION_ID=22 MAJOR=22 FAMILY=debian PKG=apt-get |
最後の行は、case に書いていない linuxmint が ID_LIKE によって debian 系と判定された例です。
スクリプトを書くときのポイント
| ポイント | 理由 | 書き方 |
|---|---|---|
ID はそのまま比較する |
小文字の決まった値なので揺れがない | case "$ID" in ubuntu) ... |
ID_LIKE は空白区切りの一覧として扱う |
複数の値が入る(rhel centos fedora) |
case " $ID_LIKE " in *" rhel "*) |
| 省略される項目に備える | ID_LIKE や VERSION_ID が無い場合がある |
${ID_LIKE:-} で空文字を既定にする |
| バージョン比較はメジャー番号で | 24.04 や 9.6 は整数比較ができない |
MAJOR=${VERSION_ID%%.*} のあと [ "$MAJOR" -ge 9 ] |
uname -r で判定しない |
コンテナではホストの値になる | os-release を使う |
| 変数の上書きに注意する | os-release は NAME や VERSION などを定義する |
サブシェル ( . /etc/os-release; ... ) の中で読む |
Amazon Linux は世代によってパッケージ管理が異なる(2023 は dnf)ため、複数の世代を扱う場合は VERSION_ID でさらに分けると丁寧です。
Python から確認する
Python 3.10 以降には、os-release を辞書として読む関数が標準で入っています。
python3 -c "import platform;print(platform.freedesktop_os_release()['PRETTY_NAME'], platform.release(), platform.machine())"
実行結果(Python 3.11):
Ubuntu 24.04.4 LTS 6.18.44-fc-v64 x86_64
アーキテクチャとビット数を確認する
パッケージやバイナリをダウンロードするときは、OSのバージョンに加えてCPUの種類も必要になります。
uname -m
arch
getconf LONG_BIT
実行結果:
x86_64
x86_64
64
uname -m の値 |
意味 | ダウンロード時によく見る表記 |
|---|---|---|
x86_64 |
Intel / AMD の64bit | amd64、x64 |
aarch64 |
ARM の64bit(Graviton、Raspberry Pi 4以降の64bit OSなど) | arm64 |
armv7l |
ARM の32bit | armhf |
i686 |
Intel / AMD の32bit | i386、x86 |
x86_64 と amd64、aarch64 と arm64 は同じものを指す別名です。配布ページの表記と uname -m の値が違って見えても、この対応で読み替えられます。
サポート期限(EOL)を調べる
バージョンがわかったら、そのバージョンがいつまで更新を受けられるかも確認しておくと、移行の計画が立てやすくなります。サポート期限はコマンドの出力には含まれないため、各ディストリビューションの公式のライフサイクルページで確認します。
| ディストリビューション | 目安(一般に公表されている内容・今回は公式ページ未確認) | 確認先 |
|---|---|---|
| Ubuntu 24.04 LTS | 標準サポートは2029年まで | Ubuntu のリリースサイクルのページ |
| Debian 13 | 通常サポートのあと、LTSによる延長あり | Debian のリリース情報・LTSのページ |
| RHEL 9 / 10 と互換OS | メジャーバージョンごとに約10年 | Red Hat、Rocky Linux、AlmaLinux の各ライフサイクルページ |
| Amazon Linux 2023 | 標準サポートと保守期間の2段階 | Amazon Linux 2023 のリリース情報 |
| Alpine Linux | リリース系列ごとに約2年 | Alpine のリリース一覧ページ |
日付は改定されることがあるため、この記事では目安にとどめています。実際の計画には公式ページの最新の日付を使ってください。 Ubuntu では pro status や hwe-support-status、ubuntu-distro-info といった確認用コマンドも用意されていますが、今回の検証環境には入っておらず未実行です。
うまく表示されないときの対処
| 表示・状況 | 理由 | 対処 |
|---|---|---|
lsb_release: command not found |
lsb-release パッケージが入っていない |
cat /etc/os-release を使う |
System has not been booted with systemd as init system |
hostnamectl は systemd が必要 |
cat /etc/os-release と uname -r を使う |
cat: /etc/os-release: No such file or directory |
最小構成のコンテナイメージなど | /usr/lib/os-release、ls /etc/*release、/etc/issue を順に探す |
uname: not found |
最小構成のイメージに coreutils が無い | cat /proc/version または cat /proc/sys/kernel/osrelease |
更新したのに uname -r が変わらない |
新しいカーネルは再起動後に有効になる | 再起動後にもう一度確認する |
コンテナ内の uname -r がイメージと合わない |
コンテナはホストのカーネルを共有する | 仕様どおり。ディストリビューションは os-release で見る |
/etc/debian_version が trixie/sid |
Ubuntu では基になった Debian の系列名が入る | Ubuntu のバージョンは os-release で見る |
今回確認したコマンドは、どれも一般ユーザーの権限で実行できます。sudo は不要です。
人に伝えるときのコピペ用コマンド
問い合わせや報告で環境を伝えるときは、次の3行をまとめて実行し、出力を貼り付けると情報がそろいます。
grep PRETTY_NAME /etc/os-release
uname -srm
getconf LONG_BIT
実行結果:
PRETTY_NAME="Ubuntu 24.04.4 LTS"
Linux 6.18.44-fc-v64 x86_64
64
よくある質問
Q. uname -a に「Ubuntu」と出ないのはなぜですか?
A. uname はカーネルの情報を返すコマンドだからです。カーネルのビルド情報にディストリビューション名が含まれる環境もありますが、決まりではありません。ディストリビューション名は cat /etc/os-release で確認します。
Q. /etc/os-release と /etc/redhat-release はどちらを見ればよいですか?
A. どちらでも人が読む分には同じ情報が得られます。スクリプトで扱うなら、KEY=値 の形で項目が分かれていて、ディストリビューションをまたいで同じ書式の os-release が向いています。
Q. コンテナの中のカーネルを新しくできますか? A. コンテナはホストのカーネルを使うため、コンテナイメージを替えてもカーネルは変わりません。カーネルを更新したいときは、ホスト側(またはホストの仮想マシン)を更新します。
Q. VERSION_ID と VERSION の違いは何ですか?
A. VERSION_ID は 24.04 のような機械向けの番号、VERSION は 24.04.4 LTS (Noble Numbat) のような表示用の文字列です。ポイントリリース(.4 の部分)まで知りたいときは VERSION か PRETTY_NAME を見ます。
まとめ
- ディストリビューションは
cat /etc/os-release、カーネルはuname -r。この2つは別のものを指す - 人に伝えるときは
PRETTY_NAME、スクリプトではIDとVERSION_IDを使う - RHEL互換OSや派生ディストリビューションは
ID_LIKEで系統を判定できる - コンテナの中の
uname -rはホストのカーネル。ディストリビューションはイメージごとに os-release で確認する lsb_releaseやhostnamectlが使えないときは os-release に切り替える。無ければ/usr/lib/os-releaseや/proc/versionを見る- アーキテクチャは
uname -m。x86_64は amd64、aarch64は arm64 と同じ - サポート期限はコマンドでは出ないので、公式のライフサイクルページで確認する
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「LinuxのOSバージョン確認コマンド|unameとos-releaseの違い」
株式会社RJCでは、LinuxのOSバージョン確認のような基本操作を仲間と学び合っています。こうした知識を共有しながら、日々技術を磨いています。
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。