2.1. ハードウェア設定と構成
2.1.1. BIOSとUEFI
BIOS
BIOS(Basic Input Output System)はキーボードなどのデバイスを制御する基本的なプログラムでマザーボードや拡張カードのフラッシュROMに書き込まれている。 これはパソコンの起動時に最初に実行されるプログラムで、コンピュータの基本的なハードウェアを制御する役割を担っている。
BIOSの役割は以下の通り。
- OSを起動するためのプログラムをディスクから読み込んで実行する
- デバイスの動作を設定
- 基本的な入出力の管理
UEFI
UEFI(Unified Extensible Firmware Interface)はBIOSの容量制限がなくなったり、GUIベースのセットアップ画面を利用できるなど拡張されたBIOSの後継規格。
UEFIはBIOSと異なり、C言語などのプログラミング言語を使用して開発された。 また、BIOSよりも高速で安定性が高く、セキュリティも強化されている。
UEFIには、BIOSに比べて多くの機能があり、起動ローダーやネットワークブート機能、セキュアブート機能などがある。
UEFIの特徴は以下の通り。
- 起動ドライブの容量制限(2TB)の撤廃
- GUIベースのセットアップ画面
UEFIとBIOSのセットアップ
OSがインストールされているコンピュータのBIOS/UEFIに入るにはコンピュータ起動後にBIOSに入るにはDeleteやF1、F2などを連打する必要がある。なお連打するキーはマザーボードのメーカによって異なる。
BIOS/UEFIでは以下項目を設定可能。
- 日付や時刻(ハードウェアクロック)
- ディスクドライブや各種デバイスのパラメータ
- キーボードの使用/不使用
- 電源管理
- ブートデバイスの優先順位
- デバイスへのIRQ(割り込み要求)の割り当て
- 各種デバイスの使用/不使用
2.1.2. デバイスの情報確認
デバイスファイル
Linuxではハードウェアのアクセスを抽象化したデバイスファイルにて行う。デバイスファイルは/dev配下にある。
なおこれらはudevという仕組みにより自動的に生成される。
/procディレクトリ
Linuxカーネルが認識しているデバイス情報は/proc配下に格納される。
| 主なファイル | 説明 | 
|---|---|
| /proc/cpuinfo | CPUの情報を格納したファイル | 
| /proc/interrupts | IPQなどの情報を格納したファイル | 
| /proc/ioports | デバイスの制御とデータの受け渡しを行うI/Oポートのアドレスを格納したファイル | 
| /proc/meminfo | メモリの情報を格納したファイル | 
| /proc/bus/usb/* | USBデバイスの情報を格納したファイル | 
| /proc/bus/pci/* | PCIデバイスの情報を格納したファイル | 
| /proc/cmdline | 起動時のカーネルオプションが格納したファイル | 
lspciコマンド
デバイスの情報を確認するためのコマンド。
lspci | オプション | 説明 | 
|---|---|
| -v | 詳細に表示 | 
| -vv | より詳細に表示 | 
2.1.3. USBデバイス
USBはPCを周辺機器と接続するための規格。 特徴は以下の通り。
- 最大127台のデバイスをUSB接続可能
- 同一コネクタ
- ホットプラグ
- プラグ&プレイ- H/W、F/W、ドライバ、OS、アプリケーション間が自動的に協調し機器の組み込みと設定を自動的に行う
 
- 電源供給
USBのバージョン
| バージョン | 最大転送速度 | 
|---|---|
| USB 1.0 | 12Mbps | 
| USB 1.1 | 12Mbps | 
| USB 2.0 | 480Mbps | 
| USB 3.0 | 5Gbps | 
| USB 3.1 | 10Gbps | 
| USB 4.0 | 40Gbps | 
デバイスドライバ
ハードウェアの利用にはデバイスドライバが必要となる。 ドライバはベンダーが用意した専用ドライバとLinuxシステムが提供するクラスドライバに分けられる。
USBデバイスを使用するにはデバイスドライバが必要。これはUSBデバイスがデバイスクラスに応じて異なる方法で通信するために使用される。また、クラスドライバはデバイスクラスに準拠する。
| デバイスクラス | サポートするUSBデバイスの例 | 
|---|---|
| HID: Human Interface Devices | kbd, mouse | 
| USB Mass Storage Device | USBメモリ、HDD、デジタルオーディオプレーヤー | 
| オーディオ | マイク、スピーカー、サウンドカード | 
| プリンタ | プリンタ | 
| ワイヤレスコントローラー | Wi-Fiアダプタ、Blutoothアダプタ | 
なお、デバイスクラスの使用に沿ったUSBデバイスはクラスドライバで対応するため、専用のデバイスドライバは不要となる。
lsusbコマンド
接続されたUSBデバイスの情報を表示するためのコマンド。
lsusb| オプション | 説明 | 
|---|---|
| -v | 詳細な情報を表示 | 
| -t | ツリー形式でUSBデバイスを表示 | 
| -s [bus]:[device] | 特定のバス番号とデバイス番号で指定されたUSBデバイスの情報を表示 | 
| -d [vendor]:[product] | 特定のベンダーIDとデバイスIDで指定されたUSBデバイスの情報を表示 | 
2.1.4. udev
udevはデバイスの管理とドライバの自動検出を行う仕組み。 udevはシステムに新しいデバイスが追加された場合、デバイスの属性情報を取得し、それに基づいて対応するデバイスドライバを自動的に読み込むことができる。
デバイスの情報は、D-Busと呼ばれるプロセス間通信(IPC)のための機構により、異なるアプリケーション間でデータやシグナルを送信したり、受信したりすることができる。
2.1.5. デバイスドライバのロード
lsmodコマンド
lsmodコマンドはロードされたカーネルモジュールの一覧を表示するためのコマンド。 カーネルモジュールは、カーネル内で動作するドライバーやファイルシステムなどの機能を提供している。
lsmodmodprobeコマンド
modprobeコマンドはカーネルモジュールを手動でロードするためのコマンド。modprobeコマンドを使用すると、特定のカーネルモジュールをロードしたり、モジュールの依存関係を自動的に解決したりすることができる。
modprobe <カーネルモジュール名>