web-dev-qa-db-ja.com

Fedoraに2つの `ptmx`ファイルがあるのはなぜですか?

私はファイル/dev/ptmxは、疑似端末のマスターファイルを生成するために使用されます。しかし、Fedoraには別のptmxファイル(/dev/pts/ptmx):

enter image description here

この2番目のファイルの目的は何ですか?

1
Steve

その理由は、コンピューティングの世界の多くのものと同様に、歴史と下位互換性です。

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が必要な場合は、デフォルトの権限を調整することで許可できますが、これにより、どのプログラムが古い非推奨のデバイス名をまだ使用しているかを知ることができます。

4
telcoM

プロセスが/ dev/ptmxを開くと( posix_openpt() を使用)、疑似端末マスター(PTM)のファイル記述子を取得し、疑似端末スレーブ(PTS)デバイスが/ dev /に作成されます。 ptsディレクトリ。

マスターが開かれると、スレーブはロックされます。スレーブの名前を取得し、その権限などを設定してから、スレーブのロックを解除できます。これにより、アクセス可能になる前にスレーブを制御できます。

スレーブは実際のテキスト端末デバイスをエミュレートし、マスターは端末エミュレータプロセスがスレーブを制御する手段を提供します。

スレーブは物理端末の仮想実装であり、マスターはその端末での人間による入力の仮想実装です。コンピューターは、スレーブに送信された文字を、人間が実際の端末で入力した場合と同じように扱います(マスターが作成されたときのアクセス許可の設定によって制限されます)。

0
Rob