Baseboard Management Control

Baseboard Management Control

August 21, 2022
Hardware, Networking, Linux
Gigabyte, Supermicro, ASRockRack, BIOS

Baseboard Management Controller is implemented on “enterprise” systems and along with several satellite controllers facilitates access via a platform management system. IPMI is a set of specifications for interacting with these systems. Typically the BMC provides a web interface, but there is also ipmitool which facilitates access over an ssh server running on the BMC.

There are “taps” in place to allow for serial based interaction between the BMC and the primary host metal. This facilitates a Serial over LAN (SoL) interaction that can provide console access to the BMC.

  • The host BIOS needs to be configured to allow this
  • The host operating system needs to be configured to allow this

The host boot sequence is visible/manipulable via SoL.

The host will display the boot sequence far more quickly via SoL than KVM.

We have observed that arrow key interaction between SoL and GRUB sends incorrect keys, be advised.

BIOS on Gigabyte {R152, S452, G242}, ASRockRack {ROMED8-2T} #

  • Advanced
    • Serial Port Console Redirection
      • COM1/SOL
        • Console Redirection: ENABLED
        • Console Redirection Settings:
          • Terminal Type: VT-UTF8
          • Bits Per Second: 115200
          • Data Bits: 8
          • Parity: None
          • Stop Bits: 1
          • VT-UTF8 Combo Key Support: ENABLED
          • Recorder Mode: DISABLED
          • Resolution 100x31: ENABLED
          • Putty KeyPad: LINUX

GRUB on Fedora Server #

vim /etc/default/grub

  • Change GRUB_TIMEOUT to 10 so that we have 10 seconds to interact with GRUB before it hands off
  • Remove GRUB_TERMINAL_OUTPUT
    • we will use GRUB_TERMINAL rather than _OUTPUT and _INPUT
  • Add to GRUB_CMDLINE_LINUX before quiet these arguments: console=tty0 console=ttyS0,115200n8
    • console=tty0: keeps our KVM interface functional, this is extremely important
    • console=ttyS0,115200n8: informs the Kernel of COM1/SOL (ttyS0) informs grub of the COM1/SOL interface as well as another interface
  • Add GRUB_TERMINAL="console serial"
    • Informs GRUB to listen to both the console (KVM) and Serial (SoL)
  • Add GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1"
    • Informs GRUB of the serial control parameters

An example GRUB should look something like this:

GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_CMDLINE_LINUX="rd.luks.uuid=luks-c0cb4855-b3ef-49bd-a9bd-fcc160a65dae rd.md.uuid=d4aad236:4258dbc2:31348db7:c6d40f01 rd.md.uuid=d67fb47a:8c80dce2:a171204b:3768947f rhgb console=tty0 console=ttyS0,115200n8 quiet"
GRUB_TERMINAL="console serial"
GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true

Now generate that configuration to be used during boot:

grub2-mkconfig -o /boot/grub2/grub.cfg

Interaction with BMC via ipmitool #

Most important:

ipmitool -H -U -I lanplus sol activate

This activates an SoL session. Allowing you to examine the entire boot sequence as well as interact with early boot (e.g. BIOS)

ipmitool -H -U chassis power off

This turns off the system

ipmitool -H -U chassis power cycle

This resets the system

To exit an ipmitool session hit: