跳到主要內容
節省工具箱Jason Tools
技術文章

BMC Serial over LAN 與 BIOS Console Redirection 設定

Jason Cheng 發布 瀏覽 2 次
BMC Serial over LAN 與 BIOS Console Redirection 設定
本文目錄
  1. SOL 運作方式
  2. 各品牌的虛擬序列埠
  3. BIOS 設定
  4. 作業系統設定(以 Proxmox VE/Debian 為例)
  5. 連線測試
  6. jt-ipam 的 BMC SOL 連線管理
  7. 常見問題
  8. 結論
  9. 參考資料

伺服器的 BMC(Supermicro IPMI、Dell iDRAC、HPE iLO、Lenovo XCC)大家多半用過網頁版的 KVM 遠端畫面。但 KVM 要開 Java 或 HTML5 視窗、畫面是圖片,不能複製貼上,網路差一點就卡。

其實 BMC 還有一個更輕量的功能:Serial over LAN(SOL)。它把伺服器的序列埠輸出經由網路轉給你,用 SSH 或 ipmitool 就能看到純文字的開機過程、BIOS 設定畫面與作業系統登入畫面,文字還能直接複製。

jt-ipam 的 BMC SOL 連線管理,在網頁上直接開啟伺服器的序列主控台,用的就是這個功能。但 SOL 不是 BMC 開了就會動,BIOS 與作業系統都要設定 Console Redirection,這篇就整理不同品牌的設定方式。

SOL 運作方式

BMC 會模擬一個虛擬序列埠給伺服器使用。BIOS 與作業系統把文字輸出送到這個序列埠,BMC 再把它經由網路轉給連線的人,可以參考下圖。

BMC Serial over LAN 運作方式
BMC Serial over LAN 運作方式

所以要完整看到開機全程,有三層要設定:

層級設定內容沒設定的結果
BIOSConsole Redirection 啟用 SOL 對應的序列埠看不到 POST 與 BIOS 設定畫面
開機載入程式GRUB 輸出到序列埠看不到 GRUB 選單,無法選核心
作業系統核心參數 console=ttyS1、序列埠登入開機訊息與登入畫面都看不到

序列埠的參數三層要一致,目前最常用的是 115200 bps、8 個資料位元、無同位元、1 個停止位元、無流量控制(簡寫為 115200 8N1)。

各品牌的虛擬序列埠

不同品牌的 BMC 名稱不一樣,但大多是把 SOL 接在 COM2,在 Linux 中對應 ttyS1:

品牌BMCSOL 名稱常見序列埠
SupermicroIPMISOLCOM2(ttyS1),部分機種為 ttyS2
DelliDRACSerial over LANCOM2(ttyS1)
HPEiLOVirtual Serial Port(VSP)COM2(ttyS1)
LenovoXClarity Controller(XCC)Serial over LAN依機種,常見 COM1 或 COM2

注意:序列埠對應會因機種與 BIOS 版本而不同,Supermicro 官方 FAQ 就有 SOL 被配置在 I/O 位址 0x3E8、要改用 ttyS2 的例子。設定完看不到畫面時,先到 BIOS 確認 SOL 用的是哪個序列埠與 I/O 位址。

BIOS 設定

Supermicro

開機時按 Del 進入 BIOS,到 Advanced → Serial Port Console Redirection。

  • COM1 → Console Redirection:Disabled,SOL 用不到 COM1
  • SOL → Console Redirection:Enabled,這就是 BMC SOL 用的序列埠
  • Legacy Console Redirection:只影響傳統(CSM)開機模式,UEFI 開機的系統不用管
  • EMS Console Redirection:Windows 緊急管理服務用的,一般不用開

接著進入 SOL 的 Console Redirection Settings:

Supermicro SOL Console Redirection Settings
Supermicro SOL Console Redirection Settings(依實際畫面重繪的示意圖)
項目建議值說明
Terminal TypeVT100+支援顏色與功能鍵;不要選 VT-UTF8,BIOS 畫面會出現亂碼符號
Bits per second115200要與作業系統設定一致
Data Bits8
ParityNone
Stop Bits1
Flow ControlNone
Redirection After BIOS POSTAlways EnablePOST 之後也持續重導,GRUB 才看得到

按 F4 儲存並重新開機。

Dell iDRAC

開機時按 F2 進入 System Setup,或直接在 iDRAC 網頁的 BIOS 設定中調整 Serial Communication:

  • Serial Communication:On with Console Redirection via COM2
  • Serial Port Address:Serial Device1=COM1, Serial Device2=COM2
  • External Serial Connector:Serial Device1
  • Redirection After Boot:Enabled
  • Failsafe Baud Rate:115200

從 iDRAC 網頁修改 BIOS 設定時,要重新開機才會套用。連線時以 SSH 登入 iDRAC,輸入 console com2 即可開啟 SOL。

