dmidecodeコマンドでLinuxのハードウェアの情報を取得する|メモリ・CPU・BIOS確認の実践例

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips > dmidecodeコマンドでLinuxのハードウェアの情報を取得する|メモリ・CPU・BIOS確認の実践例
「サーバーのメモリ容量やCPU型番を調べたいけど、どのコマンドを使えばいいかわからない」
「物理サーバーのシリアル番号を確認したいが、本体のラベルを見に行くのは面倒」

こうした悩みは、dmidecodeコマンドを使えばすべて解決できます。

dmidecodeは、Linux上からBIOSに格納されたハードウェア情報(DMIテーブル)を読み取り、メモリ容量・CPU型番・シリアル番号・BIOSバージョンなどを一括で確認できるコマンドです。

この記事では、dmidecodeコマンドの基本的な使い方から、--typeオプションや-sオプションによる絞り込み、grepとの組み合わせ、仮想環境の判定方法まで、実務で役立つ使い方を解説します。

【この記事でわかること】
sudo dmidecode でBIOSに格納されたハードウェア情報を一括取得できる
--type bios/processor/memory/system で必要な情報だけに絞り込める
-s system-serial-number などの-sオプションで特定情報を1行で取得できる
・grepと組み合わせてシリアル番号・CPU型番・メモリ容量を素早く抽出できる
system-product-name の値で仮想環境か物理サーバーかを判定できる

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

dmidecodeコマンドとは

dmidecodeは、サーバーやPCのマザーボード上にあるBIOS/UEFIが保持するDMI(Desktop Management Interface)テーブルを読み取り、ハードウェア情報を人間が読める形式で出力するコマンドです。

DMIテーブルには、メーカーが出荷時に書き込んだ情報(製造元・型番・シリアル番号・メモリスロット構成など)が格納されています。OSを問わずハードウェアの物理的な仕様を確認できるため、サーバー管理の現場で広く使われています。

dmidecodeの基本的な使い方

1. sudoが必要な理由

dmidecodeは/dev/memや/sys/firmware/dmi/tablesを読み取るため、root権限が必要です。

一般ユーザーで実行すると、以下のようなエラーが表示されます。

$ dmidecode /dev/mem: Permission denied

このエラーが出た場合は、sudoを付けて実行してください。

$ sudo dmidecode

2. 全情報を出力する

オプションなしで実行すると、DMIテーブルに格納されたすべてのハードウェア情報が出力されます。以下は、VMware環境での実行例です。

# dmidecode # dmidecode 2.11 SMBIOS 2.4 present. 364 structures occupying 16040 bytes. Table at 0x000E0010. Handle 0x0000, DMI type 0, 24 bytes BIOS Information Vendor: Phoenix Technologies LTD Version: 6.00 Release Date: 07/02/2012 Address: 0xEA0C0 Runtime Size: 89920 bytes ROM Size: 64 kB Handle 0x0001, DMI type 1, 27 bytes System Information Manufacturer: VMware, Inc. Product Name: VMware Virtual Platform Version: None Serial Number: VMware-56 4d b6 9c ba 29 d8 13-4c c0 d2 5b c7 32 79 44 UUID: 564DB69C-BA29-D813-4CC0-D25BC7327944

出力量が非常に多いため、lessコマンドにパイプするか、後述する--typeオプションや-sオプションで必要な情報だけを絞り込んで使うのが実用的です。

--typeオプションで必要な情報だけを取得する

dmidecodeの--typeオプションを使うと、特定の種類のハードウェア情報だけを取得できます。指定方法はキーワードとType番号の2通りがあります。

1. キーワードで指定する

--typeオプションには以下のキーワードが使えます。

bios:BIOSの情報
system:システム(製造元・型番・シリアル番号)の情報
baseboard:マザーボードの情報
chassis:筐体の情報
processor:CPUの情報
memory:メモリの情報
connector:ポート・コネクタの情報
slot:拡張スロットの情報

2. BIOS情報を確認する(--type bios)

$ sudo dmidecode --type bios # dmidecode 2.11 SMBIOS 2.4 present. Handle 0x0000, DMI type 0, 24 bytes BIOS Information Vendor: Phoenix Technologies LTD Version: 6.00 Release Date: 07/02/2012

BIOSのベンダー名・バージョン・リリース日を確認できます。ファームウェアの更新判断に役立ちます。

3. CPU情報を確認する(--type processor)

$ sudo dmidecode --type processor Handle 0x0004, DMI type 4, 42 bytes Processor Information Socket Designation: CPU #000 Type: Central Processor Family: Unknown Manufacturer: GenuineIntel Version: Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz Max Speed: 30000 MHz Current Speed: 3200 MHz Status: Populated, Enabled Core Count: 2 Thread Count: 2

CPU型番・クロック数・コア数・スレッド数を確認できます。

4. メモリ情報を確認する(--type memory)

$ sudo dmidecode --type memory Handle 0x0010, DMI type 16, 23 bytes Physical Memory Array Location: Other Use: System Memory Maximum Capacity: 4 GB Number Of Devices: 1 Handle 0x0011, DMI type 17, 34 bytes Memory Device Size: 4096 MB Form Factor: DIMM Locator: RAM slot #0 Type: DRAM Speed: Unknown

