使用 SuperMicro X9-SCM-F 在 FreeBSD 上进行 LAN 串行连接

使用 SuperMicro X9-SCM-F 在 FreeBSD 上进行 LAN 串行连接

如何在 FreeBSD 上设置 Serial-Over-Lan (SOL)超微 X9-SCM-F主板?那里有一些资源,但它们互相矛盾,不清楚,而且实际上不允许我让 SOL 在引导加载程序之后运行。

答案1

这最初是在 FreeBSD 10.0-RELEASE 上测试的,但可能适用于 FreeBSD 9.x,并且已知至少可以运行到 13.0-RELEASE。不同的主板可能具有略微不同的配置,但这仍可能是一个有用的参考。

BIOS 配置

  • 打开 BIOS 设置并导航到“高级 → 串行端口控制台重定向”,并确保“SOL 控制台重定向”设置为“已启用”(您不需要启用 COM1 或 COM2 或带外管理)。

  • 打开“SOL控制台重定向设置”,配置如下:

    Terminal Type                        [VT-UTF8]
    Bits per second                      [115200]
    Data Bits                            [8]
    Parity                               [None]
    Stop Bits                            [1]
    Flow Control                         [None]
    VT-UTF8 Combo Key Support            [Enabled]
    Recorder Mode                        [Disabled]
    Resolution 100x31                    [Enabled]
    Legacy OS Redirection Resolution     [80x24]
    Putty KeyPad                         [VT100]
    Redirection After BIOS POST          [Always Enable]
    

您只需将“终端类型”更改为 VT-UTF8,将“每秒位数”更改为 115200 即可实现上述配置。不更改终端类型会导致在复制粘贴到 SOL 会话时出现一些问题。

FreeBSD 配置

  • 启动 FreeBSD 并将以下行添加到/boot/loader.conf

    console="comconsole vidconsole"
    comconsole_speed=115200
    comconsole_port="0x3E8"
    

0x3E8是 COM3 的端口(BIOS 设置中的“SOL”)。您可以通过dmesg以下方式检查来发现可能的值:

$ dmesg | grep uart
uart0: <16550 or compatible> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
uart0: console (115200,n,8,1)
uart1: <16550 or compatible> port 0x2f8-0x2ff irq 3 on acpi0
uart2: <16550 or compatible> port 0x3e8-0x3ef irq 10 on acpi0

如果您希望通过 SOL 获得登录提示(从而能够登录),请编辑/etc/ttys更改以下行:

ttyu2   "/usr/libexec/getty std.9600"   dialup  off secure

ttyu2   "/usr/libexec/getty std.115200" vt100   on secure

我们之所以进行更改,ttyu2是因为这对应于 COM3(因为 TTY 是零索引的,而 COM 不是),这是我们的 SOL 使用的。如果您不需要登录(因为,例如,您只需要输入密码即可格力在启动过程中),您可以保持/etc/ttys原样。

笔记

以上是实现此功能所需的最低要求。很多人(见下文“参考资料”)建议或表示他们“需要”大量其他设​​置,但对我来说,这些设置不是必需的,但也不会损害 SOL 功能。再次,以下内容不需要,仅供参考。

  • /boot/loader.conf

    boot_multicons="yes"
    boot_serial="yes"
    hint.uart.0.flags="0x00"
    hint.uart.2.at="isa"
    hint.uart.2.flags="0x10"
    hint.uart.2.irq="10"
    hint.uart.2.port="0x3E8"
    
  • /boot.config

    -P
    

    或者

    -Dh
    

尽管FreeBSD 手册似乎说,您不需要编译自定义内核。

参考

请注意,其中许多都是错误的、过时的或过于热衷于设置实际上不需要的选项。尽管如此,它们对于实现上述最终实现还是有帮助的。

答案2

没有足够的代表来评论上面的答案,因此:

我运行的是 FreeBSD 9.2,Andrew 的上述配置为我在 X8SIL-F / X8SIE-F 上的 COM 3 启用了 SOL,从 BIOS 到登录提示。它完全基于他的上述回答,但在 9.2 上使用 GENERIC 内核进行了测试——谢谢,Andrew!

几点说明:

  • 似乎是 中“console=...”行中的“comconsole”或“vidconsole”的顺序/boot/loader.conf决定了哪个成为正确的启动控制台,从而决定了控制台消息(和单用户提示)出现的位置。我无法/boot.config影响这一点,无论是探测键盘、-P 还是双控制台、-D(参见 )boot(8),都没有任何效果——所以我没有/boot.config

  • X8SIL 的 BIOS 中 COM3 的设置非常准确。我只按照建议将终端类型更改为 VT-UTF8,尽管 ANSI 和 VT100 也可以使用——我测试过它们。

  • 我没有必要uart2在 中设置 irq /boot/loader.conf。有关标志,请参阅uart(8)

  • 在 中/dev/ttys,我将其设置ttyu2为“不安全”,因为我不想 root 通过 SOL 登录(单用户模式仍会让您获得 root 权限)。我建议也将控制台设置为不安全。

答案3

如果某人仍然无法获取 SOL 输出 - 请重置 BMC,可能就是这种情况。

答案4

虽然没有足够的声誉来评论,但是这拯救了我。

但是我确实需要添加这些,/boot/device.hints因为如果没有它们,FreeBSD 就看不到 SOL 控制台的 uart2 设备。我有一台 Supermicro X9SRi-3F,SOL 控制台在 COM3 上运行。即使您禁用其他两个板载串行端口,也无法更改这一点。

我必须添加这些才能完全解锁 FreeBSD 12.2 上的串行控制台支持

hint.uart.2.at="isa"
hint.uart.2.port="0x3E8"
hint.uart.2.flags="0x10"

相关内容