HPE iLO

開機時按 F9 進入 System Utilities,到 System Configuration → BIOS/Platform Configuration(RBSU)→ System Options → Serial Port Options:

  • Virtual Serial Port:COM 2
  • BIOS Serial Console and EMS → BIOS Serial Console Port:Virtual Serial Port
  • BIOS Serial Console Baud Rate:115200

連線時以 SSH 登入 iLO,輸入 vsp 即可開啟虛擬序列埠,按 Esc 再按 ( 離開。

Lenovo XClarity Controller

開機時按 F1 進入 UEFI Setup,到 System Settings → Devices and I/O Ports → Console Redirection Settings:

  • Console Redirection:Enabled(新版有 Auto,偵測到 SOL 連線時自動啟用)
  • Serial Port Sharing:Enabled,讓 BMC 可以控制序列埠
  • COM Port 1 Settings:115200、8N1
  • COM Port Active After Boot:Enabled

另外要確認 XCC 已啟用 IPMI over LAN。各世代 UEFI 的選單名稱有差異,請以該機種的 UEFI 說明文件為準。

作業系統設定(以 Proxmox VE/Debian 為例)

BIOS 設好之後,只看得到 POST 與 BIOS 畫面,作業系統開機後就沒有畫面了,因為 Linux 預設只輸出到螢幕。

編輯 /etc/default/grub,加入序列埠輸出(以 ttyS1 為例,請依實際序列埠調整):

GRUB_CMDLINE_LINUX_DEFAULT="quiet console=tty0 console=ttyS1,115200n8"
GRUB_TERMINAL="console serial"
GRUB_SERIAL_COMMAND="serial --unit=1 --speed=115200 --word=8 --parity=no --stop=1"
  • console=tty0 console=ttyS1,115200n8:核心訊息同時輸出到螢幕與序列埠,最後一個是主要主控台
  • GRUB_TERMINAL="console serial":GRUB 選單同時顯示在螢幕與序列埠
  • --unit=1:對應 ttyS1,ttyS2 就改成 --unit=2

套用設定:

update-grub

ZFS 開機的 PVE 使用 systemd-boot 時,要改 /etc/kernel/cmdline,在同一行加上 console=tty0 console=ttyS1,115200n8,再執行:

proxmox-boot-tool refresh

啟用序列埠登入畫面:

systemctl enable --now serial-getty@ttyS1.service

重新開機後,從 POST、BIOS、GRUB 到登入畫面都會出現在 SOL 上。

連線測試

用 ipmitool 從管理端連線:

ipmitool -I lanplus -H 192.168.1.100 -U admin -P your-password sol activate

離開 SOL 連線,輸入 ~.(波浪號加句點)。如果上次連線沒有正常結束,出現「SOL session already active」,先強制中斷:

ipmitool -I lanplus -H 192.168.1.100 -U admin -P your-password sol deactivate

注意:出現「SOL payload disabled」時,代表該帳號沒有 SOL 權限,要在 BMC 上替帳號啟用 SOL。

jt-ipam 的 BMC SOL 連線管理

設定完成後,就可以在 jt-ipam 的 IP 頁面直接開啟 BMC SOL 主控台,不用另外開終端機輸入 ipmitool 指令,連線記錄也會留在稽核記錄裡。

如果 jt-ipam 連上之後畫面一片空白,大多是 BIOS 或作業系統的 Console Redirection 沒有設定,回頭照上面的步驟檢查即可。

常見問題

狀況可能原因
只看得到 BIOS,作業系統開機後就沒畫面作業系統沒有設定 console=ttyS1
看得到開機訊息,但沒有登入畫面沒有啟用 serial-getty@ttyS1
完全沒有畫面序列埠對應錯誤(ttyS1/ttyS2),或 BIOS 沒啟用 SOL 的 Console Redirection
BIOS 畫面出現亂碼符號Terminal Type 選了 VT-UTF8,改成 VT100+
畫面出現亂碼字元兩端的 baud rate 不一致
GRUB 選單看不到Redirection After BIOS POST 沒有啟用,或 GRUB 沒有設定序列埠輸出

結論

SOL 是 BMC 裡很容易被忽略的功能,但它比 KVM 輕量得多:純文字、可以複製貼上、網路差也不太會卡,用來處理開機失敗、調整 BIOS、或是作業系統網路斷掉時的緊急登入都很好用。

設定的重點只有一個:BIOS、開機載入程式、作業系統三層都要把輸出導到同一個序列埠,參數也要一致。設定一次,之後不管是 ipmitool 還是 jt-ipam 的 BMC SOL 連線,都能直接使用。

參考資料

Jason Cheng

Jason Cheng

企業開源技術顧問,專注架構規劃與實務導入

關於作者 →

延伸閱讀