En remplaçant mes serveurs ESXi par du Proxmox, j'ai eu l’opportunité de remplacer les I7 3700 par des ProDesk 600 G1 SFF
; pas de grosses machines, mais très économique et peu énergivore. Mais voilà, les outils de supervision bios d'HP ne fonctionnent que sous Windows… Proxmox est basé sur Debian, donc une mise à jour UEFI demande de passer par une clé usb, un clavier, un écran; et il faut refaire l'opération pour toutes les machines… très peu pour moi.
Depuis quelques temps déjà, il existe un service LVFS (Linux Vendor Firmware Service) qui reprends les firmwares des grands constructeurs utilisable via l'outils fwupdmgr
; on y trouve Lenovo, Dell, HP, mais aussi 8BitDo, Asus, Gigabyte, Logitech, MSI, SteelSeries, Corsair, etc…
Vous pouvez installer l’outil via la commande suivante:
root@pve02:~# apt install -y fwupd
On peut identifier presque tout le matériel avec cet outil:
root@pve02:~# fwupdmgr get-devices WARNING: UEFI capsule updates not available or enabled in firmware setup See https://github.com/fwupd/fwupd/wiki/PluginFlag:capsules-unsupported for more information. Hewlett-Packard HP ProDesk 600 G1 SFF │ ├─82576 Gigabit Network Connection (Gigabit ET Dual Port Server Adapter): │ Device ID: 5987c136e0024e0f45943927a31c5c4c711f3eb0 │ Current version: 01 │ Vendor: Intel Corporation (PCI:0x8086) │ GUIDs: 9d1fb2d0-98fd-5d3c-a2d8-e81fbabc1848 ← PCI\VEN_8086&DEV_10C9 │ 429919bc-c780-52db-a8c9-8b4e78c27f57 ← PCI\VEN_8086&DEV_10C9&REV_01 │ eee468fd-8ffa-5c24-9f25-718ee3d24661 ← PCI\VEN_8086&DEV_10C9&SUBSYS_8086A03C │ 2ab2bd4f-94ca-55e3-8083-cdef99661bd5 ← PCI\VEN_8086&DEV_10C9&SUBSYS_8086A03C&REV_01 │ 1fe53468-13ce-5fb5-9450-fdc61c1acae4 ← PCI\VEN_8086&DEV_8C12 │ 5dfe6cfa-c34a-525e-a6b0-66b98be62889 ← PCI\VEN_8086&DEV_8C12&REV_D4 │ ae4adb37-e961-51a0-adac-327829c24c93 ← PCI\VEN_8086&DEV_8C12&SUBSYS_103C18E7 │ 200affc8-c9ad-587a-ace3-f999b615a42d ← PCI\VEN_8086&DEV_8C12&SUBSYS_103C18E7&REV_D4 │ Device Flags: • Internal device │ • Cryptographic hash verification is available │ ├─82576 Gigabit Network Connection (Gigabit ET Dual Port Server Adapter): │ Device ID: b640caac3e7ebce3633ffc8d0f718061d1f11812 │ Current version: 01 │ Vendor: Intel Corporation (PCI:0x8086) │ GUIDs: 9d1fb2d0-98fd-5d3c-a2d8-e81fbabc1848 ← PCI\VEN_8086&DEV_10C9 │ 429919bc-c780-52db-a8c9-8b4e78c27f57 ← PCI\VEN_8086&DEV_10C9&REV_01 │ eee468fd-8ffa-5c24-9f25-718ee3d24661 ← PCI\VEN_8086&DEV_10C9&SUBSYS_8086A03C │ 2ab2bd4f-94ca-55e3-8083-cdef99661bd5 ← PCI\VEN_8086&DEV_10C9&SUBSYS_8086A03C&REV_01 │ 1fe53468-13ce-5fb5-9450-fdc61c1acae4 ← PCI\VEN_8086&DEV_8C12 │ 5dfe6cfa-c34a-525e-a6b0-66b98be62889 ← PCI\VEN_8086&DEV_8C12&REV_D4 │ ae4adb37-e961-51a0-adac-327829c24c93 ← PCI\VEN_8086&DEV_8C12&SUBSYS_103C18E7 │ 200affc8-c9ad-587a-ace3-f999b615a42d ← PCI\VEN_8086&DEV_8C12&SUBSYS_103C18E7&REV_D4 │ Device Flags: • Internal device │ • Cryptographic hash verification is available :
Malheureusement, les ProDesk 600 G1 ne font pas partie de la liste gérée par LVFS; il faudra ruser un peu.
root@pve02:~# fwupdmgr refresh WARNING: UEFI capsule updates not available or enabled in firmware setup See https://github.com/fwupd/fwupd/wiki/PluginFlag:capsules-unsupported for more information. Updating lvfs Downloading… [*********************************** ] Successfully downloaded new metadata: 0 local devices supported
Je vais devoir me passer des services de fwupdmgr
et donc ne pas l'installer sur ma production, heureusement pour identifier le matériel, nous avons d'autres options:
root@pve02:~# /usr/sbin/dmidecode | grep "Product Name" Product Name: HP ProDesk 600 G1 SFF Product Name: 18E7
Si vous êtes curieux, cet outil fournis beaucoup d'informations… mais c'est très complet.
Nous allons nous rabattre sur les outils fournis par HP pour controler nos ProDesk 600; ceux-ci sont accessble via la page HP Flash and Replicated Setup Utilities for Linux.
Ce fichier contient 2 composants importants : hpuefi-mod et hp-flash, le premier est un module, le second un outils pour flasher le bios, il y a aussi des utilitaires pour répliquer la configuration hp-repsetup.
Il faut également préparer le host pour compiler des modules kernel:
Debian Hosts
root@deb-host:~# apt install -y build-essential linux-headers-$(uname -r)
Proxmox Hosts
root@pve-host:~# apt install -y build-essential pve-headers-$(uname -r)
Sur la page de HP on récupère le lien de téléchargement (dans mon cas, c'est le sp150953.tgz), et on le décompresse :
root@pve-host:~# wget https://ftp.hp.com/pub/softpaq/sp150501-151000/sp150953.tgz --2024-08-09 23:46:43-- https://ftp.hp.com/pub/softpaq/sp150501-151000/sp150953.tgz Resolving ftp.hp.com (ftp.hp.com)... 23.61.4.71, 2a02:a000:1:38e::a82, 2a02:a000:1:38a::a82 Connecting to ftp.hp.com (ftp.hp.com)|23.61.4.71|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 502203 (490K) [text/plain] Saving to: ‘sp150953.tgz' sp150953.tgz 100%[===============================================================>] 490.43K --.-KB/s in 0.01s 2024-08-09 23:46:44 (17.41 MB/s) - ‘sp150953.tgz’ saved [502203/502203] root@pve-host:~# tar xzf sp150953.tgz
comme nous sommes sous Debian, il faudra compiler a partir des sources non-rpms
:
root@pve-host:~# cd non-rpms root@pve-host:non-rpms# tar xzf hpuefi-mod-VER.tgz root@pve-host:non-rpms# mv hpuefi-mod-x.xx hpuefi root@pve-host:non-rpms# cd hpuefi
Il nous faut compiler le module:
root@pve-host:non-rpms/hpuefi# make make -C /lib/modules/6.8.8-4-pve/build M=/root/hpfwtools/non-rpms/hpuefi-mod-3.05 modules make[1]: Entering directory '/usr/src/linux-headers-6.8.8-4-pve' CC [M] /root/hpfwtools/non-rpms/hpuefi-mod-3.05/hpuefi.o /root/hpfwtools/non-rpms/hpuefi-mod-3.05/hpuefi.c:104:14: warning: no previous prototype for ‘DoSwSmi’ [-Wmissing-prototypes] 104 | unsigned int DoSwSmi(const unsigned short AxFunction, const unsigned short DxSmiCmdPort, const unsigned int EdiBufferPhysicalAddress) | ^~~~~~~ /root/hpfwtools/non-rpms/hpuefi-mod-3.05/hpuefi.c:134:6: warning: no previous prototype for ‘SetPhysBuffer’ [-Wmissing-prototypes] 134 | void SetPhysBuffer(const unsigned int PhysicalAddress) { | ^~~~~~~~~~~~~ MODPOST /root/hpfwtools/non-rpms/hpuefi-mod-3.05/Module.symvers CC [M] /root/hpfwtools/non-rpms/hpuefi-mod-3.05/hpuefi.mod.o LD [M] /root/hpfwtools/non-rpms/hpuefi-mod-3.05/hpuefi.ko BTF [M] /root/hpfwtools/non-rpms/hpuefi-mod-3.05/hpuefi.ko Skipping BTF generation for /root/hpfwtools/non-rpms/hpuefi-mod-3.05/hpuefi.ko due to unavailability of vmlinux make[1]: Leaving directory '/usr/src/linux-headers-6.8.8-4-pve'
et installer le module:
root@pve-host:non-rpms/hpuefi# sudo make install install -D -m 0644 hpuefi.ko /lib/modules/6.8.8-4-pve/kernel/drivers/hpuefi/hpuefi.ko depmod install -D -m 0744 mkdevhpuefi /lib/modules/6.8.8-4-pve/kernel/drivers/hpuefi