我正在尝试通过串行控制台和托管公司的恢复控制台(基本上是 ubuntu liveCD)在软件 raid0 和 LVM 根文件系统上为 debian lenny 配置服务器。
在配置 raid0、建立 LVM、运行 debootstrap、安装 grub 等之后,我重新启动,服务器在启动之前挂起,然后到达 init。根据内核日志消息,raid 阵列已上线,可能还有 LVM(抱歉,目前没有确切的日志消息,但明天会有)。
initramfs 脚本本身绝对没有错误输出——只有内核日志消息。我怎样才能让 initramfs 产生一些有用的调试输出,以便我至少可以确定它死在哪里?
看来问题是在内核命令行上两次指定了控制台:
尽管内核消息发送到两个控制台,但用户空间消息大概只发送到后者。
内核消息被复制到内核命令行 (/proc/cmdline) 上指定的所有设备。但是,对于需要输入的场景(例如,命令外壳),输出只会发送到最后一个 console= 设备(当然,这是从那里获取输入的)。
至于 initramfs 的东西,debug= 可以在内核命令行上设置(例如,通过 GrUB 等引导加载程序完成)以显示在任何级别执行的命令:top、premount、init 等。我已经查看了 init 的 initramfs 版本,请注意:该值减去您在引导时看到的“init-”部分。我希望只使用“调试”来查看所有级别,但是唉,它不是那样工作的。
顺便说一句...并不是说它会有所不同,但对我来说这是 Ubuntu 10.04
这一切都与设备(/dev/console)的处理方式有关。当它打开时,它指的是最后提到的内核命令行 console= 。因此,虽然内核可能会向所有“提及”输出消息,但用户态通常只能访问最后一个。
6年后,情况发生了很大变化。Debian wiki 文档可能对某人有用:https ://wiki.debian.org/InitramfsDebug#Saving_debug_information