2. デバイスの種類

Linux の核となる原則は、「すべてはファイルである」ということです。この考え方は、ハードウェアコンポーネントにも及び、これらはファイルシステム内の特殊なファイルとして表現されます。これらのLinux デバイスとそれに対応するファイルを理解することは、システム管理にとって極めて重要です。まず、すべてのデバイスファイルの従来の場所である/devディレクトリを探ることから始めましょう。

/dev における Linux デバイスの探索

/devディレクトリ内のファイルを一覧表示することで、システムがさまざまなLinux デバイスをどのように表現しているかを確認できます。

$ ls -l /dev
brw-rw----   1 root disk      8,   0 Dec 20 20:13 sda
crw-rw-rw-   1 root root      1,   3 Dec 20 20:13 null
srw-rw-rw-   1 root root           0 Dec 20 20:13 log
prw-r--r--   1 root root           0 Dec 20 20:13 fdata

左から右への列の内訳は次のとおりです。

  • パーミッション
  • 所有者
  • グループ
  • メジャーデバイス番号
  • マイナーデバイス番号
  • タイムスタンプ
  • デバイス名

Linux デバイスタイプの識別

ls -l出力のパーミッション文字列の最初の文字は、ファイルタイプを示します。デバイスファイルの場合、次のいずれかが表示され、特定のLinux デバイスタイプの識別を助けます。

  • c - キャラクタ(文字)
  • b - ブロック
  • p - パイプ
  • s - ソケット

キャラクタデバイス

これらのデバイスは、データを一度に 1 文字ずつ転送します。物理的に接続されたハードウェアではなく、重要な OS 機能を提供する多くの擬似デバイスは、キャラクタデバイスとして表現されます。典型的な例は/dev/nullです。

ブロックデバイス

これらのデバイスは、大容量の固定サイズブロックでデータを転送します。ハードドライブ(/dev/sda)、SSD、その他の大容量ストレージコンポーネントなどのストレージハードウェアは、ブロックベースのデータアクセスに最適化されているため、ブロックデバイスとして表現されることがよくあります。

パイプデバイス

名前付きパイプ、または FIFO(先入れ先出し)は、プロセス間通信を可能にします。これらはキャラクタデバイスのように機能しますが、出力を物理デバイスではなく別のプロセスに送ります。

ソケットデバイス

ソケットデバイスもプロセス間の通信を促進します。パイプとは異なり、より多用途であり、ネットワークを介した通信も含め、複数のプロセス間の通信をサポートできます。

デバイス番号の理解

Linux デバイスは、メジャーデバイス番号マイナーデバイス番号という 2 つの番号によって一意に識別されます。これらは、カンマで区切られてlsの出力に表示されます。番号が8, 0のデバイスの場合:

メジャー番号(8)は、そのデバイスを担当するドライバを識別します。この場合、8 は通常 SCSI ディスクドライブに使用されます。マイナー番号(0)は、ドライバに対して、それがデバイスのどの特定インスタンスであるかを伝えます。ここでは、0 が最初のドライブ(a)を表します。

ログインして学習進捗を保存

サインイン

演習

Linux デバイスについて学んだことを適用するために、次のハンズオンラボをお勧めします。これらの演習は、実際のシナリオでのデバイスの操作と管理に対する自信を構築するのに役立ちます。

  1. Linux パーティションとファイルシステムの管理 - Linux における基本的なブロックデバイスであるディスクパーティションとファイルシステムの作成と管理を練習します。
  2. Linux におけるハードウェアデバイスの探索 - さまざまなハードウェアデバイスを識別および検査し、それらが/devディレクトリでどのように表現されているかを理解する方法を学びます。
  3. Linux でのスワップファイルの作成とアクティブ化 - 仮想メモリデバイスとして機能するスワップファイルの作成とアクティブ化に関する実践的な経験を積みます。

クイズ

`ls -l`コマンドでキャラクタデバイスの記号は何ですか?(回答として、小文字の英字 1 文字のみを提供してください)