在我的 Archlinux 上,/dev/pts是由 devpts 挂载的,那么谁创建了 /dev/pts/ptmx设备节点?这个节点的目的是什么?它与 相同(Major=5 Minor=2)设备节点/dev/ptmx/,但访问模式不同,这是为了什么?
Jde*_*eBP 16
旧的AT&T系统5机制伪终端从设备是它们是普通的持久性下字符的设备节点/dev。有一个多路复用器主设备/dev/ptmx。为伪终端设备旧4.3BSD机构具有平行对普通的持久性下主从设备节点/dev。这些是普通磁盘文件系统上的特殊设备节点。
在 OpenBSD 上,其中一些现在仍然适用。 /dev仍然是一个磁盘卷,从设备仍然是真正的磁盘节点。然而,它们是按需创建的。当PTMGET在/dev/ptm设备上发出I/O 控制时,内核在内部发出相关调用以在那里创建新设备节点。
在 FreeBSD 上,这些都不是真的。甚至不再有多路复用器设备。 /dev根本不是光盘卷。它是一个devfs文件系统。从设备出现在devfs其pts/目录下的文件系统中以响应posix_openpt()系统调用,这是一个彻底的系统调用,而不是包装ioctl()在打开的文件描述符上到某些“多路复用器”设备。
有一段时间在 Linux 上,伪终端从设备是持久设备节点。您正在查看的是它devpts与devtmpfs. 这几乎允许与在 FreeBSD 上使用devfs.
但也有一些区别。特别是,还有一个“多路复用器”设备。
devpts系统中,这是ptmx不同devtmpfs文件系统中的设备,文件devpts系统仅包含自动创建/销毁的从设备文件。传统上,设置是/dev/ptmx和一个随附的devpts安装在/dev/pts.devpts文件系统,用于容器等,这被证明是相当困难的时候出现了同步的(正确的)两个文件系统很多 devtmpfs和devpts文件系统。因此,在较新的“新”devpts系统中,所有设备、多路复用器和从设备都在一个文件系统中。为了向后兼容,默认设置是新ptmx节点不可访问,除非设置新的ptmxmode挂载选项。在向后兼容模式下,您仍然可以以较旧的单实例方式运行事物,并且默认情况下会这样做,除非newinstance在安装devpts.
devpts(自2016年一直围绕)每个实例的多路复用器的设备devpts文件系统是现在的首要多路复用器,以及ptmx在devtmpfs为内核提供一个垫片,它试图模仿的符号链接,一个绑定安装,或一个普通的旧实际符号链接到pts/ptmx. 多实例方式现在是唯一的方式。Documentation/filesystems/devpts.txt. Linux内核。/dev/pts必须使用 'newinstance' 挂载标志来避免容器的安全问题。红帽错误 #501718。| 归档时间: |
|
| 查看次数: |
1466 次 |
| 最近记录: |