必须配置内核启动参数、验证串口设备节点、启用getty服务、禁用硬件流控并测试登录;具体包括设置console=ttyS0,115200n8、确认/dev/ttyS0存在、启用serial-getty@ttyS0.service、执行stty -F /dev/ttyS0 -crtscts、用minicom等工具验证登录。
如果您在嵌入式Linux系统中需要通过串口进行系统登录与调试,则必须正确配置内核启动参数及系统服务以启用串口控制台。以下是实现串口登录的具体步骤:
串口控制台依赖于内核启动时指定正确的console参数,以确保内核日志和初始登录提示输出到指定串口设备。
1、编辑U-Boot环境变量中的bootargs,添加或修改console参数,例如:console=ttyS0,115200n8(假设使用ttyS0,波特率115200,无校验,8数据位)。
2、若存在多个console参数,确保目标串口位于最前面,例如:console=ttyS0,115200n8 console=tty1。
3、保存U-Boot环境并重启系统,使新bootargs生效。
系统需识别并生成对应串口的设备节点(如/dev/ttyS0),否则无法绑定登录终端。
1、执行命令:ls -l /dev/ttyS*,确认目标串口设备节点已列出。
2、若未出现,检查内核是否启用对应串口驱动(如CONFIG_SERIAL_8250、CONFIG_SERIAL_8250_CONSOLE等),必要时重新编译内核。
3、使用dmesg | grep tty查看内核启动日志,确认串口初始化成功且无“failed”或“disabled”字样。
getty进程负责监听串口设备并启动login程序,必须为对应串口配置独立的getty实例。
1、在systemd系统中,执行: 
2、检查该服务状态:sudo systemctl status serial-getty@ttyS0.service,确认处于enabled且active状态。
3、若使用SysV init,编辑/etc/inittab,添加一行:S0:12345:respawn:/sbin/getty -L ttyS0 115200 vt100,然后执行sudo init q重载配置。
硬件流控(RTS/CTS)在嵌入式调试场景下常导致通信中断或登录卡死,需确保其被禁用。
1、执行:stty -F /dev/ttyS0 -crtscts,关闭RTS/CTS流控。
2、为防止重启后失效,将该命令加入系统启动脚本,例如在/etc/rc.local中添加(在exit 0前):stty -F /dev/ttyS0 115200 -crtscts。
3、验证设置:运行stty -F /dev/ttyS0,确认输出中包含crtscts off。
完成上述配置后,需通过外部串口工具连接验证登录流程是否正常触发。
1、使用PC端串口工具(如minicom、screen或PuTTY),配置相同波特率、数据位、停止位和无校验(如115200 8N1)。
2、连接开发板串口,上电或重启系统,观察是否输出内核启动信息及login:提示符。
3、输入已存在的用户名(如root),按回车后输入密码,确认可成功进入shell会话。