「物理サーバーのシリアル番号を確認したいが、本体のラベルを見に行くのは面倒」
こうした悩みは、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 の値で仮想環境か物理サーバーかを判定できるでも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
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 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
--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
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
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
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
-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
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日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:httpdサービスを起動・停止・再起動する方法|systemctlとinit.dの両対応
- 前のページへ:yumでダウンロードしたRPMを残す方法|keepcache設定とキャッシュ管理
- この記事の属するカテゴリ:Linuxtipsへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます