HP iLO: How to fix "Monitor is in graphics mode or an unsupported text mode."?

When I use the iLO functionality of my HP server that allows me to SSH into the iLO IP address and run TEXTCONS to display the monitor output as a text.

However, on boot, after a few initial kernel/startup messages, switches to only showing:

Monitor is in graphics mode or an unsupported text mode.

How can I fix it?


Solution

For Linux:

Add the vga=normal nomodeset kernel boot parameters.

You can add them via your bootloader (e.g. GRUB2) configuration to persist them, or in e.g. GRUB2 press e on the menu entry and add them at the end of the linux line to apply them to a single boot.

For GRUB2:

Use the /etc/default/grub setting GRUB_TERMINAL="console" (see manual).

This prevents GRUB2 to go into graphical VGA mode (the one that allows it to e.g. display a logo at the top), and forces it to display its menu in the classical console fashion instead.

If you do not use /etc/default/grub but use GRUB2 commands instead (e.g. if you generate grub.cfg itself, like NixOS does), you can use the commands that GRUB_TERMINAL generates for you directly:

terminal_output console
terminal_input console

(Side note: You can also enable the serial console and afterwards use GRUB_TERMINAL="console serial" to make it work in the iLO's VSP mode in addition; for more on that, see my VSP answer.)

Explanation

TEXTCONS only supports a standard VGA terminal.

Details:

  • vga=normal because TEXTCONS does apparently not support extended VGA modes (which allow more than 80x25 characters).

    GRUB2 will print something about vga=normal being deprecated, but that is just its own opinion, Linux did not deprecate the boot option.

  • nomodeset to prevent the kernel to do the "kernel mode switch" that gives modern computers pretty higher-resolution virtual terminals.

This is also explained at https://support.hpe.com/hpesc/public/docDisplay?docId=c02700808&docLocale=en_US. I don't know what the 3 in nomodeset 3 shown there at the end of the kernel parameters means, but it seems it is unnecessary.