Ceci est une ancienne révision du document !
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:
<cli bash> root@pve02:~# apt install -y fwupd </cli>
On peut identifier presque tout le matériel avec cet outil:
<cli bash> 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 : </cli>
Malheureusement, les ProDesk 600 G1 ne font pas partie de la liste gérée par LVFS; il faudra ruser un peu.
<cli bash>
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
</cli>
===== Identification du matériel =====
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:
<cli bash>
root@pve02:~# /usr/sbin/dmidecode | grep “Product Name”
Product Name: HP ProDesk 600 G1 SFF
Product Name: 18E7
</cli>
Si vous êtes curieux, cet outil fournis beaucoup d'informations… mais c'est très complet.
===== Installation des outils HP =====
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
<cli bash>
root@deb-host:~# apt install -y build-essential linux-headers-$(uname -r)
</cli>
Proxmox Hosts
<cli bash>
root@pve-host:~# apt install -y build-essential pve-headers-$(uname -r)
</cli>
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 :
<cli bash>
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
</cli>
comme nous sommes sous Debian**, il faudra compiler a partir des sources non-rpms
:
<cli bash>
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
</cli>
Il ne nous faut compiler le module: <cli bash> 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' </cli>
et installer le module:
<cli bash> 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 </cli>