Skip to content

Commit 16b31cc

Browse files
Alexander ZeidlerThomasLamprecht
Alexander Zeidler
authored andcommitted
sysadmin: add section 'Firmware Updates' and references
Firmware updates are important, their existence should not be checked only when there are already noticeable problems. Signed-off-by: Alexander Zeidler <[email protected]> Reviewed-by: Dominik Csapak <[email protected]>
1 parent 82551b2 commit 16b31cc

File tree

4 files changed

+120
-9
lines changed

4 files changed

+120
-9
lines changed

firmware-updates.adoc

+106
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
[[chapter_firmware_updates]]
2+
Firmware Updates
3+
----------------
4+
ifdef::wiki[]
5+
:pve-toplevel:
6+
endif::wiki[]
7+
8+
Firmware updates from this chapter should be applied when running {pve} on a
9+
bare-metal server. Whether configuring firmware updates is appropriate within
10+
guests, e.g. when using device pass-through, depends strongly on your setup and
11+
is therefore out of scope.
12+
13+
Regular firmware updates for devices are just as important for proper operation
14+
as regular software updates. There are several ways to obtain and apply those
15+
updates. The methods listed in this chapter can also be combined to minimize the
16+
chance of missing an important update.
17+
18+
TIP: When a firmware was updated, a system reboot is the safest way to apply the
19+
new version.
20+
21+
22+
[[sysadmin_firmware_persistent]]
23+
Persistent Firmware
24+
~~~~~~~~~~~~~~~~~~~
25+
The following methods write the new firmware permanently to the respective
26+
device. The firmware therefore remains up to date regardless of the booted
27+
operating system.
28+
29+
TIP: When using a user space application or 'fwupd', the hardware must usually
30+
have been manufactured after 2014, the system must have been booted with UEFI
31+
and the EFI partition manually mounted.
32+
33+
CAUTION: When updating the BIOS/UEFI itself, its settings are usually reset. Be
34+
prepared to reconfigure them afterwards.
35+
36+
37+
[[sysadmin_firmware_persistent_vendor_specific]]
38+
Vendor-specific
39+
^^^^^^^^^^^^^^^
40+
Firmware updates are usually available from the vendor directly. Please check
41+
with your vendor what options are available.
42+
43+
Depending on the platform and vendor, there are convenient methods available.
44+
For servers, for example, Dell's Lifecycle Manager or Service Packs from HPE.
45+
Sometimes there are Linux utilities available as well. Examples are
46+
https://network.nvidia.com/support/firmware/mlxup-mft/['mlxup'] for NVIDIA
47+
ConnectX or
48+
https://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']
49+
for Broadcom network cards.
50+
51+
52+
[[sysadmin_firmware_persistent_lvfs_fwupd]]
53+
Linux Vendor Firmware Service (LVFS) via fwupd
54+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
55+
On https://fwupd.org['LVFS'], vendors can make their firmware updates available
56+
in a standardized way to a wide range of Linux hosts. Here is the growing list
57+
of participating https://fwupd.org/lvfs/vendors/[vendors] and their currently
58+
supported https://fwupd.org/lvfs/devices/[devices].
59+
60+
To use 'fwupd', manually mount your
61+
https://pve.proxmox.com/pve-docs/pve-admin-guide.html#sysboot_installer_part_scheme[EFI System Partition]
62+
(ESP) you booted from on `/boot/`. After installing the package 'fwupd', update
63+
firmware with the following commands:
64+
----
65+
# fwupdmgr refresh
66+
# fwupdmgr get-updates
67+
# fwupdmgr update
68+
# reboot
69+
----
70+
71+
72+
[[sysadmin_firmware_runtime_files]]
73+
Runtime Firmware Files
74+
~~~~~~~~~~~~~~~~~~~~~~
75+
The following methods keep the firmware files available at the {pve} host and do
76+
not persist it on the device itself. Whenever a device is initialized, usually
77+
during the boot process, the corresponding firmware is loaded into the RAM of
78+
the respective device. These methods do not provide and can not update firmware
79+
that is used in the very early boot process (e.g. BIOS/UEFI, hard disks).
80+
81+
In {pve} the package `pve-firmware` is already installed by default. Therefore,
82+
with the normal system updates (APT), the included firmware of common hardware
83+
is automatically kept up to date. Be aware that CPU microcode updates are
84+
located in a separate Debian repository component, which is not configured by
85+
default.
86+
87+
88+
[[sysadmin_firmware_runtime_files_debian_repo]]
89+
Debian Firmware Repository
90+
^^^^^^^^^^^^^^^^^^^^^^^^^^
91+
Starting with Debian Bookworm ({pve} 8) non-free firmware (as defined by
92+
https://www.debian.org/social_contract#guidelines[DFSG]) has been moved to the
93+
newly created Debian repository component `non-free-firmware`. It contains
94+
firmware for CPUs (called microcode) as well as other firmware. In the past,
95+
CPUs repeatedly had security vulnerabilities beside other issues. Using this
96+
update method (additional) to apply microcode updates is convenient, safe and
97+
fast.
98+
99+
To be able to install microcode updates or other firmware from the
100+
`non-free-firmware` component, edit the file `/etc/apt/sources.list`, append
101+
`non-free-firmware` to the end of each of the three Debian repository lines and
102+
run `apt-get update`.
103+
104+
To keep the CPU microcode up to date, depending on the vendor, install the
105+
package `intel-microcode` or `amd64-microcode` and reboot your {pve} host
106+
afterwards.

local-lvm.adoc

+3-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,9 @@ Bootloader
6464

6565
We install two boot loaders by default. The first partition contains
6666
the standard GRUB boot loader. The second partition is an **E**FI **S**ystem
67-
**P**artition (ESP), which makes it possible to boot on EFI systems.
67+
**P**artition (ESP), which makes it possible to boot on EFI systems and to
68+
apply xref:sysadmin_firmware_persistent[persistent firmware updates] from the
69+
user space.
6870

6971

7072
Creating a Volume Group

qm.adoc

+7-8
Original file line numberDiff line numberDiff line change
@@ -352,9 +352,9 @@ CPU Type
352352

353353
QEMU can emulate a number different of *CPU types* from 486 to the latest Xeon
354354
processors. Each new processor generation adds new features, like hardware
355-
assisted 3d rendering, random number generation, memory protection, etc.. Also,
356-
a current generation can be upgraded through microcode update with bug or
357-
security fixes.
355+
assisted 3d rendering, random number generation, memory protection, etc. Also,
356+
a current generation can be upgraded through
357+
xref:chapter_firmware_updates[microcode update] with bug or security fixes.
358358

359359
Usually you should select for your VM a processor type which closely matches the
360360
CPU of the host system, as it means that the host CPU features (also called _CPU
@@ -460,10 +460,9 @@ editing the CPU options in the WebUI, or by setting the 'flags' property of the
460460
'cpu' option in the VM configuration file.
461461

462462
For Spectre v1,v2,v4 fixes, your CPU or system vendor also needs to provide a
463-
so-called ``microcode update'' footnote:[You can use `intel-microcode' /
464-
`amd-microcode' from Debian non-free if your vendor does not provide such an
465-
update. Note that not all affected CPUs can be updated to support spec-ctrl.]
466-
for your CPU.
463+
so-called ``microcode update'' for your CPU, see
464+
xref:chapter_firmware_updates[chapter Firmware Updates]. Note that not all
465+
affected CPUs can be updated to support spec-ctrl.
467466

468467

469468
To check if the {pve} host is vulnerable, execute the following command as root:
@@ -472,7 +471,7 @@ To check if the {pve} host is vulnerable, execute the following command as root:
472471
for f in /sys/devices/system/cpu/vulnerabilities/*; do echo "${f##*/} -" $(cat "$f"); done
473472
----
474473

475-
A community script is also available to detect is the host is still vulnerable.
474+
A community script is also available to detect if the host is still vulnerable.
476475
footnote:[spectre-meltdown-checker https://meltdown.ovh/]
477476

478477
Intel processors

sysadmin.adoc

+4
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ See Also
3232
3333
* link:/wiki/System_Software_Updates[System Software Updates]
3434
35+
* link:/wiki/Firmware_Updates[Firmware Updates]
36+
3537
* link:/wiki/Host_Bootloader[Host Bootloader]
3638
3739
* link:/wiki/Time_Synchronization[Time Synchronization]
@@ -59,6 +61,8 @@ include::pve-package-repos.adoc[]
5961
6062
include::system-software-updates.adoc[]
6163
64+
include::firmware-updates.adoc[]
65+
6266
include::pve-network.adoc[]
6367
6468
include::system-timesync.adoc[]

0 commit comments

Comments
 (0)