I must admit that Linux administration is getting better with years. I was configuring IPMI serial console on old machines (but with recent Debian) so I decided to find out which is optimal way to configure serial console using systemd.
First, let's inspect ipmi and check it's configuration to figure out baud-rate for serial port:
root@lib10:~# ipmitool sol info 1 Info: SOL parameter 'Payload Channel (7)' not supported - defaulting to 0x01 Set in progress : set-complete Enabled : true Force Encryption : true Force Authentication : false Privilege Level : ADMINISTRATOR Character Accumulate Level (ms) : 50 Character Send Threshold : 220 Retry Count : 7 Retry Interval (ms) : 1000 Volatile Bit Rate (kbps) : 57.6 Non-Volatile Bit Rate (kbps) : 57.6 Payload Channel : 1 (0x01) Payload Port : 623Notice that there is 1 after info. This is serial port which is sol console. If you run ipmitool without this parameter or with zero, you will get error:
root@alfa:~# ipmitool sol info 0 Error requesting SOL parameter 'Set In Progress (0)': Invalid data field in requestDon't panic! There is ipmi sol console, but on ttyS1!
To configure serial console for Linux kernel we need to add something like console=ttyS1,57600 to kernel command-line in grub, and configuring correct serial port and speed:
GRUB_TERMINAL=serial GRUB_SERIAL_COMMAND="serial --speed=57600 --unit=1 --word=8 --parity=no --stop=1"All required changes to default configuration are below:
root@lib10:/etc# git diff diff --git a/default/grub b/default/grub index b8a096d..2b855fb 100644 --- a/default/grub +++ b/default/grub @@ -6,7 +6,8 @@ GRUB_DEFAULT=0 GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR=`lsb_release -i -s 2< /dev/null || echo Debian` -GRUB_CMDLINE_LINUX_DEFAULT="boot=zfs rpool=lib10 bootfs=lib10/ROOT/debian-1" +# serial console speed from ipmitool sol info 1 +GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS1,57600 root=ZFS=lib10/ROOT/debian-1" GRUB_CMDLINE_LINUX="" # Uncomment to enable BadRAM filtering, modify to suit your needs @@ -16,6 +17,8 @@ GRUB_CMDLINE_LINUX="" # Uncomment to disable graphical terminal (grub-pc only) #GRUB_TERMINAL=console +GRUB_TERMINAL=serial +GRUB_SERIAL_COMMAND="serial --speed=57600 --unit=1 --word=8 --parity=no --stop=1" # The resolution used on graphical terminal # note that you can use only modes which your graphic card supports via VBESo in the end, there is noting to configure on systemd side. If you want to know why, read man 8 systemd-getty-generator