Infra Engineer

ランレベル/ブートターゲット変更、システムの再起動とシャットダウン~ USBデバイス ~
2020.11.30
Lv1

ランレベル/ブートターゲット変更、システムの再起動とシャットダウン~ USBデバイス ~

今回の内容

今回は、USBデバイスについて解説します。

覚えておきたいキーワード

・USB
・USBのコントローラ
・クラス・ドライバ
・ホットプラグ

USBとは

USBとは
USBとは「Universal Serial Bus(ユニバーサルシリアルバス)」の略で、
キーボードやマウス、USBメモリをはじめ広く利用されています。
USBは、PCとキーボードやマウス、モデムなどの周辺機器とパソコンを
結ぶ規格の1つです。
USBの名称である「ユニバーサルシリアルバス」とは、以下を意味します。
① ユニバーサル(どんな周辺機器でも利用できること)
② シリアル(データを直列に送信する方式)
③ シリアルバス(複数のデバイスを同時に接続できるバス)
USBデバイスには規格が、USB1.1と USB2.0が存在します。

USBの規格

以前では、LinuxでUSBを利用するのは、技術的にも敷居が高いことに加え、
USBで接続しようとしてもうまく動作しないということがありましたが、
今日においてLinuxでは、USB1.1の正式対応がカーネル2.4以降になって組み込まれたことで、
LinuxでUSB機器を利用するための環境が整っています。
また、カーネル2.6になると、USB2.0が正式対応となっています。
主な特徴として以下が挙げられます。
・最大127のUSBデバイスを接続可能
・プラグアンドプレイにより、OSがドライバを自動認識
・ホットプラグ(またはホットスワップ)により、起動中にUSBデバイスの抜き差しが可能
・バスパワー(またはバスパワード)により、USBポートからの電源供給が可能

USB1.1は、最大転送速度が12Mbpsと低速となっているため、後継規格であるUSB2.0 が現在は普及しています。USB2.0の最大転送速度は、480Mbpsとなっています。

USBのコントローラ

USBコントローラとは、USBを制御するためのチップのことです。
USBにはUSBを動作するために必要なUSBコントローラがあり、
それに連なる形で各USBデバイスが接続されています。
USBコントローラには「UHCI」と「OHCI」と「EHCI」です。
USB1.1のUSBコントローラには、Intel社とVIA社主導の
「UHCI(Universal Host Controller Interface)」方式と
SiS社主導の「OHCI(Open Host Controller Interface)」方式の2種類があります。
また、USB2.0のUSBコントローラには、「UHCI」と「OHCI」の互換性の問題を解消する べく
「EHCI(Enhanced Host Controller Interface)」方式に統一しました。
※互換性がないと、デバイスとUSBコントローラの製造元を合わせる必要が出てきてしまいます。
以下はUSBコントローラとUSBモジュールの対応表となります。

USBコントローラ USBバージョン USBモジュール(カーネル2.6)
UHCI 1.1 uhci_hcd
OHCI 1.1 ohci_hcd
EHCI 2.0 ehci_hcd

クラス・ドライバ

USBといったハードウェアを利用するには、デバイスドライバが必要です。
「クラス・ドライバ」はデバイスクラスごとに利用される汎用ドライバを指し、
1つのデバイスクラスに属するUSBデバイスは、同じクラス・ドライバを介して制御されます。
なお、クラスID255は、汎用ドライバであるクラス・ドライバでは対応できないUSBデバイスのデバイスクラスを表します。
この場合は、ドライバとしてクラス・ドライバではなく、
ベンダーが提供している「ベンダー・デバイス・ドライバ」を利用しますので、自身でインストールが必要です。
以下は、主なデバイスクラスです。

クラスID デバイスクラス 対応するUSBデバイスの機能
0 指定なし 使われていない
1 Audio Devices 音源モジュールやスピーカ、マイク
2 Communication Devices モデムやNIC
7 Printer Devices プリンタ
8 Mass Strage Devices ハードディスクやCD-ROMドライブ
9 HUB USB HUB
255 Vender Specific ベンダー専用ドライバ(ベンダー・デバイス・ドラ
イバ)を要するUSBデバイス

ホットプラグ

ホットプラグ USB規格では、PCに電源を入れたまま周辺機器やパーツの取り付け・取り外しができる ホットプラグに対応しています。
以前はデバイスを接続したときに「/sbin/hotplug」を実行して認識していました。
/sbin/hotplugとは、デバイスドライバとのインターフェースであるデバイスファイルを 「/dev」ディレクトリの中にあらかじめ静的に作成して、デバイスを管理するための方式で す。
現在では、 「/sbin/hotplug」を使用せず動的にデバイスを管理するudevを使用した対応が一般的と なっています。
udev(userspace device management)とは、カーネルがPCへの接続を検出したデ バイスに対して,動的に「デバイス・ファイル」を作成して割り当てるための管理方式です。

USB接続デバイスの確認には、lsusbコマンドを使用します。

書式:lsusb [オプション]
例)USBデバイス情報を表示。

[root@localhost ~]# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 002 Device 004: ID 0e0f:0008 VMware, Inc.
[root@localhost ~]#

まとめ

USBの規格やデバイスクラスの対応表はしっかりと覚えておきましょう!
それでは今回はこのあたりで。

Linux資格 「LPIC Lv1」徹底解説 連載目次リンク

Linux資格 「LPIC Lv1」徹底解説 連載目次

連載執筆講師が講座開講中!ITスクール SAK

ITスクールSAK | LPIC Lv1合格保証コース 講座紹介ページ