SEワンタンの独学備忘録

IT関連の独学した内容や資格試験に対する取り組みの備忘録

【LPIC101】Linuxのデバイス認識 LPICで学ぶLinux②

第一回で飛ばした部分とか。

Linuxにおけるデバイス情報管理

デバイス情報の確認

/udev

Linuxではハードウェアのアクセスを抽象化するデバイスを持っており、ハードウェアをデバイスファイルとして表現します。
これがいわゆるインタフェースとなることによりファイルの読み書きでデバイスのアクセスが可能となっています。
インタフェースであるため該当するファイルが存在しないデバイスは接続ができません。

デバイスファイルは「/dev」配下に配置されます。

/devディレクトリの抜粋。

[wantan@nestedvm-centos7 ~]$ ll /dev/
total 0
crw-------. 1 root root       10,   235 Jun  3 13:44 autofs
drwxr-xr-x. 2 root root             100 Jun  3 13:44 block
drwxr-xr-x. 2 root root              60 Jun  3 13:44 bsg
crw-------. 1 root root       10,   234 Jun  3 13:44 btrfs-control
drwxr-xr-x. 2 root root            2540 Jun  5 17:15 char
crw-------. 1 root root        5,     1 Jun 11 13:18 console
lrwxrwxrwx. 1 root root              11 Jun  3 13:44 core -> /proc/kcore
drwxr-xr-x. 3 root root              60 Jun  3 13:44 cpu
crw-------. 1 root root       10,    61 Jun  3 13:44 cpu_dma_latency
crw-------. 1 root root       10,    62 Jun  3 13:44 crash
drwxr-xr-x. 8 root root             160 Jun  3 13:44 disk
lrwxrwxrwx. 1 root root              13 Jun  3 13:44 fd -> /proc/self/fd
crw-rw-rw-. 1 root root        1,     7 Jun  3 13:44 full
crw-rw-rw-. 1 root root       10,   229 Jun  3 13:44 fuse
crw-------. 1 root root       10,   228 Jun  3 13:44 hpet
drwxr-xr-x. 2 root root               0 Jun  3 13:44 hugepages

これらはudevによって管理されています。
udevは以下のように理解しました。

デーモン(systemd-udevd)として常駐しており、デバイスが接続されるたびに事前に用意されたルール(/etc/udev/rule.d)に従い、デバイスファイルの作成、削除を行っているためデバイスファイルは必要な最小構成を保っている。

udevについては以下が参考になります。LPICレベル1程度ではかなり踏み込んでいる内容かもしれません。
参考:udev とは|ほげほげテクノロジー|note


/proc

似たような(?)ものに「/proc」が存在します。
どっちがなにだったかあやふやだったので、ここではその違いを明確にします。

/proc」にはLinuxが認識しているデバイス情報が表示されます。
これは基本的には実態を持たない仮想ファイルです。

代表的(試験で問われやすい)なものには以下のようなものがあります。

ファイル 内容
/proc/cpuinfo CPU情報
/proc/meminfo メモリ情報
/proc/ioports I/Oポート情報
/proc/bus/pci/devices PCIデバイス情報
/proc/scsi/scsi SCSIデバイスの情報
/proc/bus/usb/devices USBデバイスの情報

これらの情報はcatコマンドでファイルを出力するか専用のコマンドを実行することにより表示することができます。

・PCIデバイス情報を表示する。

lspci

・USBデバイス情報を表示する。

lsusb

PCIはデスクトップパソコンの機能拡張のための接続規格のこと。
参考:PCI | バッファロー

デバイスドライバ

Linuxではデバイスを利用するのにデバイスドライバが必要になる。

デバイスクラス

正直よくわかっていないけど演習してると遭遇するやつ。

USBデバイス(USBメモリに限らない)についてはLinuxに最初から搭載されているクラスドライバをすることができる。
クラスドライバは汎用デバイスドライバのようなものなので、別途専用ドライバをインストールせずともデバイスを利用することができる。

試験的には名前をみたらどんなデバイスのクラスドライバなのか分かった方がよさそう。

クラスドライバ 対応デバイス
HID(Human Interface Device) キーボードやマウス
Mass Storage Class USBメモリやハードディスク
Audio Class スピーカーやマイク
ACM Comminucation Device Class モデムなど

デバイスドライバのロード

Linuxのデバイスドライバはカーネル(カーネルモジュール)の一部として提供されており、カーネルに取り込むことをロードと呼びます。
ロードされているカーネルモジュールはlsmodコマンドから確認できます。

・コマンド結果の抜粋

[root@nestedvm-centos7 proc]# lsmod
Module                  Size  Used by
tcp_diag               12591  0
udp_diag               12801  0
inet_diag              18949  2 tcp_diag,udp_diag
unix_diag              12601  0

また、手動でロードする際にはmodprobeコマンドを使用します。

modprobe isofs

ロードできているか確認してみる。

[root@nestedvm-centos7 proc]# lsmod | grep iso
isofs                  39844  0


ーーーーーーーーーーーーーーーーーーーー

LPICは小刻みにいこうかな。

参考:LinuCイージス:LinuC Web教科書

・前回(第一回)

www.wantanblog.com

・次回(第三回)

www.wantanblog.com