![在无头 Linux 系统上通过 USB 配置 tty](https://linux22.com/image/210065/%E5%9C%A8%E6%97%A0%E5%A4%B4%20Linux%20%E7%B3%BB%E7%BB%9F%E4%B8%8A%E9%80%9A%E8%BF%87%20USB%20%E9%85%8D%E7%BD%AE%20tty.png)
我有一个基于 IMX8MM (tx8m-1610) 的 Linux 系统。我使用 USB 连接在其上刷新新软件,然后切换到串行调试端口或 ssh 继续在系统上工作。
我想以这样的方式设置系统,在刷新新的 rootfs 或内核后,我可以简单地删除“从 USB 启动”跳线,重新启动,然后将其显示为 USB 设备,通过它我可以进入控制台。
我有
CONFIG_USB_SERIAL=y
CONFIG_USB_SERIAL_CONSOLE=y
CONFIG_USB_SERIAL_GENERIC=y
在内核配置中启用,并且在我的 dtb 中,USB 设备被定义为外围设备。
usbg1: usbg1 {
compatible = "fsl,imx27-usb-gadget";
chipidea,usb = <&usbotg1>;
dr_mode = "peripheral";
status = "okay";
};
&usbotg1 {
dr_mode = "peripheral";
status = "okay";
};
&usbotg2 {
dr_mode = "peripheral";
status = "okay";
};
我启用并启动 getty@ttyUSB0
但它仍然没有显示为 USB 设备。
我在网上找不到太多其他信息来源。
Linux 内核 5.15.32 debian 11 bullseye
编辑:
好吧,我再进一步,我设法让它工作,不幸的是我的方法要求我运行 depmod,这意味着我必须先访问终端才能使其工作。
虽然目标是从刷新新软件切换到通过 USB 的 tty,而无需通过其他方式进入终端。
答案1
好的,我找到了解决方案
CONFIG_USB_G_SERIAL=y 在内核配置中设置为 m 而不是 y
之后我可以 systemctl 在我的 rootfs 中启用 getty@ttyGS0
闪烁后,我的主机将其检测为串行设备,我可以将其与 Screen 一起使用。