新Linux入門|Linuxシステムでのデバイス認識と/devファイルの関係

 Linuxを使っていると /dev/sda や /dev/null など、ちょっと不思議なファイルを目にすることがありますよね。
 実はこれらは「デバイスファイル」と呼ばれ、Linuxがハードウェアを認識し、扱うための重要な仕組みなんです💡

この記事では、デバイス認識の流れ/devディレクトリの役割をやさしく解説していきます。
AlmaLinux 9.6 を使って実際のコマンド出力例も紹介します🧩

💽 デバイスファイルとは?

Linuxでは、ハードウェアはすべて「ファイル」として扱われます📁
これは、UNIXの哲学「すべてはファイルである」に基づいています。

つまり、キーボード・マウス・HDD・USBメモリなどのハードウェアも
デバイスファイル(特殊ファイル)として /dev ディレクトリに存在します。

項目内容
場所/dev ディレクトリ内
役割ハードウェアとカーネルの橋渡し
作成方法システム起動時にカーネルや udev によって自動生成
アクセス方法通常のファイル操作(読み書きなど)と同様に扱える。

📘 たとえば、ディスクへの書き込みは実際には /dev/sda というデバイスファイルを通じて行われています。

デバイス

📂 /dev ディレクトリを覗いてみよう

[root@AlmaLinux ~]# ls /dev
almalinux_vbox   mcelog    tty14  tty44    usbmon0
autofs           mem       tty15  tty45    usbmon1
block            mqueue    tty16  tty46    usbmon2

👀 /dev には非常に多くのファイルがあり、それぞれが異なるデバイスを表しています。
これらは、Linuxカーネルがハードウェアを検知すると自動的に作成される仕組みです。

主なデバイスファイルを表にまとめてみましょう👇

デバイスファイル説明
/dev/sda1番目のSCSIディスク(SATA含む)
/dev/sdb2番目のSCSIディスク(USBドライブなど)
/dev/sr01番目のCD/DVD/BDドライブ
/dev/nvme0n1NVMe SSDデバイス
/dev/ttyS0シリアルポート
/dev/nullすべての出力を破棄する特殊デバイス
/dev/random真の乱数を生成するデバイス
/dev/urandom疑似乱数を生成するデバイス

🧠 /dev/null は「何も出力しないごみ箱」、
/dev/random は「乱数を生成するハードウェア的な仕組み」として便利に使われます。

⚙️ Linuxがデバイスを認識する仕組み

Linuxでは、システムが起動するときにカーネルがハードウェアをスキャンして認識します。
認識したデバイスは「デバイスドライバ」によって制御され、
/dev ファイルとしてユーザー空間(アプリケーション)からアクセスできるようになります

簡単な流れを図で表すと、こうなります👇

[ハードウェア] → [カーネル] → [デバイスドライバ] → [/dev のデバイスファイル] → [アプリ]

📘 つまり、アプリケーションがディスクにアクセスしているように見えても、
実際は /dev/sda を通じてデバイスドライバ経由でカーネルに命令を出しているんです💡

🧱 デバイスの種類:キャラクタデバイスとブロックデバイス

Linuxのデバイスファイルは、大きく2種類に分かれます👇

デバイスの種類特徴代表例
キャラクタデバイス(Character Device)1バイトずつデータを処理。リアルタイム性が高い。キーボード、マウス、シリアル通信ポート
ブロックデバイス(Block Device)データをブロック単位でまとめて処理。ハードディスク、SSD、USBメモリ

これらの一覧は /proc/devices で確認できます👇

t@AlmaLinux ~]# 
[root@AlmaLinux ~]# cat /proc/devices
Character devices:
  1 mem
  4 /dev/vc/0
  4 tty
  4 ttyS
(省略)
261 accel

Block devices:
  8 sd
  9 md
(省略)
254 mdp
259 blkext

💡 出力の上半分がキャラクタデバイス、下半分がブロックデバイスのリストです。

🧰 デバイス関連コマンドのまとめ

Linuxでは、デバイスの状態や構成を確認するために便利なコマンドがいくつもあります🔍

コマンド説明主なオプション
lsblkディスクとパーティション構成を一覧表示-f:ファイルシステム情報付きで表示
lspciPCIバスに接続されているデバイス一覧-v:詳細表示
lsusbUSB機器の一覧を表示-t:ツリー形式で表示
cat /proc/devices認識済みのデバイス種別を確認(なし)
dmesgカーネルのメッセージログを表示(デバイス検出時の情報など)

💡 実行例:USBデバイスの確認

[root@AlmaLinux ~]# lsusb
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

📘 USBメモリなどを接続すると、自動的にカーネルが認識して /dev/sdb のようなデバイスファイルが生成されます。

🌟 まとめ

Linuxでは、ハードウェアはすべて /dev の中のファイルとして表現されています。
 カーネルがハードウェアを検知し、ドライバが制御を行い、ユーザーは /dev を通じてそれにアクセスします。

💡つまり、/dev は「ハードウェアとの窓口」なんです!
 この仕組みを理解すれば、デバイストラブルの原因究明やストレージの設定もずっとスムーズになります😊