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 than80x25
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.