
私のArchlinuxでは/dev/pts
devptsによってマウントされていますが、 /dev/pts/ptmx
デバイスノードを作成した人は誰ですか?このノードの目的は何ですか?同じ(Major = 5 Minor = 2)デバイスノードですが、/dev/ptmx/
アクセスモードは異なります。何のためですか?
答え1
従来のAT&Tシステム5擬似ターミナルスレーブデバイス機構は普通である持続性以下の文字デバイスノード/dev
。マルチプレクサがある所有者機器/dev/ptmx
。以前の4.3BSD擬似端末装置機構には並列共通がありました。持続性以下のマスターおよびスレーブデバイスノードです/dev
。これは汎用ディスクファイルシステムの特殊デバイスノードです。
OpenBSDでは、これらのいくつかはまだ適用されます。 /dev
それでもディスクボリュームであり、スレーブデバイスはまだ物理ディスクノードです。ただし、必要に応じて作成されます。PTMGET
I / O制御がデバイスに実行されると、カーネルは内部で関連する呼び出しを実行して新しいデバイスノードを作成します/dev/ptm
。
FreeBSDでは、これはもはや真実ではありません。もはやマルチプレクサデバイスはありません。 /dev
CDボリュームはまったくありません。ファイルシステムですdevfs
。スレーブデバイスは、システムコールに応答してそのディレクトリの下のdevfs
ファイルpts/
システムに表示されます。これは、一部の「マルチプレクサ」デバイスのオープンファイル記述子を囲むのではposix_openpt()
なく、完全なシステムコールです。ioctl()
しばらくの間、Linuxでは、疑似端末スレーブデバイスが永続デバイスノードでした。あなたが見ているのは、「新しい」devpts
ファイルシステム(ここで「新しい」は数年前に導入されたことを意味します)とdevtmpfs
。ほぼFreeBSDでの使用は許可されていますdevfs
。
しかし、いくつかの違いがあります。特に「マルチプレクサ」デバイスがあります。
- 内部に年をとる自動生成/破棄されたスレーブデバイスファイルのみを含む他のファイルシステムのデバイスである「新しい」
devpts
システム。慣例通り、設定にはマウントが用意されています。ptmx
devtmpfs
devpts
/dev/ptmx
devpts
/dev/pts
- しかし、Linuxの人々は欲しいです。複数の完全独立コンテナなどに使用されるファイルシステムインスタンス
devpts
。存在する場合、両方のファイルシステムを(正しく)同期することは非常に困難です。たくさんdevtmpfs
そしてdevpts
ファイルシステム。だから最新「新しい」devpts
システムのすべてのデバイス(マルチプレクサとスレーブ)は同じファイルシステムにあります。ptmx
以前のバージョンとの互換性のために新しいptmxmode
マウントオプションを設定しないと、デフォルトでは新しいノードにアクセスできません。以前のバージョンとの互換性モードでは、人々はまだ単一の単一インスタンス方法でタスクを実行できます。これはインストールされていないnewinstance
限りデフォルトで行われますdevpts
。 - 内部にも更新されましたファイルシステムの「新しい」
devpts
(2016年からすでに存在しています)インスタンス固有のdevpts
マルチプレクサデバイスは現在、デフォルトのマルチプレクサですptmx
。devtmpfs
実際へのシンボリックリンクpts/ptmx
。現在、マルチインスタンスアプローチは次のとおりです。ただ方法。
追加読書
- https://unix.stackexchange.com/a/470853/5132
- このglibcの問題を解決するための最良の方法は何ですか?
- https://unix.stackexchange.com/a/214685/5132
Documentation/filesystems/devpts.txt
。 Linuxカーネル。- ダニエル・ベランシュ(2009-05-20)。
/dev/pts
コンテナのセキュリティ問題を回避するには、「newinstance」マウントフラグを使用する必要があります。。 Red Hatのバグ#501718。 - エリックビーダーマン(2015-12-11)。 devpts: 賢明な /dev/ptmx と新しいインスタンスを強制する。 Linuxカーネルメーリングリスト。
- エリックビーダーマン(2016-04-08)。 devpts: パス照会によって関連する devpt を検索するように /dev/ptmx にトレーニングします。。 Linuxカーネルメーリングリスト。