为什么有些 Linux 发行版仍然有 /dev/ttyS0、ttyS1 等,即使较新的计算机没有这样的串行端口?

为什么有些 Linux 发行版仍然有 /dev/ttyS0、ttyS1 等,即使较新的计算机没有这样的串行端口?

许多新的笔记本电脑和台式电脑没有 9 针/25 针串行端口。为什么许多 Linux 发行版仍然包含/dev/ttyS0,dev/ttyS1设备文件?

既然udev可以动态创建设备文件,为什么/dev/ttyS0还是/dev/ttyS1静态创建呢?每次我启动时,/dev/ttyS0都会/dev/ttyS1在那里。

顺便说一下:我使用的是 Debian 7.0。

答案1

这些/dev节点的出现是因为标准PC串口驱动程序被编译到您正在使用的内核中,并且它正在查找UART。这导致/sys/devices/platform/serial8250(或兼容的东西)出现,所以乌德夫创建相应的/dev节点。

这些 UART 很可能是主板芯片组的众多功能之一。芯片组中的串行 UART 仍然很常见,尽管 DB-9 连接器连接到这些 IC UART 引脚的情况越来越少。

在某些主板上,有一个接头连接器对于每个串行端口,如果您想将该连接器连接到 PC 背面,则必须购买适配器电缆:

10 针接头转 DB-9M 适配器电缆

使用相同芯片组的其他主板甚至可能不会暴露接头连接器,即使该功能在芯片中可用,纯粹是为了节省一点 PCB 空间和接头连接器的几美分。

一些串行 UART 对批量生产的 PC 芯片组 IC 增加的成本可以忽略不计,但在主板边缘运行 DB-9 连接器却会增加几美元的主板最终零售成本。 PCB空间也有成本;板边缘的空间尤其宝贵。

没有标准方法可以探测连接到 RS-232 串行端口的设备是否存在。

对比USB,主板上仅仅存在一个端口并不会导致/dev节点被创建,但是插入设备却会导致创建节点,因为设备和主机操作系统之间存在相当复杂的协商。实际上,设备向操作系统宣告自己,因此可以通过为设备udev创建适当的节点来做出反应。/dev

答案2

想象一下在虚拟化下运行Linux,许多模拟器仍然依赖于将控制台输出到串口。这是一个方便的标准。此外,无头服务器仍然使用串行端口进行通信。

答案3

值得一提的是,许多(大多数?)服务器仍然提供串行访问(ttyS0)。我几乎每天都需要通过 iLO/iDRAC 通过 LAN 串行连接进行连接。正如@Patrick 指出的,我在重新配置网络等时也通过串行端口连接到虚拟机。

相关内容