如果控制台 = tty0 不在内核命令行中,则内核会出现混乱

如果控制台 = tty0 不在内核命令行中,则内核会出现混乱

我将我的 Ubuntu 18.04 系统配置为使用早期启动控制台,并将内核命令行参数更改为:

console=uart,mmio32,0xd091c000 console=tty0

这会给我一个通过串行端口进行的早期启动控制台,直到启动过程中的某个点,然后切换到将内核日志发送到/dev/tty0,然后系统就可以正常启动了。

因为我想要全部内核日志遇到我的串行端口时,我删除了console=tty0

console=uart,mmio32,0xd091c000

现在的问题是出现内核恐慌:

Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000100

日志中似乎没有任何内容表明发生了错误。

启动时需要什么命令行参数?

答案1

以下是我的理论。基于 UART 的控制台不是真正的 TTY。意图根据该console=选项的文档(强调添加),内核稍后会切换到常规串行设备:

在指定的 I/O 端口或 MMIO 地址上的 8250/16550 UART 上启动早期轮询模式控制台,稍后切换到匹配的 ttyS 设备

然而,在开始时这并没有发生/init

[    3.329451] Run /init as init process

设备名称分配得较晚:

[    6.759113] 0000:00:1e.3: ttyS4 at MMIO 0xd091c000 (irq = 18, base_baud = 2764800) is a 16550A

相关内容