読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】挿したデバイスが認識されてるか分からん。/proc・/sys・/dev と lspci・lsusb・lsmod・modprobe【LPICレベル1】

19レスカテゴリ:Linux
1: 名無しさん

サーバーに増設したカードとかUSB機器とか、ちゃんと認識されてるか確かめたい
どこを見たらええん?

2: 名無しさん

前提のおさらい。FHS で、/proc と /sys はカーネルの情報を見せる場所、/dev はデバイスファイルの場所と決まってる

3: 名無しさん

>>1
3つの場所の役割
/proc:プロセスとカーネルの情報(cpuinfo・meminfo・interrupts・ioports・dma など)
/sys:カーネルが見ているデバイスやドライバの情報(sysfs)
/dev:プログラムがデバイスを読み書きするためのデバイスファイル

4: 名無しさん

>>3
試した仮想マシンで
/proc/cpuinfo に CPU の型番、/proc/meminfo に MemTotal
ls /sys/block → vda vdb とループデバイス
ls -l /dev/vda → 先頭が b(ブロックデバイス)、/dev/null は c(キャラクタデバイス)

5: 名無しさん

>>4
/sys/block/vda/size は 268435456 やった。単位は512バイトのセクタやから

6: 名無しさん

>>5

lsblk の SIZE も 128G で合ってた

7: 名無しさん

>>1
つながってる機器の一覧は?

8: 名無しさん

>>7
PCI の機器は lspci、USB は lsusb。lspci -k はそれぞれに使われてるカーネルドライバも出す
試したら Ethernet controller: Red Hat, Inc. Virtio 1.0 network device などが出て、Kernel driver in use: virtio-pci も見えた

9: 名無しさん

>>8
lsusb は USB のない仮想マシンやと unable to initialize usb spec と出て、一覧は出えへんかった。lspci -v で詳しく、lsusb -t で木の形

10: 名無しさん

>>1
ドライバがモジュールになってる場合は?

11: 名無しさん

>>10
lsmod で読み込まれてるモジュールの一覧(中身は /proc/modules)。読み込むのは modprobe モジュール名、外すのは modprobe -r。modprobe は modules.dep を見て、依存するモジュールも一緒に入れたり外したりする

12: 名無しさん

>>11
insmod と rmmod は?

13: 名無しさん

>>12
1つのモジュールファイルを入れる・外すだけで、依存は面倒を見ない。だからふだんは modprobe。情報は modinfo モジュール名。modprobe -n -v で実際には入れずに何をするかだけ見られる

14: 名無しさん

>>11
試した仮想マシンはドライバをカーネルに組み込んだ作りで、lsmod は見出しだけやった。ディストリビューションの普通のカーネルはモジュールが多いから、たくさん出る

15: 名無しさん

>>11
起動のたびに読ませないようにするのは?

16: 名無しさん

>>15
/etc/modprobe.d/ の下の .conf に blacklist モジュール名。オプションを渡すなら options モジュール名 引数

17: 名無しさん

>>2
/dev のファイルは誰が作ってるん?

18: 名無しさん

>>17
udev。カーネルが機器を見つけると知らせが来て、udev がルールに従って /dev のファイルを作ったり名前を付けたりする。ルールは /usr/lib/udev/rules.d/ と /etc/udev/rules.d/。D-Bus はプログラム同士がメッセージをやり取りする仕組みで、機器の抜き差しをデスクトップなどに知らせるのに使われる

19: 名無しさん

>>8
見るのは lspci・lsusb・lsmod、詳しくは /proc と /sys、モジュールは modprobe と modprobe -r。依存まで面倒を見るのが modprobe、で覚える

管理人のひとこと