27
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Linuxデバイス・ハードウェア関連まとめ

Last updated at Posted at 2018-06-17

ハードウェアが認識されているか確認する

# lspci -v
# lspci -vt
# lspci -vv
# lsusb -v
# lshw

これらのコマンドはCentOSの場合はyum install pciutils usbutils lshwでインストールできる。

lspciの出力における00:01.2という部分の意味は「バス番号:スロット番号.機能番号」。
スロット番号はenp0s3とかの「s3」に対応している。

ハードウェア情報はprocファイルシステムの下記のパスでも参照できる:

  • /proc/bus/pci/*
    • PCIデバイス情報
  • /sys/bus/usb/*
    • USBデバイス情報
  • /proc/scsi/scsi
    • SCSIデバイス情報
  • /proc/cpuinfo
    • CPU情報
  • /proc/interrupts
    • IRQ情報
  • /proc/scsi/scsi
    • SCSIデバイス情報

lspci -vKernel driver in use を見ればどのデバイスドライバ(カーネルモジュール)が使われているか確認できる。

lspci -vKernel modules と出ているものは、そのデバイスのドライバとして使えるモジュールのリスト。

デバイスドライバ(正確にはカーネルモジュール)の操作・情報取得

ロードされている全ドライバの情報を一気に取得

cat /proc/modules  | cut -d' ' -f1 | while read i; do echo $i; modinfo $i; echo "==============="; done

デバイスドライバはディスクのどこに保存されているか

/lib/modules/の中にある。

ロードされているデバイスドライバの確認

lsmod

デバイスドライバの詳細情報表示

modinfo モジュール名(例:cdrom)

デバイスドライバのロード・アンロード

modprobe

insmod rmmodでもできるが、modprobeの方が高機能)

モジュールとメジャー番号の対応を調べる

cat /proc/devices

Linuxのデバイスはメジャー番号とマイナー番号を持っている。

# ls -l /dev/ttyS0
↓キャラクタデバイス      ↓メジャー番号、マイナー番号
crw-rw---- 1 root dialout 4, 64 Feb  6 21:45 ttyS0  ←デバイスファイル

メジャー番号がどのデバイスに対応するかはカーネルのドキュメントに書いてある。
https://www.kernel.org/doc/Documentation/devices.txt
上記ファイル内で「4 char」を検索するとちゃんと「64 = /dev/ttyS0 First UART serial port」と書いてある。

ブロックデバイスとキャラクタデバイス

  • ブロックデバイスはブロック単位(512バイトや1024バイト)で読み書き。ランダムアクセスできる。
  • キャラクタデバイスは1バイト単位。シーケンシャルで、読み戻したりはできない。

デバイスファイルの作成

mknod -m 660 /dev/ttyS0 c 4 64

デバイスはベンダーID、デバイスIDを持っている。
ベンダーID、デバイスIDは有償の登録制。
/usr/share/hwdata/ 内のファイルにIDとテキストの対応が記されている。

異なるカーネルのバージョン間でデバイスドライバの互換性はない

カーネル2.6.10用にコンパイルしたドライバは2.6.12で動くとは限らない。

例:どのグラフィックのドライバが使われているか調べる

lshw -c video
  *-display              
       description: VGA compatible controller
       product: 82865G Integrated Graphics Controller
       vendor: Intel Corporation
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 02
       width: 32 bits
       clock: 33MHz
       capabilities: pm vga_controller bus_master cap_list rom
       configuration: driver=i915 latency=0
       resources: irq:16 memory:e8000000-efffffff memory:feb80000-febfffff ioport:ed98(size=8)

driver=i915と書いてあるので、modinfoする:

modinfo i915
filename:       /lib/modules/3.18.6-1-ARCH/kernel/drivers/gpu/drm/i915/i915.ko.gz
license:        GPL and additional rights
description:    Intel Graphics
author:         Intel Corporation
author:         Tungsten Graphics, Inc.
(略)

/lib/modules/3.18.6-1-ARCH/kernel/drivers/gpu/drm/i915/i915.ko.gz が使われていることが分かった。

特定のデバイスドライバを読み込ませないようにする(Arch Linuxの場合)

参考:https://wiki.archlinuxjp.org/index.php/%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB#.E3.83.96.E3.83.A9.E3.83.83.E3.82.AF.E3.83.AA.E3.82.B9.E3.83.88

1./etc/modprobe.d/modprobe.confを新規作成して以下のように記述

blacklist joydev
blacklist psmouse
blacklist mousedev
blacklist floppy

2./etc/mkinitcpio.confFILES=にそのファイル名を記述

FILES=/etc/modprobe.d/modprobe.conf

3.initramfsを再作成(カーネルをインストールしたときと同じコマンド)

mkinitcpio -k 4.1.2-aoyama -c /etc/mkinitcpio.conf -g /boot/initramfs-4.1.2-aoyama.img

-kはカーネルバージョンの指定。現行稼働中のカーネルの場合は省略可能のようだ。

参考

●QEMUで仮想PCIデバイスとデバイスドライバを作ってみる
(デバイスドライバの情報がいっぱい)
http://qiita.com/rafilia/items/7e30f1119614964ce4c9

●実践でも役立つLPICドリル(1):表示結果から読み解け! ハードウェア構成の調査 (3/3) - @IT
http://www.atmarkit.co.jp/ait/articles/0804/10/news136_3.html

27
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
31

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?