私はファイル/dev/ptmx
は、疑似端末のマスターファイルを生成するために使用されます。しかし、Fedoraには別のptmx
ファイル(/dev/pts/ptmx
):
この2番目のファイルの目的は何ですか?
その理由は、コンピューティングの世界の多くのものと同様に、歴史と下位互換性です。
2.4。*カーネルに戻ると、Linuxにudev
(/dev
の現在の仮想ファイルシステムソリューション)が存在する前は、2つの競合するソリューションがありました。それは、デバイスを実際に使用する「従来のUnixの方法」です。ルートファイルシステム上のディレクトリ、およびdevfs
、/dev
の最初の仮想ファイルシステムソリューション。
問題は、devfs
の作成者がさまざまなデバイス用に完全に新しい命名スキームを構築したことであり、人々はそれについてかなり強く感じていました。新しいスキームに移行して古いスキームを廃止したい人もいれば、そうでない人もいました。移行の必要性を参照してください。古い静的デバイスを使用したディストリビューションもあれば、devfs
を選択したディストリビューションもあります。
その時点で、インストール時に作成された疑似TTYデバイスの数は固定されていました。 (ちなみに、カーネルのコンパイル中にCONFIG_LEGACY_PTYS
オプションが設定されている場合は、これは引き続き可能です。)
次に、Unix98スタイルの動的に割り当てられたPTYデバイスが導入されました。それらを静的な/dev
ディレクトリに実装するには、/dev/pts
の仮想ファイルシステムが必要であり、これはdevpts
ファイルシステムとして知られるようになりました。また、これを別個のファイルシステムとして持つことで、コードを複製することなく、動的なdevfs
の上にも適用できるようになったでしょう。
動的に割り当てられたPTYデバイスは、すぐに好まれた選択肢になりました。これは、/dev
が静的に割り当てられた何百ものPTYデバイスで乱雑になっていて、そのほとんどがシステムの存続期間中に使用されることはほとんどないためです。
次に、Linux2.6とudev
が付属しました。静的な/dev
ソリューションとdevfs
ソリューションの両方がすぐに廃止されました。下位互換性の理由から、devpts
ファイルシステムはまだ存在していましたが、完全にRAMベースになっているため、同じ機能をメインの/dev
ファイルシステムに戻すことができます。
たとえば、今日でも、Debian9はレガシー互換性のためにdevpts
ファイルシステムを/dev/pts
にマウントしますが、デフォルトで/dev/pts/ptmx
ゼロのアクセス許可を割り当てます-これはdevpts
のサインですファイルシステムはおそらく非推奨であり、将来のある時点で削除される予定です。
# ls -l /dev/ptmx /dev/pts/ptmx
crw-rw-rw- 1 root tty 5, 2 Nov 22 11:47 /dev/ptmx
c--------- 1 root root 5, 2 Nov 12 14:59 /dev/pts/ptmx
一部のプログラムでまだ/dev/pts/ptmx
が必要な場合は、デフォルトの権限を調整することで許可できますが、これにより、どのプログラムが古い非推奨のデバイス名をまだ使用しているかを知ることができます。
プロセスが/ dev/ptmxを開くと( posix_openpt() を使用)、疑似端末マスター(PTM)のファイル記述子を取得し、疑似端末スレーブ(PTS)デバイスが/ dev /に作成されます。 ptsディレクトリ。
マスターが開かれると、スレーブはロックされます。スレーブの名前を取得し、その権限などを設定してから、スレーブのロックを解除できます。これにより、アクセス可能になる前にスレーブを制御できます。
スレーブは実際のテキスト端末デバイスをエミュレートし、マスターは端末エミュレータプロセスがスレーブを制御する手段を提供します。
スレーブは物理端末の仮想実装であり、マスターはその端末での人間による入力の仮想実装です。コンピューターは、スレーブに送信された文字を、人間が実際の端末で入力した場合と同じように扱います(マスターが作成されたときのアクセス許可の設定によって制限されます)。