我目前有一个嵌入式设备,通过主线 U-Boot 启动到主线 Linux 内核(通过 Buildroot 构建)。这工作正常并且董事会按预期工作。
我想要的一个选项是能够从 U-Boot 禁用串行控制台,这样 Linux 开始启动后我就不会看到任何输出。我尝试通过设置bootargs
U-Boot 环境变量来实现这一点,如下所示:
setenv bootargs "console=null"
我也尝试过设置silent=1
和silent_linux=1
变量。
当我设置这些选项中的任何一个时,Linux 启动时,仍然照常输出所有消息,然后内核在启动过程中很快出现恐慌:
Warning: unable to open an initial console.
Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000100
CPU: 3 PID: 1 Comm: init Tainted: G W 5.1.9 #2
Call Trace:
[e4091e50] [c05d17f8] dump_stack+0x80/0xa0 (unreliable)
[e4091e60] [c00263dc] panic+0x134/0x2f0
[e4091ec0] [c0029a64] do_exit+0x4d0/0x92c
[e4091f10] [c0029f3c] do_group_exit+0x40/0xac
[e4091f30] [c0029fbc] __wake_up_parent+0x0/0x18
[e4091f40] [c000e1e0] ret_from_syscall+0x0/0x38
--- interrupt: c01 at 0xfde0b60
LR = 0xfec340c
Rebooting in 180 seconds..
我假设我错误地配置了内核,因为它仍然输出到默认串行端口并且出现恐慌,但我不确定什么会导致这种情况发生。
任何建议将不胜感激。
答案1
Un*x、Linux 和console=null
在 POSIX OS 控制台上是必需的!没有控制台,内核恐慌!您可能会console=
在您的中找到可能的值文档/内核参数.txt在您的发行版中·
你可以改变日志级别与 proc 文件:
echo 0 > /proc/sysrq-trigger
或者通过输入魔法 SysRq 键
- 按住AltGr并保持按下状态。
- 先击中PrtScr,然后释放它们(同时AltGr按住),然后
- 点击0, 1, 2... 和/或 9 (同时AltGr按住)
这会将日志级别更改为与按下的按键相对应的数字。