カテゴリ: Linux 更新日: 2026/08/14

Linuxのデバイスファイルとは?デバイスを扱う特別なファイルを初心者向けに解説

Linuxのデバイスファイルとは?デバイスを扱う特別なファイル
Linuxのデバイスファイルとは?デバイスを扱う特別なファイル

先生と生徒の会話形式で理解しよう

生徒

「Linuxのデバイスファイルって、普通のテキストファイルと何が違うんですか?」

先生

「デバイスファイルは、HDDやSSD、端末などの機器をLinuxからファイルのように扱うための特別な入口です。」

生徒

「機械なのにファイルとして見えるんですか?」

先生

「はい。Linuxではデバイスもファイルのように扱う考え方があり、多くのデバイスファイルは/devディレクトリに用意されます。基本から順番に見ていきましょう。」

Linuxを初めて学ぶ人や、 OS・プロセス・メモリ管理・仮想マシン・コンテナの仕組みを図解で理解したい人におすすめの定番書籍です。

試して理解 Linuxのしくみを見る

※ Amazonアソシエイト広告リンク

1. Linuxのデバイスファイルとは?

1. Linuxのデバイスファイルとは?
1. Linuxのデバイスファイルとは?

Linuxの読み方はLinux(リナックス)です。デバイスファイルは英語でdevice file(デバイスファイル)といい、コンピュータに接続された装置やカーネルが提供する機能を、ファイルのような形で扱うための特別なファイルです。デバイスの読み方はdevice(デバイス)で、機器や装置という意味があります。

普通のテキストファイルには文章などのデータが保存されていますが、デバイスファイルは装置そのもののデータを保存しているわけではありません。プログラムがデバイスファイルを読み書きすると、その操作がLinuxカーネルやデバイスドライバへ伝わり、対応する装置や機能との入出力が行われます。

カーネルの読み方はkernel(カーネル)です。Linuxの中心部分で、CPU、メモリ、ストレージ、周辺機器などを管理します。デバイスドライバの読み方はdevice driver(デバイスドライバ)で、カーネルが個々の機器を操作するための仕組みです。

初心者の方は、デバイスファイルを「機械へ命令を届けるための窓口」と考えるとわかりやすいでしょう。プログラム側は機器ごとの細かな操作方法を直接意識せず、ファイルを開く、読む、書くといったLinuxらしい操作で装置へアクセスできます。

Linuxでは「いろいろなものをファイルとして扱う」という考え方が重要です。デバイスファイルを理解すると、/dev、HDD、SSD、端末、ブロックデバイス、キャラクタデバイスなどの仕組みも理解しやすくなります。

2. デバイスファイルが保存されるdevディレクトリ

2. デバイスファイルが保存されるdevディレクトリ
2. デバイスファイルが保存されるdevディレクトリ

Linuxのデバイスファイルは、主に/devディレクトリの中にあります。ディレクトリの読み方はdirectory(ディレクトリ)です。/devのdevはdevice(デバイス)に由来し、Linuxが扱うさまざまなデバイスへの入口が並ぶ場所として使われます。

たとえばストレージに関係するデバイスファイル、端末を表すデバイスファイル、データを捨てるための特殊なデバイスファイルなどがあります。ただし、すべてが実際の物理装置を表しているわけではありません。Linuxカーネルが提供する便利な仮想的な機能もデバイスファイルとして見えることがあります。

/devの中を確認すると、多数の項目が表示されます。初心者がすべての名前を暗記する必要はありません。まずは/dev/null/dev/zero/dev/tty、そしてストレージに関係するデバイス名があることを覚えておくとよいでしょう。


ls -l /dev/null /dev/zero /dev/tty
crw-rw-rw- 1 root root 1, 3 Aug 10 08:00 /dev/null
crw-rw-rw- 1 root root 1, 5 Aug 10 08:00 /dev/zero
crw-rw-rw- 1 root tty  5, 0 Aug 10 08:00 /dev/tty

表示の先頭が通常ファイルとは異なっていることに注目してください。この違いを見ることで、そのファイルがどの種類のデバイスファイルなのか判断できます。日時や所有者などの表示内容はLinux環境によって異なります。

3. ブロックデバイスとキャラクタデバイスの違い

3. ブロックデバイスとキャラクタデバイスの違い
3. ブロックデバイスとキャラクタデバイスの違い

Linuxのデバイスファイルには、代表的な種類としてブロックデバイスとキャラクタデバイスがあります。ブロックデバイスの読み方はblock device(ブロックデバイス)です。一定量のデータをブロック単位で扱う装置を表し、HDDやSSDなどのストレージが代表例です。

キャラクタデバイスの読み方はcharacter device(キャラクタデバイス)です。データを連続した流れとして扱う装置や機能に使われます。端末や/dev/nullなどが代表的な例です。

ls -lの表示では、ブロックデバイスは先頭にb、キャラクタデバイスは先頭にcが表示されます。通常のファイルでは先頭がハイフンになるため、最初の一文字を見るだけでもファイルの種類を判断する手掛かりになります。

