我的 Linux 系统有 USB 端口,没有 RS-232 端口。我希望能够将 USB 电缆插入 Linux 系统,将 USB 电缆的另一端插入我的 PC,这恰好运行 Windows 11 并且有 PuTTY。
我需要创建的电缆我可以做到,它只不过是一端的 FTDI USB 电缆和另一端的简单 USB 连接器。我使用 USB 连接器而不是 RS0-232 连接器,以及 FTDI TX <> RX USB 连接器、FTDI RX <> TX USB 连接器,当然还有公共 GND。我将必须确保 3.3v 或 5v 信号取决于 FTDI 芯片可以处理的内容。不管物理布线如何,真正的零调制解调器,这就是问题,真正的问题,软件配置?
如何配置 Linux 系统以建立到特定 USB 端口的 getty 会话?让我们假设我可以弄清楚,所以它是 /dev/ttyUSB0 还是为了讨论?
Linux 系统是基于 systemd 的,所以我明白,我不能使用 UDEV 规则/脚本来设置终端会话,因为这将是一个长期存在的子进程或孙进程。
而且我知道这个终端会话不会真正模仿系统控制台,没关系,系统启动后我只需要一个会话。
我知道这是一个很长的问题,感谢您的宽容。这是 Linux 系统上的软件配置,我真的需要帮助。
据我了解,其目的是用 USB 端口制作一个串行控制台端口。
首先,要制作这样的电缆,您需要两个转换器。每台计算机的 USB 端口都必须提供 USB 到 UART 转换器,并且转换器需要背靠背连接,一个的 RX 到另一个的 TX。并将地线连接在一起,但可能最好采用电流隔离(一对光耦合器,每个方向 TX→RX 一个)以消除任何可能的接地环路。最后你会得到一个USB-to-USB 零调制解调器电缆,当任一端连接到计算机时它看起来像一个串行端口,当两端插入时,这些串行端口似乎与标准零调制解调器连接电缆。
接下来,您需要在此 USB 串口上运行 systemd getty 服务。如果你负担得起让电缆始终连接到 Linux 机器,你可以简单地启用该
serial-getty@ttyUSB0
服务:如果你希望在系统启动后允许插拔,你需要设置systemd和udev一起玩,以便在插入USB转串口设备时启动此服务,并在插入时终止服务它被拉出来了。
为此,您让您的设备依赖于该服务。添加
udev
规则以使用SYSTEMD_WANTS
环境变量动态添加依赖项:该规则可以放入
/etc/udev/rules.d/99-ttyUSB.rules
.%k
意思是“获取内核设备名称”,类似于ttyUSB0
.使用 udev 工具找出最方便的 udev 规则过滤器;这个非常广泛,可以接管任何看起来像 USB 串行的设备并在那里运行 getty。即使它真的是一个显示为两个 ttyUSB 的调制解调器!例如,查看此处了解详细信息;还要注意注意事项。
现在,在我的 Debian 系统上,它登录到
/var/log/daemon.log
:而且,当然,
/bin/login
与ttyUSB0
出现和消失相关的过程。另请参阅此答案。
如果您需要限制允许同步的可能串行速度集,您可以使用覆盖文件来实现。运行
systemctl edit [email protected]
并添加:或者您希望它使用的任何速度,请确保您的 USB 转串口适配器支持它。