第一回で飛ばした部分とか。
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は小刻みにいこうかな。
・前回(第一回)
・次回(第三回)