ブロックデバイスだから必ず物理的なHDDというわけではありません。仮想ディスクや論理的に作られたストレージもブロックデバイスとして扱われることがあります。Linuxでは物理装置と仮想装置の両方を共通した仕組みで扱える点が特徴です。

4. lsblkでストレージのブロックデバイスを確認する

4. lsblkでストレージのブロックデバイスを確認する
4. lsblkでストレージのブロックデバイスを確認する

HDD、SSD、パーティションなどのブロックデバイスを確認するときは、lsblkコマンドが便利です。lsblkの読み方はlsblk(エルエスブロック)です。現在のLinuxが認識しているブロックデバイスを階層的に表示できます。


lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda      8:0    0  120G  0 disk
sda1     8:1    0    1G  0 part /boot
sda2     8:2    0  119G  0 part /

この例ではsdaがストレージ本体を表し、その中にsda1sda2というパーティションがあります。実際の環境では、NVMe SSDならnvme0n1のような名前になることもあります。デバイス名は環境によって変わるため、決めつけずにlsblkで確認することが大切です。

パーティションの読み方はpartition(パーティション)です。一台のストレージを複数の領域に分けて利用する仕組みで、Linuxではそれぞれが個別のブロックデバイスとして扱われます。ファイルシステムを作成してマウントすると、通常のディレクトリからデータを保存できるようになります。

5. メジャー番号とマイナー番号とは?

5. メジャー番号とマイナー番号とは?
5. メジャー番号とマイナー番号とは?

デバイスファイルをls -lで見ると、通常のファイルサイズが表示される位置に二つの数字が見えることがあります。これがメジャー番号とマイナー番号です。メジャー番号の読み方はmajor number(メジャーナンバー)、マイナー番号の読み方はminor number(マイナーナンバー)です。

メジャー番号は、どの種類のデバイスドライバや処理系へ操作を渡すかを識別するために使われます。マイナー番号は、同じ種類の中で個々のデバイスなどを区別するために使われます。初心者の方は、メジャー番号を大きな分類、マイナー番号をその分類の中の個別番号と考えると理解しやすいでしょう。


stat -c '%F %t:%T %n' /dev/null
character special file 1:3 /dev/null

この例では/dev/nullがキャラクタ型の特殊ファイルであり、デバイスを識別する番号が表示されています。statの読み方はstat(スタット)です。ファイルの種類や属性などを詳しく確認するときに利用できます。

普段Linuxを利用するだけなら、メジャー番号やマイナー番号を毎回意識する必要はありません。ただし、デバイスファイルの仕組みやドライバについて学習するときには重要な基礎知識です。

6. dev nullとdev zeroはどんなデバイスファイル?

6. dev nullとdev zeroはどんなデバイスファイル?
6. dev nullとdev zeroはどんなデバイスファイル?

Linux初心者がデバイスファイルを学ぶときによく登場するのが/dev/nullです。nullの読み方はnull(ヌル)です。/dev/nullへ書き込んだデータは、そのまま破棄されます。そのため、不要なコマンド出力を捨てたいときなどに利用されます。


echo "test data" > /dev/null
echo $?
0

この例では文字列を/dev/nullへ書き込んでいますが、通常のファイルのように内容が保存されるわけではありません。終了状態が正常なら、データは受け取られたあとに破棄されます。シェルスクリプトなどでは、画面に表示する必要がない出力を捨てる用途でも利用されます。

/dev/zeroも特殊なデバイスファイルです。zeroの読み方はzero(ゼロ)です。読み込むとゼロで埋められたデータを返します。テスト用データを用意する場面などで使われることがあります。

これらは実際のHDDやキーボードを表す物理デバイスではありません。Linuxカーネルが提供する特別な機能を、通常のファイルと似た操作方法で利用できるようにした例です。デバイスファイルが単なる機器一覧ではないことがよくわかります。

7. dev ttyと端末の関係

7. dev ttyと端末の関係
7. dev ttyと端末の関係

Linuxでターミナルを利用していると、/dev/tty/dev/ptsという名前を見ることがあります。ttyの読み方はTTY(ティーティーワイ)です。歴史的にはteletypewriter(テレタイプライター)に由来する名称で、現在のLinuxでは端末に関係する仕組みで使われています。

端末の読み方は端末(タンマツ)です。ターミナルからコマンドを入力すると、キーボード入力や画面への文字出力などが端末の仕組みを通して処理されます。Linuxでは、その端末もデバイスファイルとして表されます。

現在のターミナルがどの端末デバイスを利用しているかは、ttyコマンドで確認できます。


tty
/dev/pts/0

この例では、現在のシェルが/dev/pts/0という疑似端末を利用しています。疑似端末の読み方は疑似端末(ギジタンマツ)です。実際の表示番号は環境や開いているターミナルによって異なります。

昔のLinuxやUNIXでは物理的な端末装置との関係が強く意識されていましたが、現在ではデスクトップのターミナルアプリやSSH接続などでも疑似端末が使われます。こうした歴史的な名前が現在のLinuxにも残っている点は、デバイスファイルを学ぶときの興味深い特徴です。

