デバイスファイル
関連記事
Wikipedia より:
- Unix ライクなオペレーティングシステムにおいて、デバイスファイルまたはスペシャルファイルとは通常のファイルのようにファイルシステム上に配置されるデバイスドライバーのインターフェイスである。
Linux ではデバイスファイルは /dev
ディレクトリに存在します (Filesystem Hierarchy Standard)。
Arch Linux ではデバイスノードは udev によって管理されています。
目次
ブロックデバイス
ブロックデバイス はバッファを使ってハードウェアデバイスにアクセスすることで、任意のサイズと配置のブロックを読み書きすることができます。
ブロックデバイスの名前
デバイスの名前の最初の部分はブロックデバイスを操作するカーネルのドライバーサブシステムを示します。
SCSI
ハードディスクや SSD、フラッシュドライブなど SCSI コマンド (SCSI, SAS, UASP), ATA (PATA, SATA), USB マスストレージ接続のいずれかをサポートするストレージデバイスはカーネルの SCSI ドライバーサブシステムによって扱われます。同じ命名規則を使用します。
これらデバイスの名前は sd
から始まります。そして認識順に a
から始まる小文字の英字が後ろに続きます (sda
)。2番目に認識されたデバイスは b
が付きます (sdb
)。デバイス上のパーティションにはパーティションテーブルにおける番号が付きます。例: sda1
はパーティション 1
で、sda2
はパーティション 2
です。
まとめ:
/dev/sda
- デバイスa
、最初に認識されたデバイス。/dev/sda1
- デバイスa
のパーティション1
。/dev/sde
- デバイスe
、5番目に認識されたデバイス。/dev/sde7
- デバイスe
のパーティション7
。
NVME
NVM Express (NVMe) で接続された SSD などのストレージデバイスの名前は nvme
から始まります。その後ろにデバイスコントローラごとに 0
から始まる数字が付きます。最初に認識された NVMe コントローラは nvme0
、2番目は nvme1
と続きます。そして "n" という文字とコントローラ上のデバイスを意味する 1
から始まる数字が続きます。nvme0n1
は最初に認識されたコントローラの最初に認識されたデバイス。nvme0n2
は最初に認識されたコントローラの2番目のデバイスです。各デバイスに存在するパーティションは "p" という文字とパーティションテーブルにおける番号で表されます。例えば nvme0n1p
は最初のコントローラの最初のデバイスの番号 1
のパーティションで、番号 2
のパーティションは nvme0n1p2
です。
まとめ:
/dev/nvme0n1
- コントローラ0
のデバイス1
。最初に認識されたコントローラの最初のデバイス。/dev/nvme0n1p1
- コントローラ0
のデバイス1
のパーティション1
。/dev/nvme2n5
- コントローラ2
のデバイス5
。3番目に認識されたコントローラの5番目のデバイス。/dev/nvme2n5p7
- コントローラ2
のデバイス5
のパーティション7
。
MMC
SD カード, MMC カード, eMMC ストレージデバイスはカーネルの mmc
ドライバーによって管理され、デバイスの名前は mmcblk
から始まります。そして後ろに 0
から始まる番号が付きます。例えば mmcblk0
は最初に認識されたデバイス、mmcblk1
は2番目に認識されたデバイスです。各デバイスに存在するパーティションは "p" という文字とパーティションテーブルにおける番号によって名前が付きます。パーティションテーブルの番号 1
のパーティションは mmcblk0p1
、番号 2
のパーティションは mmcblk0p2
となります。
まとめ:
/dev/mmcblk0
- デバイス0
、最初に認識されたデバイス。/dev/mmcblk0p1
- デバイス0
のパーティション1
。/dev/mmcblk4
- デバイス4
、5番目に認識されたデバイス。/dev/mmcblk4p7
- デバイス4
のパーティション7
。
SCSI 光学ディスクドライブ
SCSI ドライバーサブシステムによってサポートされているインターフェイスを使って接続されている光学ディスクドライブ (ODD) の名前は sr
から始まります。そしてその後ろに 0
から始まる番号が付きます。例えば sr0
は最初に認識されたデバイス、sr1
は2番目に認識されたデバイスとなります。
また、Udev によって /dev/cdrom
が /dev/sr0
のシンボリックリンクとなっています。ドライブがサポートしているディスクの種類や挿入されているメディアとは関係なく常に名前は cdrom
です。
まとめ:
/dev/sr0
- 光学ディスクドライブ0
、最初に認識された光学ディスクドライブ。/dev/sr4
- 光学ディスクドライブ4
、5番目に認識された光学ディスクドライブ。/dev/cdrom
-/dev/sr0
のシンボリックリンク。
ユーティリティ
lsblk
util-linux パッケージにはブロックデバイスを確認する lsblk(8) ユーティリティが含まれています。例:
$ lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 vfat C4DA-2C4D /boot ├─sda2 swap 5b1564b2-2e2c-452c-bcfa-d1f572ae99f2 [SWAP] └─sda3 ext4 56adc99b-a61e-46af-aab7-a6d07e504652 /
上記の例では、利用可能なデバイスはひとつだけ (sda
) で、デバイスには3つのパーティションが存在しています (sda1
から sda3
)。パーティションはそれぞれ異なるファイルシステムでフォーマットされています。
wipefs
wipefs は指定したデバイスのファイルシステム, RAID, パーティションテーブルのシグネチャ (マジック文字列) を確認・消去することができます。libblkid(3) から認識されないようになります。ファイルシステム自体は消去せず、デバイスの他のデータが消去されることもありません。
詳しくは wipefs(8) を見てください。
例えば、/dev/sdb
デバイスのシグネチャを全て消去してシグネチャのバックアップファイル ~/wipefs-sdb-offset.bak
を作成するには:
# wipefs --all --backup /dev/sdb
疑似デバイス
物理的なデバイスが存在しないデバイスノード。
- /dev/random (random(4) を参照)
- /dev/shm
- /dev/null, /dev/zero (null(4) を参照)
- /dev/full (full(4) を参照)
- /dev/ttyX (X は番号です)