fwupd (Polski)
fwupd to prosty demon pozwalający oprogramowaniu sesyjnemu na zaktualizowanie oprogramowania układowego na twojej lokalnej maszynie. Został on zaprojektowany dla komputerów stacjonarnych, można go również używać na telefonach oraz serwerach bez ekranów.
Lista wspieranych urządzeń znajduje się tutaj, ponadto ma pojawić się ich więcej.
Instalacja
Zainstaluj pakiet fwupd.
Zobacz #Konfiguracja dla aktualizacji UEFI jeżeli planujesz takie użycie.
Interfejsy graficzne
Niektóre środowiska pulpitowe zawierają interfejsy graficzne z wbudowanym wsparciem dla fwupd:
- GNOME Software — Będzie okresowo sprawdzać dostępność aktualizacji i automatycznie pobierać oprogramowanie sprzętowe w tle w GNOME. Po pobraniu oprogramowania układowego w GNOME Software zostanie wyświetlone wyskakujące okienko, aby wykonać aktualizację.
- KDE Discover — Centrum oprogramowania używane z Plasma. Wraz z wydaniem KDE Plasma 5.14, nowy backend fwupd został zaimplementowany w KDE Discover dla aktualizacji firmware. Te aktualizacje oprogramowania sprzętowego są wyświetlane wraz z innymi aktualizacjami systemu.
- GNOME Firmware — Aplikacja do aktualizacji, obniżania wersji i ponownej instalacji oprogramowania sprzętowego na urządzeniach obsługiwanych przez fwupd. Może odblokować zablokowane urządzenia fwupd, zweryfikować oprogramowanie układowe na obsługiwanych urządzeniach i wyświetlić wszystkie wersje dla urządzenia fwupd.
Użycie
Ten pakiet dostarcza jednostkę fwupd.service
, która będzie automatycznie uruchamiała demona fwupd, gdy otrzyma ona pierwsze zapytanie. [1]
Aby wyświetlić wszystkie urządzenia wykryte przez fwupd:
$ fwupdmgr get-devices
Aby pobrać najnowsze metadata z LVFS:
$ fwupdmgr refresh
Aby pokazać aktualizacje dostępne dla urządzeń w systemie:
$ fwupdmgr get-updates
Aby zainstalować aktualizacje:
$ fwupdmgr update
- Aktualizacje, które mogą zostać zaaplikowane na żywo, zostaną wykonane natychmiastowo.
- Aktualizacje, które muszą zostać wykonane przy starcie, zostaną zaplanowane na następne uruchomienie systemu.
- Użytkownik root może być wymagany do wykonania poszczególnych aktualizacji.
Konfiguracja dla aktualizacji UEFI
Następujące wymagania powinny być spełnione:
- Upewnij się, że system został uruchomiony w trybie UEFI, ponieważ aktualizacja nie jest możliwa w starszym trybie bootowania.
- Zweryfikuj czy dostęp do zmiennych EFI jest możliwy.
- Zamontuj partycję systemową EFI (ESP).
esp
jest używane do określenia punktu montowania w tej sekcji. - Upewnij się, że opcjonalna zależność udisks2 jest zainstalowana oraz że powiązana z nią jednostka systemd zostanie uruchomiona przed jednostką fwupd; dostarczy ona wsparcie dla aktualizacji oprogramowania UEFI.
Przygotuj ESP
fwupd skopiuje wszystkie potrzebne pliki do esp
, ale żeby to zadziałało, potrzeba stworzyć prosty układ folderów na twoim esp
; oznacza to stworzenie folderu EFI
na twoim esp
:
# mkdir esp/EFI/
EFI
musi być napisana wyłącznie dużymi literami. W razie użycia małych liter fwupd może wykryć punkt esp
jako esp/efi/
i zamiast tego szukać esp/efi/EFI/
.Zrestartuj jednostkę fwupd.service
. Możesz teraz wykonać polecenia fwupdmgr refresh
i fwupdmgr update
. System poprosi Cię o ponowne uruchomienie (do aktualizatora oprogramowania).
Bezpieczny rozruch
Currently, fwupd relies on shim to chainload the fwupd EFI binary on systems with Secure Boot enabled; for this to work, shim has to be installed correctly.
Aktualnie fwupd polega na shim aby załadować plik binarny EFI fwupd na systemach z włączonym Secure Boot. Aby to zadziałało, shim musi zostać poprawnie zainstalowany.
Używanie własnych kluczy
Alternatywnie można ręcznie podpisać plik wykonywalny UEFI używany do wykonywania aktualizacji, który znajduje się w /usr/lib/fwupd/efi/fwupdx64.efi
. Podpisany plik wykonywalny UEFI jest oczekiwany w /usr/lib/fwupd/efi/fwupdx64.efi.signed
. Używając sbsigntools, można to osiągnąć uruchamiając:
# sbsign --key plik_z_kluczem --cert plik_z_certyfikatem /usr/lib/fwupd/efi/fwupdx64.efi
To automatically sign this file when installed or upgraded, a Pacman hook can be used:
Aby automatycznie podpisywać ten plik kiedy jest on instalowany albo aktualizowany, można użyć haków Pacmana:
/etc/pacman.d/hooks/sign-fwupd-secureboot.hook
[Trigger] Operation = Install Operation = Upgrade Type = Path Target = usr/lib/fwupd/efi/fwupdx64.efi [Action] When = PostTransaction Exec = /usr/bin/sbsign --key plik_z_kluczem --cert plik_z_certyfikatem /usr/lib/fwupd/efi/fwupdx64.efi Depends = sbsigntools
Miej pewność, aby podmienić plik_z_kluczem
oraz plik_z_certyfikatem
na odpowiadające im ścieżki do twoich kluczy.
Zamiast haka pacman można również utworzyć dowiązanie symboliczne z /usr/lib/fwupd/efi/fwupdx64.efi
do /usr/lib/fwupd/efi/fwupdx64.efi.signed
i dodać plik do listy EXTRA_SIGN
w /etc/sbupdate.conf
.
Na koniec należy ustawić DisableShimForSecureBoot
w /etc/fwupd/fwupd.conf
i zrestartować fwupd.service
:
/etc/fwupd/fwupd.conf
... [uefi_capsule] DisableShimForSecureBoot=true
- Jeżeli ta konfiguracja została wykonana przed wersją fwupd 1.9, wtedy ta opcja jest dostępna w
/etc/fwupd/uefi_capsule.conf
. - Jeżeli ta konfiguracja została wykonana przed wersją fwupd 1.4, należy być świadomym o subtelnej zmianie w nazwie opcji konfiguracyjnej.
Zobacz https://github.com/fwupd/fwupd/issues/669 po więcej informacji.
Rozwiązywanie problemów
Utknięcie podczas ponownego uruchamiania
fwupdmgr update
nie zgłasza żadnego błędu, ale ponowne uruchomienie powoduje zablokowanie a przytrzymanie przycisku zasilania nic nie daje. Spróbuj wyłączyć zasilanie lub naciśnij przycisk resetowania (na laptopie może to być otwór z tyłu), aby wymusić ponowne uruchomienie.
Brak błędu, ale brak aktualizacji po ponownym uruchomieniu
Symptom: fwupdmgr update
nie zgłasza błędu i wyświetla monit o ponowne uruchomienie (np. przy aktualizacji BIOS-u). Jednak system uruchamia się ponownie normalnie (lub zacina się), a aktualizacja oprogramowania sprzętowego NIE następuje.
Możliwa przyczyna: W ustawieniach BIOS zmiana kolejności rozruchu musi być dozwolona.
Możliwe inne rozwiązanie, jeśli w toku jest wiele aktualizacji: Spróbuj aktualizować pakiety pojedynczo. Aby wybrać pakiety, użyj poniższych poleceń:
$ fwupdmgr update update_ID
(Gdzie update_ID
to coś w stylu f95c9218acd12697af946874bfe4239587209232
.)
Błąd systemu plików tylko do odczytu
Przynajmniej fwupdmgr
1.5.2 dedukuje nieprawidłowy punkt montowania, jeśli bind jest używany do montowania partycji systemowej EFI do /boot. W rezultacie nie zapisuje pliku aktualizacji UEFI do /boot/EFI/arch/fw
(fwupdmgr
), podczas gdy powinien on zostać zapisany do esp/EFI/arch/fw
). Skutkuje to (mylącym) komunikatem o błędzie file system is read-only
. W przypadku, gdy aktualizacja została wykonana przez Discover
(lub dowolny inny interfejs GUI aktualizacji obsługujący fwupd), może nie zostać wyświetlony żaden błąd lub mogą zostać wyświetlone mylące błędy.
Aby obejść ten problem, należy najpierw uruchomić umount /boot
, jeśli wcześniej był on zamontowany do esp/EFI/arch
, a następnie uruchomić fwupdmgr update
, aby zapisać plik aktualizacji UEFI do esp/EFI/arch/fw
, mount /boot
i ponownie uruchomić system, aby wykonać aktualizację UEFI.
Partycja UEFI ESP nie została wykryta lub skonfigurowana
Jeśli partycja ESP nadal nie zostanie wykryta po spełnieniu wszystkich wymagań #Konfiguracja dla aktualizacji UEFI, punkt montowania można określić ręcznie:
/etc/fwupd/uefi_capsule.conf
[uefi_capsule] OverrideESPMountPoint=/efi # Zmień odpowiednio dla twojego systemu
Zobacz również powiązany artykuł na wiki fwupd.
Nie można załadować wtyczki MSR
Wtyczka MSR umożliwia odpytywanie stanu DCI, interfejsu debugowania dostępnego dla procesorów Intel, który powinien być wyłączony na maszynach produkcyjnych zgodnie z dokumentacją fwupd.
Ta wtyczka wymaga załadowania modułu jądra msr
. msr
jest wbudowanym modułem jądra we wszystkich oficjalnych pakietach jądra Arch Linux, ale nieoficjalne pakiety jądra mogą mieć go jako ładowalny moduł jądra. W tym drugim przypadku musimy jawnie załadować moduł podczas uruchamiania.
Failed to load daemon: failed to load engine: No ESP with path
Podczas uruchamiania fwupd sprawdza lokalizację esp jako EspLocation
z /etc/fwupd/daemon.conf
. Zmodyfikuj go do odpowiedniej konfiguracji, jeśli napotkasz ten błąd.