进一步阅读

进一步阅读

在我的Archlinux上,/dev/pts是由devpts挂载的,那么谁创建了 /dev/pts/ptmx设备节点呢?这个节点的目的是什么?它与 相同(Major=5 Minor=2)设备节点相同/dev/ptmx/,但访问模式不同,为了什么?

答案1

旧的 AT&T System 5 伪终端从设备机制是它们是普通的执着的下的字符设备节点/dev。有一个多路复用器掌握设备/dev/ptmx。旧的 4.3BSD 伪终端设备机制有并行的普通执着的下的主从设备节点/dev。这些是普通磁盘文件系统上的特殊设备节点。

在 OpenBSD 上,其中一些现在仍然适用。 /dev仍然是一个磁盘卷,从设备仍然是真正的磁盘节点。然而,它们是根据需要创建的。当PTMGET对设备发出 I/O 控制时,内核会在内部发出相关调用来创建新的设备节点/dev/ptm

在 FreeBSD 上,这一切都不再正确。甚至不再有多路复用器设备。 /dev根本不是光盘卷。它是一个devfs文件系统。从设备出现在devfspts/目录下的文件系统中以响应posix_openpt()系统调用,这是一个彻底的系统调用,而不是包装ioctl()在某些“多路复用器”设备的打开文件描述符上。

有一段时间,在 Linux 上,伪终端从设备是持久设备节点。您所看到的是它的“新”devpts文件系统(其中“新”意味着几年前引入的)以及devtmpfs.这几乎允许与在 FreeBSD 上使用devfs.

但也存在一些差异。特别是,还有一个“多路复用器”设备。

  • 在里面较老的“新”devpts系统,这是ptmx不同devtmpfs文件系统中的设备,该devpts文件系统仅包含自动创建/销毁的从设备文件。按照惯例,该设置是在 处/dev/ptmx附带一个安装座。devpts/dev/pts
  • 但 Linux 人们想要拥有多个完全独立的文件系统的实例devpts,用于容器等,并且当存在时,同步(正确的)两个文件系统非常困难许多 devtmpfsdevpts文件系统。所以在较新的“新”devpts系统中的所有设备(多路复用器和从设备)都位于同一个文件系统中。

    为了向后兼容,默认情况下新ptmx节点不可访问,除非设置新的ptmxmode挂载选项。在向后兼容模式下,人们仍然可以以较旧的单实例方式运行事物,并且默认情况下会这样做,除非newinstance在安装devpts.

  • 在里面甚至更新“新” devpts(自 2016 年以来一直存在)devpts文件系统中的每个实例多路复用器设备现在是主多路复用器,并且ptmxdevtmpfs由内核提供的垫片,它尝试模拟符号链接、绑定安装或一个普通的老实际的符号链接到pts/ptmx.现在的多实例方式是仅有的方式。

进一步阅读

相关内容