8. デバイスファイルはどのように作られる?

8. デバイスファイルはどのように作られる?
8. デバイスファイルはどのように作られる?

現在の一般的なLinuxでは、接続された機器をカーネルが認識すると、その情報をもとにデバイスファイルが自動的に用意される仕組みが使われています。そこで重要になるのがudevです。udevの読み方はudev(ユーデブ)です。

udevは、Linuxでデバイスの追加や削除に応じて/dev内のデバイスノードを管理する仕組みに関係します。デバイスノードの読み方はdevice node(デバイスノード)です。USB機器やストレージなどが認識されたときに、必要なデバイスファイルが適切な名前で利用できるようにします。

昔のUNIX系システムでは、管理者がデバイスファイルを手動で作る場面もありました。Linuxにもmknodというコマンドがありますが、現在の一般的な利用では、通常のユーザーがデバイスファイルを手作業で作る機会は多くありません。

初心者は「機器を接続すると、Linuxカーネルが認識し、必要なデバイスファイルが/devに現れる」という流れを理解しておけば十分です。さらに学習を進めると、カーネル、デバイスドライバ、sysfs、udevなどが連携していることがわかります。

9. デバイスファイルを扱うときの注意点

9. デバイスファイルを扱うときの注意点
9. デバイスファイルを扱うときの注意点

デバイスファイルは普通のファイルと似た方法で読み書きできますが、実際の装置へ直接つながる入口になる場合があります。そのため、不用意な書き込みには注意が必要です。特にHDDやSSDを表すブロックデバイスへ直接データを書き込むと、保存されているファイルシステムやデータを壊す可能性があります。

たとえばインターネットの記事にあるコマンドを意味を理解せずにコピーし、ストレージのデバイスファイルへ書き込むことは避けましょう。Linuxでは強力な操作をコマンドから実行できるため、対象のデバイス名を確認する習慣が重要です。

また、デバイスファイルにはアクセス権限が設定されています。一般ユーザーが自由に操作できるものもあれば、管理者や特定のグループだけが利用できるものもあります。アクセス権限の読み方はアクセス権限(アクセスケンゲン)です。Linuxでは安全性を保つため、利用できるユーザーを制限しています。

Linux初心者がデバイスファイルを学ぶ場合は、最初にls -l /dev/nulllsblkttyなどの読み取り中心のコマンドから試すと安全です。実際のストレージへ直接書き込む操作は、パーティションやファイルシステムの仕組みを理解してから行うようにしましょう。

Linuxのデバイスファイルは、HDDやSSD、端末、カーネルが提供する特殊な機能などをファイルのように扱うための入口です。/dev、ブロックデバイス、キャラクタデバイス、メジャー番号、マイナー番号、/dev/null/dev/ttyなどを一緒に覚えると、Linuxのファイルシステムとデバイス管理の仕組みを理解しやすくなります。

関連記事:
カテゴリの一覧へ
新着記事
New1
基本情報技術者試験
命令ミックスを完全ガイド!CPUの性能を理解するための初心者向けやさしい解説
更新記事
New2
基本情報技術者試験
クロックサイクル時間をわかりやすく解説!CPUの動きを初心者向けに丁寧ガイド
更新記事
New3
基本情報技術者試験
MIPS(Million Instruction Per Second)を完全ガイド!初心者でもわかるCPU性能の基本
更新記事
New4
基本情報技術者試験
CPI(Clock Cycles Per Instruction)を初心者向けに完全ガイド!CPUの仕組みをやさしく解説
更新記事
人気記事
No.1
Java&Spring記事人気No1
基本情報技術者試験
イーサネット(Ethernet)とは?初心者にもわかるLANの基本技術をやさしく解説
No.2
Java&Spring記事人気No2
基本情報技術者試験
DHCP
376
DHCPとは?初心者でもわかるIPアドレス自動割り当ての仕組み
No.3
Java&Spring記事人気No3
基本情報技術者試験
CPU
349
CPUとは何かを完全解説!初心者でもわかるコンピュータの頭脳の仕組み
No.4
Java&Spring記事人気No4
基本情報技術者試験
NIC
309
NICとは何か?初心者にもわかるネットワークインターフェースカードの基本
No.5
Java&Spring記事人気No5
基本情報技術者試験
16進数とは?初心者にもわかる意味・読み方・変換方法をやさしく解説!
No.6
Java&Spring記事人気No6
基本情報技術者試験
NTP
207
NTPとは?初心者でもわかる時刻同期の仕組みとネットワーク時刻プロトコルの基本
No.7
Java&Spring記事人気No7
基本情報技術者試験
IPv4
180
IPv4とは?初心者でもわかるIPアドレスの基本と通信のルール
No.8
Java&Spring記事人気No8
基本情報技術者試験
SMTP
177
SMTPとは?初心者でもわかるメール送信の仕組みとプロトコルをやさしく解説!