|
UNIX 系 OS では静的な情報をファイル形式で取り扱いますが、そのような通常のファイルの他にデバイスファイルと呼ばれる特殊なファイルも存在します。これはデバイスドライバのインターフェースなのですが、「周辺機器を普通のファイルに見せかける」ための仮想的なオブジェクトです。言い換えると、デバイスファイルを普通のファイルと同様に読み書きすると、Linux が対応する周辺機器との入出力に変換してくれるという仕組みになっています。
なかなか説明では分かりづらいかもしれませんので、標準出力のリダイレクトを例にデバイスファイルの実例を見てみましょう。…まず、標準出力を普通のファイルにリダイレクトすると、出力内容がファイルに書き出されることは御存知の通りです。
|
# echo "hoge" > output
| # cat output
| hoge
|
|
|
ここで、普通のファイルの代わりにコンソールを指すデバイスファイルへリダイレクトすると、出力内容がそのコンソールへ「書き出され」ます。つまり、コンソールに文字が表示されます。
|
# echo "hoge" > /dev/tty6
|
|
|
| |
|
|
/dev/tty6 は第 6 コンソールを指すデバイスファイルです。[Alt]+[F6]でコンソールを切り替えてみると、確かに hoge と出力されています。同様にして、プリンタにリダイレクトすれば文字が印刷され、シリアルポートにリダイレクトすればモデムを通して送信されます。
デバイスファイルは文字を扱う周辺機器に限ったものではありません。例えば音源も /dev/dsp というデバイスファイルで、読み込みは録音・書き込みは再生になります。
|
$ cat /dev/dsp > my_voice (録音)
| $ cat my_voice > /dev/dsp (再生)
|
|
|
| |

X から切り替える場合は[Ctrl]+[Alt]+[F6]です。
|
|
デバイスファイルは /dev ディレクトリ以下に、周辺機器ごとに慣習的に決められた名前で配置されています。一般的な周辺機器のデバイスファイル名は次の通りです。
| |

仮想ターミナル=Pseudo tele TYpe

ALSAの音源デバイスファイルは /dev/snd 以下となります。
|
|
TTY とは、かつて主に大型コンピュータが活躍していた時代にコンピュータに接続していたテレタイプ端末 (Teletype Terminal) に由来する名前です。現在ではディスプレイとキーボードの組がこれに相当し、TTY の読み取りはキーボードからの入力、書き込みはディスプレイへの出力になります。通常、パソコンに接続されているキーボードとディスプレイは 1 つだけですが、Linux では複数の TTY を[Alt]+[F1]〜[F7]などで切り替えて使うことができるようになっています。これに対し、仮想ターミナルは TTY と同等の機能を提供する仮想的な周辺機器で、kterm、 jfbterm、 kon などのコンソール「エミュレータ」が利用します。なお、現在自分が使っているターミナルのデバイスファイル名は tty コマンドで確認できます。
NULL デバイスはブラックホールの様な特殊なデバイスファイルで、読み込んでも内容はなく、書き込んでも何処にも出力されません。そのため、余計なメッセージの出力を /dev/null にリダイレクトして処分するために使うことがよくあります。例えば、次の例では標準出力を /dev/null にリダイレクトしていますので、標準エラー出力だけがターミナルに表示されます。
通常デバイスファイルはインストール時または udev によって動的に作成されますが、手動でデバイスファイルを作成することもできます。手動でデバイスファイルを作成する場合は mknod コマンドを使用します。
|
# mknod <ファイル> {b|c} <メジャー番号> <マイナー番号>
|
|
|
b はブロック型、c はキャラクタ型を表します。例えば、/dev/agpgart というキャラクタ型・メジャー番号 10・マイナー番号 175 のデバイスファイルを作るときは次のようにします。
|
# mknod /dev/agpgart c 10 175
|
|
|
ブロック型・キャラクタ型のタイプやメジャー・マイナーの番号は、周辺機器ごとに値が決まっています。また、たいていの場合はデバイスファイルの名前も慣用名として決まっています。これらの情報は Linux ソースの添付文書 Documentation/devices.txt や、デバイスファイルを使うソフトウェアの添付文書に書かれているので、そちらを参照してください。
| |

第 7 コンソールは通常 X が使います。また、X 上から他の TTY に切り替えるときは Ctrl + Alt + F1 〜 F7 を使います。
|
|