4.3 ハードウェアの管理
Linux Essentials Online Text | 2021/07/14

Linuxは、ハードウェアのアクセスを抽象化するデバイスファイルを持っています。Linuxシステムによって認識しているすべてのハードウェアに対してデバイスファイルが作成されており、システムはこのファイルを通してハードウェアにアクセスします。

接続されたハードウェアが認識すると、udevという仕組みによって自動的にデバイスファイルが作成され、/devディレクトリ配下に格納されます。同時に、/procディレクトリにもファイルを作成します。

/dev ディレクトリ

/devはデバイスファイルが保存されているディレクトリです。基本的に全てのハードウェアがこのディレクトリ配下で対応したファイルとして認識しています。/dev配下にあるファイルをデバイスファイルと呼びます。

これは「デバイスもファイルとして扱う」というUNIXから受け継いだ設計思想です。プログラムを組んでデバイスを使用する場合も、普通のファイルを扱うのと同じ様に、デバイスファイルを「Open」して、「Read」「Write」と順番に処理をし、最後に「Close」する、という手順でアクセスするようにするためです。

HDD(SDD)も例に漏れず、/dev配下にデバイスファイルが作成されます。

例えば、コンピュータに接続された1つ目のHDD(SSD)は「/dev/sda」 として認識します。
このように、HDDは「/dev/hdX」もしくは「/dev/sdX」と表記されます。「X」の部分にはアルファベットが入ります。これは何番目に接続されたHDDかを示します。1台目であれば「a」、2台目は「b」、という具合です。

hdかsdかは、HDDの接続方式で決まっていて、IDE接続であればhd、SATAまたはSCSI接続であればsdとなります。ただ、IDE接続やSCSI接続は古い技術であり、ほとんど使用されていません。そのため、HDDやSSDは、基本的に/dev/sdXで認識すると覚えて差し支えないでしょう。

なお、これらのディスクにパーティションが存在する場合は、この後ろに更に数字が付与されます。つまり、/dev/sda1 という表記は、このコンピュータにSATA接続されたHDDの1番目のパーティション、という意味になります。

/dev/sdaに4つの拡張領域を設定する場合は、/dev/sda1、/dev/sda2、/dev/sda3、/dev/sda4が作成されることになります。4つ目を拡張領域として、その中に論理領域を2つ作成した場合は、/dev/sda4が拡張領域となり、論理領域の1つ目が、/dev/sda5、2つ目が/dev/sda6、というように表記されます。

/proc ディレクトリ

Linuxカーネルが認識しているデバイスに関する情報の一部は/procディレクトリにも格納されています。/proc配下に格納されるファイルは、ファイルとしての実体がない仮想的なファイルですが、一部のファイルはテキストファイルとして中味を確認することが可能で、CPUやメモリ、PCIデバイスやUSBデバイスなどの情報は確認することができます。

以下のいくつかのデバイス情報はコマンドによって確認することが可能です。以下の表は主なディレクトリです。

デバイスディレクトリパス説明
CPU/proc/cpuinfo物理CPU、コア、論理CPUの種類、数を確認
メモリ/proc/meminfoメモリの詳細情報を確認
PCIバス/proc/bus/pci/devicesシステム上のPCIデバイスの一覧を表示
USB/proc/bus/usb/devicesシステム上のUSBデバイスの一覧を表示
モジュール/proc/modulesカーネルにロードされているモジュールの一覧を表示
IRQ/proc/interruptsIRQ毎の割り込み回数を表示
I/Oポート/proc/ioportsI/Oポートアドレスの一覧を表示
DMA/proc/dmaDMAの割当一覧を表示
SCSI/proc/scsi/scsiシステム上のSCSIデバイスの一覧を表示
PAGE TOP