我在各种 Supermicro 和其他白盒服务器上运行 Linux(基于 Red Hat、CentOS、SL、版本 5 和 6)。有些有 IPMI,有些没有。
其中一些系统连接到键盘/显示器 (KVM) 控制台交换机。其他系统连接到远程串行控制台。较新的服务器连接到 IPMI,可通过 KVM-over-LAN 控制台重定向或 Serial over LAN (SOL) 访问。
使用所有这些方法,我们希望在所有串行控制台和 KVM 屏幕上看到一致的输出。例如,我们希望能够从启动到关闭与系统交互,并且希望看到整个启动顺序。这包括查看以下设备打印的任何消息以及与以下设备交互的任何消息:
- BIOS(这由许多现代 BIOS 中的 BIOS 控制台重定向处理,并且独立于操作系统)
- 引导加载程序(本例中为 Grub 0.97)
- 查看内核打印的消息
- 查看 打印的消息
fsck
,例如在fsck
大型文件系统的长运行期间。在具有串行控制台的系统上,有时fsck
会在那里什么也不做,等待系统管理员输入密码。但系统管理员可能看不到此密码提示,除非我们碰巧记得登录串行控制台。 - 查看程序在启动期间打印的消息
- (例如
Starting sshd: [ FAILED ] typo in sshd_config on line 171
)
- (例如
- 提示
login:
,并允许我登录系统。
我尝试了几种方法,但似乎无论我输入什么grub.conf
,一些消息都会打印到显示器或串行控制台上,但不会同时打印到两者上。
是否可以告诉引导加载程序、Linux 内核、操作系统等将所有消息打印到所连接的监视器上和串行控制台呢?
答案1
我尝试了几种方法,但似乎无论我在 grub.conf 中输入什么,一些消息都会打印到显示器或串行控制台上,但不会同时打印到两者上。
理论上,您可以使用多个console=
选项来grub.conf
使 Linux 内核在可能的情况下输出到所有控制台,如下所示:
title CentOS (2.6.18-194.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-194.el5 ro root=LABEL=/ rhgb console=tty0 console=ttyS0,9600n8
initrd /initrd-2.6.18-194.el5.img
但事实上,根据串行控制台操作指南,来自 init 和 syslog 的消息仅出现在最后列出的控制台设备上。