Linuxを使っていて、こんな疑問を持ったことはありませんか?
「このパソコンのメモリは何GB搭載されているんだろう?」
「CPUの詳しい型番を知りたい」
「マザーボードのメーカーや型番は?」
Windowsなら「システム情報」で簡単に見られますが、Linuxではdmidecodeというコマンドを使うことで、詳細なハードウェア情報を取得できます。
「dmidecodeって何?」
「どうやって使うの?」
「どんな情報が分かるの?」
この記事では、dmidecodeコマンドについて、初心者の方にも分かりやすく、基本から実践的な使い方まで詳しく解説していきます。
dmidecodeとは?ハードウェア情報の「辞書」
dmidecodeの基本的な意味
dmidecodeは「Desktop Management Interface Decode(デスクトップ管理インターフェース解読)」の略称です。
パソコンのBIOS/UEFIには、DMIテーブル(またはSMBIOSテーブル)という、ハードウェア情報が記録された特別な領域があります。
dmidecodeは、この情報を読み取って、人間が理解できる形式で表示してくれるコマンドです。
簡単に言えば、パソコンの内部に保存されているハードウェアの「取扱説明書」を読み取るツールだと考えてください。
なぜdmidecodeが必要なのか
パソコンのハードウェア情報を知りたい場面は、意外と多くあります。
活用シーン:
- メモリの増設を検討する時
- システムの互換性を確認する時
- サーバーの資産管理をする時
- トラブルシューティングで詳細情報が必要な時
- システムの仕様をドキュメント化する時
ケースを開けずに、コマンド一つで詳しい情報が分かるのは便利ですよね。
dmidecodeで分かる情報
どんな情報を取得できるのか見ていきましょう。
BIOSの情報
- BIOSのバージョン
- BIOSのベンダー(製造元)
- リリース日
- BIOSのサイズ
システム情報
- メーカー名
- 製品名
- バージョン
- シリアル番号
- UUID(固有識別番号)
マザーボード(ベースボード)の情報
- メーカー
- 製品名
- バージョン
- シリアル番号
プロセッサ(CPU)の情報
- メーカー(Intel、AMDなど)
- CPUファミリー
- 型番
- コア数
- スレッド数
- 最大速度
- 現在の速度
- ソケットタイプ
メモリの情報
- 総容量
- 各メモリモジュールの詳細
- メモリスロット数
- 空きスロット数
- メモリの種類(DDR3、DDR4、DDR5など)
- 動作速度
- メーカー
- シリアル番号
その他の情報
- キャッシュメモリ
- スロット(PCI、PCI Expressなど)
- ポート情報
- 冷却装置
- 電源ユニット
dmidecodeの基本的な使い方
実際にコマンドを使ってみましょう。
基本構文
sudo dmidecode
重要: dmidecodeはroot権限が必要です。
必ずsudo
を付けて実行します。
すべての情報を表示
引数なしで実行すると、すべてのハードウェア情報が大量に表示されます。
sudo dmidecode
出力が非常に多いので、通常は特定の情報だけを絞り込んで表示します。
出力をページ送りで見る
情報が多い場合は、less
コマンドと組み合わせます。
sudo dmidecode | less
スペースキーでページ送り、q
キーで終了できます。
ファイルに保存
後で参照できるように、ファイルに保存することもできます。
sudo dmidecode > hardware_info.txt
タイプ別に情報を絞り込む
dmidecodeでは、情報の種類ごとに「タイプ番号」が割り当てられています。
主要なタイプ一覧
タイプ番号 | 内容 |
---|---|
0 | BIOS情報 |
1 | システム情報 |
2 | ベースボード(マザーボード)情報 |
3 | シャーシ情報 |
4 | プロセッサ(CPU)情報 |
16 | 物理メモリアレイ |
17 | メモリデバイス |
タイプを指定して表示
構文:
sudo dmidecode -t タイプ番号
BIOS情報を表示:
sudo dmidecode -t 0
システム情報を表示:
sudo dmidecode -t 1
CPU情報を表示:
sudo dmidecode -t 4
メモリ情報を表示:
sudo dmidecode -t 17
キーワードで指定
タイプ番号の代わりに、分かりやすいキーワードも使えます。
BIOS情報:
sudo dmidecode -t bios
システム情報:
sudo dmidecode -t system
マザーボード情報:
sudo dmidecode -t baseboard
CPU情報:
sudo dmidecode -t processor
メモリ情報:
sudo dmidecode -t memory
実践的な使用例
よくある用途別の使い方を紹介します。
メモリの詳細情報を確認
メモリ増設を検討する際に便利です。
sudo dmidecode -t memory
確認できること:
- 現在搭載されているメモリの容量
- メモリスロットの総数
- 空きスロット数
- メモリの種類(DDR3、DDR4など)
- 動作速度(MHz)
- 各メモリモジュールのメーカーとシリアル番号
出力例の見方:
Handle 0x0030, DMI type 17, 40 bytes
Memory Device
Array Handle: 0x002F
Total Width: 64 bits
Data Width: 64 bits
Size: 8192 MB
Form Factor: SODIMM
Type: DDR4
Speed: 2400 MT/s
Manufacturer: Samsung
この例では、8GBのDDR4メモリがSamsungから供給されていることが分かります。
CPUの情報を確認
プロセッサの詳細を知りたい時に使います。
sudo dmidecode -t processor
確認できること:
- CPUのメーカーと型番
- コア数
- スレッド数
- クロック速度
- ソケットタイプ
- キャッシュサイズ
システムのシリアル番号を確認
資産管理やサポート問い合わせに必要な情報です。
sudo dmidecode -t system | grep Serial
シリアル番号だけを抽出して表示します。
マザーボードのメーカーと型番を確認
ドライバーをダウンロードする際などに必要です。
sudo dmidecode -t baseboard
または、特定の情報だけを抽出:
sudo dmidecode -t baseboard | grep -E "Manufacturer|Product"
BIOS/UEFIのバージョンを確認
アップデートの必要性を判断する時に使います。
sudo dmidecode -t bios
または、バージョン情報だけを抽出:
sudo dmidecode -t bios | grep Version
便利なオプション
dmidecodeには、さらに便利なオプションがあります。
-s オプション:特定の情報だけを表示
より簡潔に、特定の情報だけを取り出せます。
構文:
sudo dmidecode -s キーワード
使用できるキーワード:
システム情報:
sudo dmidecode -s system-manufacturer # メーカー
sudo dmidecode -s system-product-name # 製品名
sudo dmidecode -s system-version # バージョン
sudo dmidecode -s system-serial-number # シリアル番号
sudo dmidecode -s system-uuid # UUID
BIOS情報:
sudo dmidecode -s bios-vendor # BIOSベンダー
sudo dmidecode -s bios-version # BIOSバージョン
sudo dmidecode -s bios-release-date # リリース日
マザーボード情報:
sudo dmidecode -s baseboard-manufacturer # メーカー
sudo dmidecode -s baseboard-product-name # 製品名
sudo dmidecode -s baseboard-version # バージョン
sudo dmidecode -s baseboard-serial-number # シリアル番号
プロセッサ情報:
sudo dmidecode -s processor-family # CPUファミリー
sudo dmidecode -s processor-manufacturer # メーカー
sudo dmidecode -s processor-version # バージョン
-q オプション:不要な情報を省略
ヘッダー情報などを省略して、要点だけを表示します。
sudo dmidecode -q
出力が簡潔になり、読みやすくなります。
-u オプション:生データを表示
通常は解釈された情報が表示されますが、生のバイナリデータも確認できます。
sudo dmidecode -u
高度なデバッグやトラブルシューティングで使用します。
スクリプトでの活用
dmidecodeをシェルスクリプトで使う例です。
システム情報を一覧表示するスクリプト
例:system_info.sh
#!/bin/bash
echo "=== システム情報 ==="
echo "メーカー: $(sudo dmidecode -s system-manufacturer)"
echo "製品名: $(sudo dmidecode -s system-product-name)"
echo "シリアル番号: $(sudo dmidecode -s system-serial-number)"
echo ""
echo "=== BIOS情報 ==="
echo "バージョン: $(sudo dmidecode -s bios-version)"
echo "リリース日: $(sudo dmidecode -s bios-release-date)"
echo ""
echo "=== CPU情報 ==="
sudo dmidecode -t processor | grep -E "Version|Core Count|Thread Count|Max Speed"
echo ""
echo "=== メモリ情報 ==="
sudo dmidecode -t memory | grep -E "Size|Type|Speed" | grep -v "No Module Installed"
実行方法:
chmod +x system_info.sh
./system_info.sh
メモリの総容量を計算
#!/bin/bash
total_memory=$(sudo dmidecode -t memory | grep "Size:" | grep -v "No Module" | awk '{sum+=$2} END {print sum}')
echo "メモリ総容量: ${total_memory} MB"
よくある問題と解決方法
dmidecodeを使う際のトラブル対処法です。
「Permission denied」エラー
原因:
root権限なしで実行しようとしました。
解決方法:
必ずsudo
を付けて実行します。
sudo dmidecode
「/dev/mem: No such file or directory」エラー
原因:
仮想マシンやコンテナ環境で、デバイスファイルにアクセスできません。
解決方法:
仮想マシンの場合、ホストOSで実行するか、仮想マシンの設定を確認します。
Dockerコンテナの場合は、特権モードで起動する必要があります。
docker run --privileged ...
情報が「Not Specified」や「To Be Filled By O.E.M.」と表示される
原因:
メーカーがBIOSにその情報を記録していません。
特に自作PCやホワイトボックスサーバーで起こりやすいです。
解決方法:
残念ながら、dmidecodeでは取得できません。
他の方法(lshw
、hwinfo
など)を試すか、物理的に確認する必要があります。
仮想マシンで情報が少ない
原因:
仮想化環境では、実際のハードウェア情報ではなく、仮想化されたハードウェア情報が返されます。
対処:
これは正常な動作です。
仮想マシンの設定情報が表示されるため、物理的なハードウェア情報を知りたい場合は、ホストOSで実行します。
dmidecode以外のハードウェア情報取得方法
他のツールも知っておくと便利です。
lshw
より包括的なハードウェア情報を表示します。
sudo lshw
HTMLやXML形式での出力も可能です。
sudo lshw -html > hardware.html
hwinfo
非常に詳細なハードウェア情報を提供します。
sudo hwinfo
特定のハードウェアだけを表示:
sudo hwinfo --cpu # CPU情報
sudo hwinfo --memory # メモリ情報
sudo hwinfo --disk # ディスク情報
inxi
簡潔で読みやすい形式でシステム情報を表示します。
inxi -F
オプション:
-F
:完全な情報-c
:カラー表示-b
:基本情報のみ
lscpu
CPU情報に特化したコマンドです。
lscpu
dmidecodeより簡潔で読みやすい形式で表示されます。
free
メモリ使用状況を確認します。
free -h
-h
オプションで、人間が読みやすい単位(GB、MBなど)で表示されます。
サーバー管理での活用
データセンターやサーバー管理での実践例です。
複数サーバーの情報を収集
大量のサーバーの情報を一括収集するスクリプト例:
#!/bin/bash
servers="server1 server2 server3"
for server in $servers; do
echo "=== $server ==="
ssh $server "sudo dmidecode -s system-serial-number"
ssh $server "sudo dmidecode -t memory | grep 'Size:' | grep -v 'No Module' | awk '{sum+=\$2} END {print \"Total Memory:\", sum, \"MB\"}'"
echo ""
done
資産管理用のCSV作成
サーバー資産台帳を作成する例:
#!/bin/bash
echo "Serial,Manufacturer,Model,CPU,Memory" > inventory.csv
serial=$(sudo dmidecode -s system-serial-number)
manufacturer=$(sudo dmidecode -s system-manufacturer)
model=$(sudo dmidecode -s system-product-name)
cpu=$(sudo dmidecode -t processor | grep "Version" | head -1 | cut -d: -f2 | xargs)
memory=$(sudo dmidecode -t memory | grep "Size:" | grep -v "No Module" | awk '{sum+=$2} END {print sum}')
echo "$serial,$manufacturer,$model,$cpu,${memory}MB" >> inventory.csv
まとめ:dmidecodeでハードウェアを深く理解しよう
dmidecodeコマンドについて、重要なポイントをおさらいしましょう。
dmidecodeとは:
- DMI/SMBIOSテーブルからハードウェア情報を取得するコマンド
- BIOSに記録されている情報を人間が読める形式で表示
- ケースを開けずに詳細情報が分かる
取得できる主な情報:
- BIOS/UEFIのバージョン
- システム情報(メーカー、型番、シリアル番号)
- CPU情報(型番、コア数、速度)
- メモリ情報(容量、種類、速度、スロット)
- マザーボード情報
基本的な使い方:
sudo dmidecode # すべて表示
sudo dmidecode -t 4 # CPU情報
sudo dmidecode -t memory # メモリ情報
sudo dmidecode -s system-serial-number # シリアル番号のみ
便利なオプション:
-t
:タイプ別に表示-s
:特定の情報だけ抽出-q
:簡潔な表示
活用シーン:
- メモリ増設の検討
- システムの仕様確認
- サーバーの資産管理
- トラブルシューティング
- ドキュメント作成
他の便利なコマンド:
lshw
:包括的なハードウェア情報hwinfo
:非常に詳細な情報lscpu
:CPU情報に特化inxi
:読みやすい形式
dmidecodeは、Linuxシステム管理者にとって必須のツールです。
ハードウェアの詳細を知ることで、適切なアップグレードやトラブルシューティングができるようになります。
まずは自分のパソコンでsudo dmidecode
を実行して、どんな情報が得られるか確認してみてくださいね!
コメント