我有一台 HP ProLiant Microserver Gen9。它有 HP ILO 版本 4,但基于 Java 的远程控制台无法可靠地工作,而且在 ILO 免费版的 POST 屏幕之后我无法使用它(要求我购买 ILO 高级许可证)。因此,我想使用串行控制台来登录服务器。
在 Ubuntu 系统上,我需要做什么才能通过服务器的 ILO 网络端口在串行控制台中获取启动过程的所有阶段(POST、BIOS 配置、GRUB 的输出、最终的登录提示)?我该如何连接它?
答案1
HP 服务器上的 ILO 端口默认通过 DHCP 请求 IP。因此,您只需将其插入正在运行 DHCP 服务器的网络即可。它将使用主机名宣布自己,例如,这应该可以更轻松地在路由器的 DHCP 租约表中或例如/ILOCZ12345678
中找到它(如果您在 Ubuntu 等系统上运行 DHCP 服务器(例如)。journalctl
syslog
isc-dhcp-server
找到 IP(例如1.2.3.4
)后,您可以通过 连接到 ILO 的 GUI 界面https://1.2.3.4
。但这不是我们要找的,我们需要的是串行控制台。因此,请使用 ILO 的 SSH 界面:。默认密码在 Microserver 附带的小纸标签上。ssh [email protected]
请注意,只要服务器关闭时插有电源线,此方法也能起作用(这是 ILO 的要点)。
在其中输入?
以查看所有选项。摘录:
POWER : Control server power.
UID : Control Unit-ID light.
ONETIMEBOOT: Access One-Time Boot setting.
NMI : Generate an NMI.
VM : Virtual media commands.
LANGUAGE : Command to set or get default language
VSP : Invoke virtual serial port.
TEXTCONS : Invoke Remote Text Console.
TESTTRAP : Sends a test SNMP trap to the configured alert destinations.
我们选择VSP
获取串行端口;TEXTCONS
可能也不错,但您必须购买高级 ILO 许可证才能使用它。
现在,一旦我们这样做了,在系统运行的情况下,它就会挂起
</>hpiLO-> VSP
Virtual Serial Port Active: COM2
Starting virtual serial port.
Press 'ESC (' to return to the CLI Session.
这是因为默认情况下,Ubuntu(我在这里使用 16.04)不会通过串行端口提供登录提示。我们稍后会更改它。首先,我们重新启动以查看 BIOS 配置是否已正常工作。
通过串口查看启动情况
在另一个 ILO ssh 会话中,使用以下命令重新启动:
</>hpiLO-> power reset
status=0
status_tag=COMMAND COMPLETED
Sun Feb 5 20:05:59 2017
Server resetting .......
等待一段时间后,您会注意到正在运行的会话VSP
已清除其屏幕。
然后出现:
4096 MB Installed
ProLiant System BIOS - J06 (11/02/2015)
Copyright 1982, 2015 Hewlett-Packard Development Company, L.P.
1 Processor(s) detected, 2 total cores enabled, Hyperthreading is not supported
Proc 1: Intel(R) Celeron(R) CPU G1610T @ 2.30GHz
HP Power Profile Mode: Custom
Power Regulator Mode: Dynamic Power Savings
Redundant ROM Detected - This system contains a valid backup System ROM.
Inlet Ambient Temperature: 18C/64F
HP SmartMemory authenticated in all populated DIMM slots.
HP AHCI SATA Controller (v0.90)
Copyright (c) 2011, Hewlett-Packard Development Company, L.P.
HP AHCI SATA Controller (v0.84) WD30EFRX-68EUZN0
Port3: S.M.A.R.T Capable Hard Disk - WDC WD30EFRX-68EUZN0
Copyright (c) 2011, Hewlett-Packard Development Company, L.P.
<F9 = Setup>
iLO 4 Standard
iLO 4 v2.50 Sep 23 2016 192.168.178.106
Broadcom NetXtreme Ethernet Boot Agent
Copyright (C) 2000-2015 Broadcom Corporation
All rights reserved.
Press Ctrl-S to enter Configuration Menu
这就是 POST 屏幕。稍等片刻,然后观察:
Press "F9" key for ROM-Based Setup Utility
Press "F10" key for Intelligent Provisioning
Press "F11" key for Default Boot Override Options
Press "F12" key for Network Boot
For access via BIOS Serial Console
Press "ESC+9" for ROM-Based Setup Utility
Press "ESC+0" for Intelligent Provisioning
Press "ESC+!" for Default Boot Override Options
Press "ESC+@" for Network Boot
如果您想配置 BIOS,现在是时候了:此屏幕仅显示 1 秒钟左右。F* 键通常不起作用,需要将其转义:您必须按下该ESC
键,然后按下上面所示的数字/符号。例如,ESC
然后5
代表F5
。
现在,无需进一步设置,我们在串行端口上就会得到静默,因为如上所述,在 16.04 中,GRUB2 和 Ubuntu 登录终端都不会默认输出到串行端口。
因此我们配置服务器(现在通过 SSH)以使用串行端口。
让 GRUB2 使用串行端口
我按照以下说明进行操作https://www.hiroom2.com/2016/06/06/ubuntu-16-04-grub2-and-linux-with-serial-console/按照描述进行更改/etc/default/grub
(-
表示用 注释掉该行#
,+
表示添加该行):
DEFAULT=0
-GRUB_HIDDEN_TIMEOUT=0
-GRUB_HIDDEN_TIMEOUT_QUIET=true
-GRUB_TIMEOUT=10
+GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
-GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
-GRUB_CMDLINE_LINUX=""
+GRUB_CMDLINE_LINUX_DEFAULT=""
+GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200"
-#GRUB_TERMINAL=console
+GRUB_TERMINAL="console serial"
+GRUB_SERIAL_COMMAND="serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1"
设置 10 秒的超时时间是因为串行连接重新绘制屏幕的速度非常慢,并且我们希望有足够的时间来通过按下 GRUB 中的按键等来取消超时。
按照说明更改文件后,运行sudo update-grub
,然后重新启动。
您现在应该在VSP
POST 屏幕后在会话中看到以下内容:
error: serial port `com2' isn't found
error: terminal `serial' isn't found
error: terminal `serial' isn't found
error: no video mode activated
我们忽略了这一点(如果你知道如何摆脱它,请评论)。过了一会儿,出现了这样的情况:
GNU GRUB version 2.02~beta2-36ubuntu3.6
+----------------------------------------------------------------------------+
|*Ubuntu |
| Advanced options for Ubuntu |
| Memory test (memtest86+) |
| Memory test (memtest86+, serial console 115200) |
| |
| |
+----------------------------------------------------------------------------+
Use the and keys to select which entry is highlighted.
Press enter to boot the selected OS, `e' to edit the commands
before booting or `c' for a command-line.
这是一个正常的 GRUB 屏幕,您可以*
使用向上和向下键移动指针。
使用串口登录Ubuntu
以下内容灵感来自http://0pointer.de/blog/projects/serial-console.html
sudo cp /lib/systemd/system/[email protected] /etc/systemd/system/[email protected]
现在编辑:/etc/systemd/system/[email protected]
改变线路
ExecStart=-/sbin/agetty --keep-baud 115200,38400,9600 %I $TERM
到
ExecStart=-/sbin/agetty %I 115200 vt100-nav
我们特别关心设置模式vt100-nav
——我发现如果没有这种改变,登录就不会出现。
我不确定为什么我们ttyS1
在配置 GRUB 时必须在这里使用ttyS0
——但我在这里使用不起作用S0
。如果有人知道原因,请发表评论。
通过以下方式启动 tty:
sudo systemctl start [email protected]
您现在应该会在会话中看到登录提示VSP
。使用以下命令在启动时自动执行此操作:
sudo systemctl enable [email protected]
然后重新启动。现在您应该可以看到 中的所有输出VSP
,从 POST 到 GRUB2 再到登录提示。
答案2
从 ILO ssh 接口使用textcons
。这可能需要 ILO Advanced 许可证,但同时,获取该许可证的门槛很低。
大多数组织对虚拟串行端口的工作不感兴趣,因为它很耗时。
谷歌获得国际劳工组织 (ILO) 执照
或者获得HP 的演示许可证
或者只需支付 25 美元即可来自亚马逊的 ILO 密钥
答案3
在 RHEL7 中,“错误:未找到终端‘serial’”是由于 Anaconda 没有在 RAM 映像中放置“serial”设备驱动程序。可以使用缺少的驱动程序重建 RAM 磁盘,但 Grub 似乎在没有它的情况下也能正常运行。