ハードウェア情報
Linux は「今どんなハードウェアが繋がっているか」をファイルとして見せてくれます。101 試験では、情報を取るコマンドと、その情報の出どころであるファイルの対応が問われます。「USB 機器の一覧を出すコマンドはどれか」「CPU の情報が入っている疑似ファイルはどれか」といった形です。/proc と /sys の役割の違い、割り込み番号や I/O ポートを確認する場所も出題範囲です。
なお lsusb と lspci は頻出ですが、この機械にはどちらも入っていません。書式だけ覚えてください。出どころのファイルは存在するので、lspci の代わりに /sys/bus/pci/devices を覗く、といった代替は効きます。
情報を取るコマンド
| コマンド | 何が分かるか | 主なオプション |
|---|---|---|
lspci | PCI バス上のデバイス一覧 | -v で詳細、-k で使用中のドライバ名 |
lsusb | USB 機器の一覧 | -v で詳細、-t でツリー表示 |
lscpu | CPU の型番、コア数、アーキテクチャ | -e で論理CPUごとの一覧 |
lsblk | ブロックデバイスの木構造 | -f でファイルシステムと UUID |
lsmod | 読み込み済みカーネルモジュール | — |
free -h | メモリとスワップの使用量 | -h で人が読める単位 |
df -h | マウント済みファイルシステムの空き容量 | -h -T |
lspci -k は、そのデバイスをどのドライバが掴んでいるかを表示します。認識されているのに動かないときの切り分けで使う形で、試験でもこのオプションは狙われます。
/proc はカーネルの窓口
/proc はディスク上に実体を持たない疑似ファイルシステムで、カーネルが持っている情報をテキストとして見せる窓口です。
| パス | 内容 |
|---|---|
/proc/cpuinfo | CPU ごとの型番、クロック、対応命令セット |
/proc/meminfo | メモリの詳細な内訳。free の情報源 |
/proc/interrupts | 割り込み番号 (IRQ) ごとの発生回数とデバイス名 |
/proc/ioports | I/O ポートアドレスの割り当て |
/proc/iomem | メモリマップド I/O の割り当て |
/proc/dma | DMA チャネルの割り当て |
/proc/modules | 読み込み済みモジュール。lsmod の情報源 |
/proc/partitions | 認識されているパーティション一覧 |
IRQ、I/O ポート、DMA の3点セットはまとめて出題されることが多いので、ファイル名で並べて覚えてください。中身はただのテキストなので、grep や head で必要な行だけ取り出せます。
ターミナル
head -n 5 /proc/interrupts
cat /proc/partitions
grep Swap /proc/meminfo/sys と udev
/sys は sysfs と呼ばれ、カーネルが認識しているデバイスを木構造で見せます。/proc が「プロセスとカーネルの状態」を中心にした古い仕組みなのに対し、/sys は「デバイスとドライバの関係」を整理して見せる新しい仕組みです。ls /sys/class/net でインターフェース名が並ぶことは覚えておくと便利です。ほかに /sys/class/block や /sys/bus/pci/devices もよく使います。
/dev/sda などのデバイスファイルを動的に作っているのは udev です。カーネルがデバイスを検出すると uevent が飛び、udev がルールに従ってファイル名やパーミッションを決めます。ルールは /etc/udev/rules.d/ と /lib/udev/rules.d/ に置かれ、番号が小さいファイルから順に読まれます。ここも用語問題として出ます。
よくある引っかけ
/proc/meminfo の MemFree と free の available を同じものだと思う誤りが典型です。MemFree はまったく使われていない量で、キャッシュとして使われている再利用可能なメモリは含みません。実際に新しいプロセスが使える量は MemAvailable の方です。
lsblk と df の違いも問われます。lsblk はマウントされていないデバイスも含めて全部出しますが、df はマウント済みのファイルシステムしか出しません。「接続はされているのに df に出てこない」の答えがこれです。
そして /proc の中身はディスクを消費しません。ls -l でサイズ 0 と表示されるファイルでも、cat すれば中身が出ます。