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


34

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

由于udev可以动态地创建设备文件,为什么/dev/ttyS0/dev/ttyS1还是静态创建?每次我开机,/dev/ttyS0/dev/ttyS1在那里。

顺便说一句:我正在使用Debian 7.0。

Answers:


41

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

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

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

10针连接器至DB-9M适配器电缆

即使使用硅芯片,其他使用相同芯片组的主板也可能不会暴露接头连接器,这纯粹是为了节省PCB空间和接头连接器几美分。

几个串行UART对批量生产的PC芯片组IC的成本可忽略不计,而将DB-9连接器连接到板边缘的主板最终零售成本将增加数美元。PCB空间也有成本。板边缘的空间特别宝贵。

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

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


11
我还建议您提及,许多笔记本电脑主板-都有-串行控制器,它不能随处可见,因此,如果不拆卸笔记本电脑并将其焊接到测试点上就无法使用,许多制造商使用它来对生产线进行一些基本检查确保主板在发货之前具有基本功能。但是,就Linux而言,这意味着存在一个串行端口,并且它会实例化任何具有串行控制器的板卡所期望的端口。

@Vality,您是否知道任何有用的信息-我使用的笔记本电脑明天将被认为已经过时了,因此对于(a)Linux和(b)改进已经成熟。
克里斯H

1
@ChrisH好吧,这在某种程度上取决于笔记本电脑,您将需要查找数据表,或者至少是笔记本电脑主板的黑客指南,具体取决于型号,有些会采用正确的布局轻松焊接到串行接头上,尽管有些便宜的电路板只是在电路板上有一些分散的测试点。如果幸运的话,您可以先焊接在插头上,然后再连接电缆,然后在笔记本电脑上切一个小孔以便将其插入插座中,这样您就可以拥有一个端口了。请记住,虽然它将是5或3.3伏,所以不要将其用作RS232。它是什么笔记本电脑?

@Vality宏a上网本-这里没有确切的型号-我只是在想了解一般资源,我需要花一段时间才能解决它-谢谢。
克里斯H

问题是基本的,保守的,向后兼容。这就是为什么人们喜欢Linux。您不会在内核中“快速移动并破坏”。只有在内核有一个合理且相当普遍的理由前进的情况下,才真正需要更改事情。
JakeGould 2014年

4

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


但是,这些都不是创建设备节点的原因。就内核而言,创建该设备是因为该设备在那里。如果禁用CMOS上的串行UART,则不会。
GnP 2014年

1
QEMU是,如果你想运行的虚拟机的终端里使用它的一个例子:stackoverflow.com/questions/19565116/...
西罗桑蒂利新疆改造中心法轮功六四事件

0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.