メモリの最大容量・搭載容量・スロット構成・メモリタイプを確認できます。メモリ増設を検討するときに重宝します。

5. システム情報を確認する(--type system)

$ sudo dmidecode --type system Handle 0x0001, DMI type 1, 27 bytes System Information Manufacturer: VMware, Inc. Product Name: VMware Virtual Platform Version: None Serial Number: VMware-56 4d b6 9c ba 29 d8 13-4c c0 d2 5b c7 32 79 44 UUID: 564DB69C-BA29-D813-4CC0-D25BC7327944 Wake-up Type: Power Switch

製造元・製品名・シリアル番号・UUIDを確認できます。

6. Type番号で指定する

--typeオプションにはキーワードだけでなく、DMI Type番号を直接指定することもできます。よく使うType番号は以下の通りです。

Type 0:BIOS Information
Type 1:System Information
Type 4:Processor Information
Type 16:Physical Memory Array(メモリアレイ全体の情報)
Type 17:Memory Device(メモリスロットごとの情報)

CPU情報をType番号で取得するには以下のように実行します。

$ sudo dmidecode --type 4

キーワード指定(--type processor)と同じ結果が得られます。

-sオプションで特定情報を1行で取得する

-s(--string)オプションを使うと、DMIテーブルから特定の情報だけを1行で取得できます。スクリプトで値を変数に格納したいときに便利です。

1. よく使う-sオプションの指定値

system-manufacturer:システムの製造元
system-product-name:製品名
system-serial-number:シリアル番号
system-uuid:UUID
bios-vendor:BIOSベンダー
bios-version:BIOSバージョン
bios-release-date:BIOSリリース日
processor-version:CPU型番

2. 実行例

$ sudo dmidecode -s system-manufacturer VMware, Inc. $ sudo dmidecode -s system-serial-number VMware-56 4d b6 9c ba 29 d8 13-4c c0 d2 5b c7 32 79 44 $ sudo dmidecode -s bios-version 6.00 $ sudo dmidecode -s processor-version Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz

このように1行で結果が返るため、シェルスクリプトとの組み合わせに最適です。

grepとの組み合わせで効率的に情報を抽出する

dmidecodeの出力をgrepでフィルタリングすると、必要な情報をすばやく見つけられます。

1. シリアル番号を抽出する

$ sudo dmidecode | grep "Serial Number" Serial Number: VMware-56 4d b6 9c ba 29 d8 13-4c c0 d2 5b c7 32 79 44

2. メモリ容量を抽出する

$ sudo dmidecode --type memory | grep "Size" Size: 4096 MB

3. CPU型番を抽出する

$ sudo dmidecode --type processor | grep "Version" Version: Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz

実務Tips:サーバー台帳作成と仮想環境判定

1. サーバー台帳用の情報を一括取得する

複数の項目をまとめてシェルスクリプトで取得すれば、サーバー台帳を効率的に作成できます。

#!/bin/bash echo "=== $(hostname) ===" sudo dmidecode -s system-manufacturer sudo dmidecode -s system-product-name sudo dmidecode -s system-serial-number sudo dmidecode -s processor-version sudo dmidecode --type memory | grep "Size:" | head -1

2. 仮想環境か物理サーバーかを判定する

system-product-name の値で仮想環境かどうかを判定できます。

# VMware環境の場合 $ sudo dmidecode -s system-product-name VMware Virtual Platform # 物理サーバーの場合 $ sudo dmidecode -s system-product-name PowerEdge R640 # シェルスクリプトで自動判定する $ product=$(sudo dmidecode -s system-product-name) $ if echo "$product" | grep -qi "virtual\|vmware\|kvm\|qemu\|xen"; then echo "仮想マシンです" else echo "物理サーバーです" fi

トラブルシュート

1. /dev/mem: Permission denied が出る

一般ユーザーで実行した場合に発生します。sudoを付けて再実行してください。

2. No SMBIOS nor DMI entry point found が出る

仮想環境やARM系のマシンで、DMIテーブルがBIOSに存在しない場合に発生します。この場合はdmidecodeでの情報取得はできないため、lshwやlscpu、/proc/cpuinfoなどの代替手段を使ってください。

3. コンテナ環境では使えない

Docker・LXCなどのコンテナ内では/dev/memが存在しないため、dmidecodeは使えません。ホスト側で実行するか、lscpuやfreeコマンドで代替してください。

まとめ

やりたいこと コマンド
全ハードウェア情報を表示する sudo dmidecode
BIOS情報を確認する sudo dmidecode --type bios
CPU情報を確認する sudo dmidecode --type processor
メモリ情報を確認する sudo dmidecode --type memory
システム情報を確認する sudo dmidecode --type system
シリアル番号を取得する sudo dmidecode -s system-serial-number
CPU型番を取得する sudo dmidecode -s processor-version
BIOSバージョンを取得する sudo dmidecode -s bios-version
シリアル番号をgrepで抽出する sudo dmidecode | grep "Serial Number"
仮想環境かどうか判定する sudo dmidecode -s system-product-name

dmidecodeを使いこなして、Linuxサーバーのハードウェア管理を体系的に身につけたいですか?

ハードウェア情報の正確な把握は、サーバー台帳管理・障害対応・増設計画の基本です。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。