Fixing "kernel EDID has corrupt header" in Proxmox 8 and NixOS
Since fairly recently my Proxmox install has shown an almost barf inducing amount of errors along the lines of edid block 0 is all zeroes
or kernel EDID has corrupt header
. The issue is present on at least Promox 8.1.5 running kernel Linux 6.5.13-3-pve
.
Thanks for the fix goes to a couple of threads here and here.
Some folks suggested disabling AST graphics, or blacklisting the i915 driver - this had no effect on my ASRock Rack E3C246D4U motherboard with i5 8500 CPU.
This is a vanilla install of Proxmox 8 straight from the ISO with almost no customisation and booted via EFI. If this is you, you can assume that you're using systemd-boot, and not grub. You will therefore need to modify /etc/kernel/cmdline
by appending something like the following to the file.
root=ZFS=rpool/ROOT/pve-1 boot=zfs i915.fastboot=1 drm.edid_firmware=edid/1920x1080.bin
Note that this must all be on one line, with no random spaces. You may choose whatever resolution makes you most happy. I did 1080p as this box is hooked into a PiKVM.
Now perform an initramfs rebuild and reboot after it is done.
update-initramfs -u -k all && pve-efiboot-tool refresh
To verify the parameters applied at boot use
# cat /proc/cmdline
initrd=\EFI\proxmox\6.5.13-3-pve\initrd.img-6.5.13-3-pve root=ZFS=rpool/ROOT/pve-1 boot=zfs i915.fastboot=1 drm.edid_firmware=edid/1920x1080.bin
That should be that for Proxmox.
NixOS
Same idea applies to NixOS but all you need specify in your configuration.nix
file is boot.kernelParams = ["i915.fastboot=1" "drm.edid_firmware=edid/1280x1024.bin"];
. Followed of course with nixos-rebuild switch
and a reboot to apply.
Full example here.