我正在运行 FreeBSD 8.2-RELEASE。该机器是超微5015M和IPMI 2.0 子板。
当我启动此主机时,启动过程顺利进行。我看到了 BIOS、RAID BIOS、第一和第二阶段引导加载程序以及第三阶段,/boot/loader。这些看上去都运行良好,速度也没有问题。
然后,系统加载内核,并以大约 1 bps 的速度打印内核消息。这是 IPMI KVM-over-LAN 的视频. 使用连接到机器的物理键盘-视频-鼠标时我也会看到这种情况。
BIOS 控制台重定向设置为 115200 bps。
/boot/loader.conf
和的相关设置/boot/device.hints
:
boot_multicons=YES
boot_serial=YES
comconsole_speed=115200
console=comconsole,vidconsole
hint.uart.1.flags=0x10
hint.uart.1.port=0x2F8
我已停用 boot_multicons、boot_serial、将 comconsole_speed 设置为各种值、将 console 更改为各种值等。但都不起作用。好像内核忽略了我输入到加载程序中的设置。我甚至更改了 BIOS 中的端口速度。
知道为什么会发生这种情况吗?
看起来 FreeBSD 正在将字符打印到视频控制台,但是打印字符的速度是串行控制台特有的,并且错误地认为我的串行控制台配置为 1 bps。
答案1
如果有人能解释为什么会发生这种情况,请发表您自己的答案。如果您的答案很好,我会接受您的答案而不是我的。
快速简便的解决方案是选择其他 COM 端口。显然,我的 COM A 和 COM B 不匹配,在其他地方它们被称为 03F8 和 02F8。BIOS 配置为使用 COM A。FreeBSD 引导加载程序采用一些合理的默认值,这就是引导加载程序运行良好的原因。FreeBSD 内核期望看到 COM B。COM A 在操作系统中未配置,因此内核采用一些奇怪的默认值(1 bps)。串行控制台的 bps 速率也会影响打印到视频控制台的文本速度。
请记住,我没有使用串行控制台,但我们总是在系统上配置串行控制台,以便 IPMI 的 Serial-over-LAN (SOL) 可以工作,因为这里的一些系统管理员更喜欢 SOL。
我发誓我以前试过这个,但没有用。但现在,它起作用了。
也可以通过调整 /boot/device.hints 中的 uart 设置来防止这种情况。