You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Linux将earlycon设为全程主控制台(8250 UART虚拟机环境)

解决方案

要让Linux全程使用earlycon作为主控制台,需从内核命令行、内核配置及用户空间配置三方面调整:

1. 修改内核命令行

移除原命令行中的console=ttyS0,添加keep_bootcon参数,阻止系统启动后禁用bootconsole。修改后的内核命令行为:

ro earlycon=uart8250,mmio,0x10000000,1000000 keep_bootcon
  • keep_bootcon:内核启动完成后保留bootconsole(即earlycon),不自动切换到标准串口控制台
  • 去掉console=ttyS0:避免系统加载标准串口驱动后切换到ttyS0

2. 验证内核配置

确保内核编译时开启以下选项,同时关闭可能冲突的标准串口控制台配置:

  • 开启CONFIG_SERIAL_EARLYCON=y(必须,支持earlycon功能)
  • 关闭CONFIG_SERIAL_8250_CONSOLE=y(可选,阻止标准8250串口控制台注册,消除自动切换的可能)
  • 若无需标准串口功能,可关闭CONFIG_SERIAL_8250=y(彻底禁用8250串口驱动,从根源避免切换)

3. 用户空间控制台配置

确保用户登录shell绑定到控制台设备:

  • 若使用sysvinit(依赖inittab),修改/etc/inittab对应行,让getty指向/dev/console:
    ::respawn:/sbin/getty -L console 1000000 vt100
    
  • 若使用systemd,创建或修改/etc/systemd/system/getty@ttyS0.service.d/override.conf,调整ExecStart参数:
    [Service]
    ExecStart=
    ExecStart=-/sbin/agetty -L console 1000000 vt100
    
    之后重新加载配置并重启服务:
    systemctl daemon-reload
    systemctl restart getty@ttyS0.service
    

验证效果

重启系统后查看内核日志,若不再出现printk: bootconsole [uart8250] disabled的记录,且用户登录界面直接通过earlycon输出,说明配置生效。

内容的提问来源于stack exchange,提问作者Charles Lohr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 22:10:44