]> git.proxmox.com Git - pve-docs.git/blame - firmware-updates.adoc
fix #5429: network: override device names: include Type=ether
[pve-docs.git] / firmware-updates.adoc
CommitLineData
16b31cc9
AZ
1[[chapter_firmware_updates]]
2Firmware Updates
3----------------
4ifdef::wiki[]
5:pve-toplevel:
6endif::wiki[]
16b31cc9
AZ
7Firmware updates from this chapter should be applied when running {pve} on a
8bare-metal server. Whether configuring firmware updates is appropriate within
9guests, e.g. when using device pass-through, depends strongly on your setup and
10is therefore out of scope.
11
48ae5721
AZ
12In addition to regular software updates, firmware updates are also important
13for reliable and secure operation.
14
15When obtaining and applying firmware updates, a combination of available options
16is recommended to get them as early as possible or at all.
16b31cc9 17
48ae5721
AZ
18The term firmware is usually divided linguistically into microcode (for CPUs)
19and firmware (for other devices).
16b31cc9
AZ
20
21
22[[sysadmin_firmware_persistent]]
23Persistent Firmware
24~~~~~~~~~~~~~~~~~~~
48ae5721
AZ
25This section is suitable for all devices. Updated microcode, which is usually
26included in a BIOS/UEFI update, is stored on the motherboard, whereas other
27firmware is stored on the respective device. This persistent method is
28especially important for the CPU, as it enables the earliest possible regular
29loading of the updated microcode at boot time.
16b31cc9 30
48ae5721
AZ
31CAUTION: With some updates, such as for BIOS/UEFI or storage controller, the
32device configuration could be reset. Please follow the vendor's instructions
33carefully and back up the current configuration.
16b31cc9 34
48ae5721 35Please check with your vendor which update methods are available.
16b31cc9 36
48ae5721
AZ
37* Convenient update methods for servers can include Dell's Lifecycle Manager or
38Service Packs from HPE.
16b31cc9 39
48ae5721 40* Sometimes there are Linux utilities available as well. Examples are
16b31cc9
AZ
41https://network.nvidia.com/support/firmware/mlxup-mft/['mlxup'] for NVIDIA
42ConnectX or
43https://techdocs.broadcom.com/us/en/storage-and-ethernet-connectivity/ethernet-nic-controllers/bcm957xxx/adapters/software-installation/updating-the-firmware/manually-updating-the-adapter-firmware-on-linuxesx.html['bnxtnvm'/'niccli']
44for Broadcom network cards.
45
905fff49
SI
46* https://fwupd.org[LVFS] is also an option if there is a cooperation with
47the https://fwupd.org/lvfs/vendors/[hardware vendor] and
48ae5721 48https://fwupd.org/lvfs/devices/[supported hardware] in use. The technical
905fff49
SI
49requirement for this is that the system was manufactured after 2014 and is
50booted via UEFI.
51
a3806d64 52{pve} ships its own version of the `fwupd` package to enable Secure Boot
62ef2acb 53Support with the Proxmox signing key. This package consciously dropped the
a3806d64
TL
54dependency recommendation for the `udisks2` package, due to observed issues with
55its use on hypervisors. That means you must explicitly configure the correct
56mount point of the EFI partition in `/etc/fwupd/daemon.conf`, for example:
905fff49
SI
57
58.File `/etc/fwupd/daemon.conf`
59----
60# Override the location used for the EFI system partition (ESP) path.
61EspLocation=/boot/efi
62----
16b31cc9 63
48ae5721
AZ
64TIP: If the update instructions require a host reboot, make sure that it can be
65done safely. See also xref:ha_manager_node_maintenance[Node Maintenance].
16b31cc9
AZ
66
67
68[[sysadmin_firmware_runtime_files]]
69Runtime Firmware Files
70~~~~~~~~~~~~~~~~~~~~~~
48ae5721
AZ
71This method stores firmware on the {pve} operating system and will pass it to a
72device if its xref:sysadmin_firmware_persistent[persisted firmware] is less
73recent. It is supported by devices such as network and graphics cards, but not
74by those that rely on persisted firmware such as the motherboard and hard disks.
16b31cc9
AZ
75
76In {pve} the package `pve-firmware` is already installed by default. Therefore,
48ae5721
AZ
77with the normal xref:system_software_updates[system updates (APT)], included
78firmware of common hardware is automatically kept up to date.
79
80An additional xref:sysadmin_debian_firmware_repo[Debian Firmware Repository]
81exists, but is not configured by default.
82
83If you try to install an additional firmware package but it conflicts, APT will
84abort the installation. Perhaps the particular firmware can be obtained in
85another way.
86
87
88[[sysadmin_firmware_cpu]]
89CPU Microcode Updates
90~~~~~~~~~~~~~~~~~~~~~
91Microcode updates are intended to fix found security vulnerabilities and other
92serious CPU bugs. While the CPU performance can be affected, a patched microcode
93is usually still more performant than an unpatched microcode where the kernel
94itself has to do mitigations. Depending on the CPU type, it is possible that
95performance results of the flawed factory state can no longer be achieved
96without knowingly running the CPU in an unsafe state.
97
98To get an overview of present CPU vulnerabilities and their mitigations, run
99`lscpu`. Current real-world known vulnerabilities can only show up if the
100{pve} host is xref:system_software_updates[up to date], its version not
101xref:faq-support-table[end of life], and has at least been rebooted since the
102last kernel update.
103
104Besides the recommended microcode update via
105xref:sysadmin_firmware_persistent[persistent] BIOS/UEFI updates, there is also
106an independent method via *Early OS Microcode Updates*. It is convenient to use
107and also quite helpful when the motherboard vendor no longer provides BIOS/UEFI
108updates. Regardless of the method in use, a reboot is always needed to apply a
109microcode update.
110
111
112Set up Early OS Microcode Updates
113^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
113290b8
TL
114To set up microcode updates that are applied early on boot by the Linux kernel,
115you need to:
116
117. Enable the xref:sysadmin_debian_firmware_repo[Debian Firmware Repository]
118. Get the latest available packages `apt update` (or use the web interface,
119 under Node -> Updates)
120. Install the CPU-vendor specific microcode package:
121 - For Intel CPUs: `apt install intel-microcode`
122 - For AMD CPUs: `apt install amd64-microcode`
123. Reboot the {pve} host
124
125Any future microcode update will also require a reboot to be loaded.
48ae5721
AZ
126
127Microcode Version
128^^^^^^^^^^^^^^^^^
129To get the current running microcode revision for comparison or debugging
130purposes:
131
132----
133# grep microcode /proc/cpuinfo | uniq
134microcode : 0xf0
135----
136
8bad0dea
TL
137A microcode package has updates for many different CPUs. But updates
138specifically for your CPU might not come often. So, just looking at the date on
139the package won't tell you when the company actually released an update for your
140specific CPU.
141
142If you've installed a new microcode package and rebooted your {pve} host, and
143this new microcode is newer than both, the version baked into the CPU and the
144one from the motherboard's firmware, you'll see a message in the system log
145saying "microcode updated early".
48ae5721
AZ
146
147----
148# dmesg | grep microcode
149[ 0.000000] microcode: microcode updated early to revision 0xf0, date = 2021-11-12
150[ 0.896580] microcode: Microcode Update Driver: v2.2.
151----
152
153
154[[sysadmin_firmware_troubleshooting]]
155Troubleshooting
156^^^^^^^^^^^^^^^
157For debugging purposes, the set up Early OS Microcode Update applied regularly
158at system boot can be temporarily disabled as follows:
159
1601. make sure that the host can be rebooted xref:ha_manager_node_maintenance[safely]
1612. reboot the host to get to the GRUB menu (hold `SHIFT` if it is hidden)
1623. at the desired {pve} boot entry press `E`
1634. go to the line which starts with `linux` and append separated by a space
164*`dis_ucode_ldr`*
1655. press `CTRL-X` to boot this time without an Early OS Microcode Update
166
167If a problem related to a recent microcode update is suspected, a package
168downgrade should be considered instead of package removal
169(`apt purge <intel-microcode|amd64-microcode>`). Otherwise, a too old
170xref:sysadmin_firmware_persistent[persisted] microcode might be loaded, even
171though a more recent one would run without problems.
172
173A downgrade is possible if an earlier microcode package version is
174available in the Debian repository, as shown in this example:
175
176----
177# apt list -a intel-microcode
178Listing... Done
179intel-microcode/stable-security,now 3.20230808.1~deb12u1 amd64 [installed]
180intel-microcode/stable 3.20230512.1 amd64
181----
182----
183# apt install intel-microcode=3.202305*
184...
185Selected version '3.20230512.1' (Debian:12.1/stable [amd64]) for 'intel-microcode'
186...
187dpkg: warning: downgrading intel-microcode from 3.20230808.1~deb12u1 to 3.20230512.1
188...
189intel-microcode: microcode will be updated at next boot
190...
191----
192
193Make sure (again) that the host can be rebooted
194xref:ha_manager_node_maintenance[safely]. To apply an older microcode
195potentially included in the microcode package for your CPU type, reboot now.
196
197[TIP]
198====
199It makes sense to hold the downgraded package for a while and try more recent
200versions again at a later time. Even if the package version is the same in the
201future, system updates may have fixed the experienced problem in the meantime.
202----
203# apt-mark hold intel-microcode
204intel-microcode set on hold.
205----
206----
207# apt-mark unhold intel-microcode
208# apt update
209# apt upgrade
210----
211====