Can I force ZFSBootMenu to use a specific display?

Hello, I’m wondering if there is a way to make ZFSBootMenu use a display output of my choosing, specifically the internal IPMI connected display in the SuperMicro server that makes up the backbone of my home lab.

The Situation

So this was not an issue at all until literally yesterday when I decided to add new functionality to my home lab by creating a “Game Streaming VM” with its own dedicated GPU passed through to it and an HDMI dummy plug connected so I don’t have to keep a monitor powered on in my server closet. Problem is ZFSBootMenu, and ONLY ZFSBootMenu, now insists on using that dummy plug as its display during boot. Now that’s fine so long as everything is working properly, I can enter my decryption password and select the current boot environment without seeing what I’m doing, but I just know some update or me making a typo in a critical config file will eventually break things and the best fix will be to roll back to a previous snapshot. I’m not so confident I can navigate that process without seeing what I’m doing.

I’ve already checked the UEFI settings, it’s set to prefer the onboard video at boot time and it does - I can even go into the UEFI settings to see and change whatever I want using the IPMI’s remote display. Likewise the installed Ubuntu server 24.04 shows up near instantly when the vfio-pci module takes control of the GPU in question. I just need to find a way to tell ZFSBootMenu that it also need to use that display or I’ll have to limit major updates and tinkering to times when I’m physically close enough to go and remove the dummy plug from the server.

Any help that folks could provide would be greatly appreciated!

You should be able to choose the display by adding a correct video= to the kernel command line.

DRM drivers also add options to enable or disable outputs:

‘e’ will force the display to be enabled, i.e. it will override the detection
if a display is connected. ‘D’ will force the display to be enabled and use
digital output. This is useful for outputs that have both analog and digital
signals (e.g. HDMI and DVI-I). For other outputs it behaves like ‘e’. If ‘d’
is specified the output is disabled.

You can additionally specify which output the options matches to.
To force the VGA output to be enabled and drive a specific mode say::

video=VGA-1:1280x1024@60me

Specifying the option multiple times for different ports is possible, e.g.::

video=LVDS-1:d video=HDMI-1:D

as for what the correct names are, I can’t tell.

Another way would be to use console=ttyS0,.... to make zfsbootmenu appear via the serial port.

Another way would be to add dropbear support so you can log in via SSH. ZFSBootMenu is a normal linux using a dracut initrd by default, so you can customize it to your heart’s content.

1 Like

Thanks, I’ll give that a try.

Finally got around to trying it. Had more pressing issues this past week. Didn’t work. All of the outputs I could find caused errors that rendered the system completely unbootable. Guess I have to find something else. Thanks for the attempt though.