「Fwupd」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(Pkg/AUR テンプレートの更新)
14行目: 14行目:
 
== インストール ==
 
== インストール ==
   
{{Pkg|fwupd}} パッケージを[[インストール]]してください。依存パッケージとして {{AUR|fwupdate}}{{Broken package link|パッケージが存在しません}} もインストールされます
+
{{Pkg|fwupd}} パッケージを[[インストール]]してください。
   
 
''fwupdate'' を使用する場合は [[#UEFI BIOS のアップグレード]]を見てください。
 
''fwupdate'' を使用する場合は [[#UEFI BIOS のアップグレード]]を見てください。
53行目: 53行目:
 
アップグレードする前に以下を確認してください:
 
アップグレードする前に以下を確認してください:
   
* マシンが UEFI モードで起動していることを確認してください。BIOS モードでは正しく動作しません。
+
* マシンが [[UEFI]] モードで起動していることを確認してください。BIOS モードでは正しく動作しません。
 
* [[Unified_Extensible_Firmware_Interface#UEFI 変数のサポートを正しく動作させるための必要条件|EFI 変数にアクセスできること]]を確認してください。
 
* [[Unified_Extensible_Firmware_Interface#UEFI 変数のサポートを正しく動作させるための必要条件|EFI 変数にアクセスできること]]を確認してください。
 
* [[EFI システムパーティション]] (ESP) が正しくマウントされていることを確認してください。この記事では ESP のマウントポイントを {{ic|''esp''}} として表記します。
 
* [[EFI システムパーティション]] (ESP) が正しくマウントされていることを確認してください。この記事では ESP のマウントポイントを {{ic|''esp''}} として表記します。
   
  +
=== ESP の準備 ===
=== 以前の環境で作られたファイルの確認 ===
 
  +
fwupd は必要なファイルを ''esp'' 以下にコピーします。'EFI' デイレクトリが存在しない場合は作成してください:
  +
# mkdir ''esp''/EFI/
   
  +
{{Warning|'EFI' ディレクトリは全て大文字でなければなりません。fwupd が ''esp'' を ''esp''/efi/ と誤認識し ''esp''/efi/EFI/ 以下を検索する可能性があります。}}
他の Linux 環境で fwupdate を既にインストールしたことがある場合、efivars に残っているものを削除するようにしてください。以下のコマンドを実行することで残余を確認できます:
 
   
  +
作成後、fwupd サービスを[[再起動]]してください。
$ ls /sys/firmware/efi/efivars/fwupdate-*-0abba7dc-e516-4167-bbf5-4d9d1c739416
 
  +
# systemctl restart fwupd.service
   
  +
そののち、{{ic|$ fwupdmgr refresh}} と {{ic|$ fwupdmgr update}} を実行すると、再起動が促されファームウエアが更新されます。
何か出力が返ってくる場合、以下のように削除してください:
 
   
  +
=== セキュアブート ===
# chattr -i /sys/firmware/efi/efivars/fwupdate-*-0abba7dc-e516-4167-bbf5-4d9d1c739416
 
# rm -f /sys/firmware/efi/efivars/fwupdate-*-0abba7dc-e516-4167-bbf5-4d9d1c739416
 
   
  +
[[セキュアブート]]が有効な環境で fwupd EFI バイナリをチェーンロードするには {{Pkg|shim}} が正しくインストールされていることが必要です。
=== fwupdate のインストールとアップデート ===
 
   
  +
==== 自己署名証明書を使う ====
''fwupdate'' の新しいバージョンをインストール・アップデートするにはユーザーの操作が必要です。pacman のフックを使うことでアップデートを自動化できます (ただしインストール時に一度は手動で設定する必要があります)。
 
   
  +
ファームウエア更新に使われる UEFI バイナリ {{ic|/usr/lib/fwupd/efi/fwupdx64.efi}} を手動で署名する方法もあります。
==== 手動 ====
 
   
  +
{{Pkg|sbsigntools}} を使うと署名されたバイナリ {{ic|/usr/lib/fwupd/efi/fwupdx64.efi.signed}} が生成されます。
{{ic|/usr/lib/fwupdate/EFI}} フォルダを ESP にコピーしてください:
 
  +
# sbsign --key <keyfile> --cert <certfile> /usr/lib/fwupd/efi/fwupdx64.efi
   
  +
[[Pacman フック]]を使うと {{ic|fwupdx64.efi}} の更新時に自動で署名できます:
# cp -r /usr/lib/fwupdate/EFI ''esp''
 
   
  +
{{hc|head=/etc/pacman.d/hooks/sign-fwupd-secureboot.hook|output=
==== 自動 ====
 
 
{{AUR|fwupdate}}{{Broken package link|パッケージが存在しません}} パッケージに含まれている Pacman フックは ESP を {{ic|/boot}} または {{ic|/boot/efi}} にマウントしている環境用です。関連するファイルのシンボリックリンクを作成することで利用することができます:
 
* {{ic|''esp''}} を {{ic|/boot}} にマウントしている場合:
 
# ln -s /usr/share/doc/fwupdate/esp-as-boot.hook /etc/pacman.d/hooks/fwupdate-efi-copy.hook
 
* {{ic|''esp''}} を {{ic|/boot/efi}} にマウントしている場合:
 
# ln -s /usr/share/doc/fwupdate/esp-as-boot-efi.hook /etc/pacman.d/hooks/fwupdate-efi-copy.hook
 
 
他の場所にマウントしている場合は以下のスニペットの {{ic|''esp''}} のマウントポイントを調整してください:
 
{{hc|/etc/pacman.d/hooks/fwupdate-efi-copy.hook|<nowiki>
 
 
[Trigger]
 
[Trigger]
Type = Package
 
 
Operation = Install
 
Operation = Install
 
Operation = Upgrade
 
Operation = Upgrade
  +
Type = Path
Target = fwupdate
 
  +
Target = usr/lib/fwupd/efi/fwupdx64.efi
   
 
[Action]
 
[Action]
Description = Copying fwupdate to EFI directory...
 
 
When = PostTransaction
 
When = PostTransaction
Exec = /usr/bin/cp -r /usr/lib/fwupdate/EFI</nowiki> ''esp''
+
Exec = /usr/bin/sbsign --key <keyfile> --cert <certfile> /usr/lib/fwupd/efi/fwupdx64.efi
  +
Depends = sbsigntools
 
}}
 
}}
   
  +
{{ic|<keyfile>}} や {{ic|<certfile>}} は対応する鍵と証明書へのパスに置き換えます。
=== fwupd の実行 ===
 
  +
  +
pacman hook を使わず、{{ic|/usr/lib/fwupd/efi/fwupdx64.efi}} から {{ic|/usr/lib/fwupd/efi/fwupdx64.efi.signed}} へシンボリックリンクを作成し {{ic|/etc/sbupdate.conf}} の {{ic|EXTRA_SIGN}} に追加する方法もあります。
   
  +
最後に、{{ic|/etc/fwupd/uefi.conf}} の {{ic|DisableShimForSecureBoot}} を {{ic|true}} に変更し {{ic|fwupd.service}} サービスを再起動してください。
[[#使用方法]]に書かれているように実行してください。
 
   
  +
{{Note|fwupd 1.4 以前を使う場合は設定オプションの名前が微妙に異なります。}}
{{Note|UEFI モードで UEFI エントリが認識されない場合、BIOS の設定を確認して UEFI カプセルアップデートをオンにするオプションがないかチェックしてください。}}
 
   
  +
さらなる詳細は [https://github.com/fwupd/fwupd/issues/669 GitHub Issue] を参照してください。
{{Warning|ESP を {{ic|/boot/efi}} にマウントしていない場合 (例えば {{ic|/boot}} にマウントしている場合)、fwupd によってサポートされるまで待つ必要があります。}}
 
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==

2021年1月7日 (木) 23:07時点における版

関連記事

fwupd はデバイスのファームウェアをアップデートするためのシンプルなデーモンです。fwupdate で UEFI BIOS をアップデートできます。

サポートされているデバイスは [1][2] に記載されています。

インストール

fwupd パッケージをインストールしてください。

fwupdate を使用する場合は #UEFI BIOS のアップグレードを見てください。

グラフィカルフロントエンド

デスクトップ環境によっては fwupd が標準でサポートされています:

  • GNOME SoftwareGNOME 環境上で動作します。バックグラウンドで定期的に更新を確認しダウンロードを行います。ファームウエアがダウンロードされると GNOME Software に更新の実行確認を行うポップアップが表示されます。
https://wiki.gnome.org/Apps/Software || gnome-software
  • KDE DiscoverPlasma 上で動作します。KDE Plasma 5.14 以降では KDE Discover 上で fwupd バックエンドが実装されました。他のシステムのアップデートと同様にファームウエアの更新も表示されます。
https://userbase.kde.org/Discover || discover
  • GNOME Firmware — Application to upgrade, downgrade and reinstall firmware on devices supported by fwupd. It can unlock locked fwupd devices, verify firmware on supported devices and display all releases for a fwupd device.
https://gitlab.gnome.org/hughsie/gnome-firmware-updater || gnome-firmware

使用方法

fwupd に検出されたデバイスを確認するには:

$ fwupdmgr get-devices
ノート: 上記のコマンドで出力されるデバイスの一部は fwupd でアップデートできない場合があります。例えば Intel の内蔵グラフィックはアップデートできません。

利用可能なアップデートのメタデータを更新するには:

$ fwupdmgr refresh

システムのアップデート一覧を確認するには:

$ fwupdmgr get-updates

アップデートをインストールするには:

$ fwupdmgr update
ノート:
  • 再起動が必要ない更新はただちに適用されます。
  • 起動時に実行される更新は次回再起動時に行なわれます。
  • アップデートによっては root 権限が必要になることがあります。

UEFI のアップグレード

警告: UEFI ファームウエアの更新によりブートローダーが破棄される可能性があります。更新完了後に NVRAM エントリを efibootmgr などで再生成する必要が生じる場合があります。

アップグレードする前に以下を確認してください:

  • マシンが UEFI モードで起動していることを確認してください。BIOS モードでは正しく動作しません。
  • EFI 変数にアクセスできることを確認してください。
  • EFI システムパーティション (ESP) が正しくマウントされていることを確認してください。この記事では ESP のマウントポイントを esp として表記します。

ESP の準備

fwupd は必要なファイルを esp 以下にコピーします。'EFI' デイレクトリが存在しない場合は作成してください:

# mkdir esp/EFI/
警告: 'EFI' ディレクトリは全て大文字でなければなりません。fwupd が espesp/efi/ と誤認識し esp/efi/EFI/ 以下を検索する可能性があります。

作成後、fwupd サービスを再起動してください。

# systemctl restart fwupd.service

そののち、$ fwupdmgr refresh$ fwupdmgr update を実行すると、再起動が促されファームウエアが更新されます。

セキュアブート

セキュアブートが有効な環境で fwupd EFI バイナリをチェーンロードするには shim が正しくインストールされていることが必要です。

自己署名証明書を使う

ファームウエア更新に使われる UEFI バイナリ /usr/lib/fwupd/efi/fwupdx64.efi を手動で署名する方法もあります。

sbsigntools を使うと署名されたバイナリ /usr/lib/fwupd/efi/fwupdx64.efi.signed が生成されます。

# sbsign --key <keyfile> --cert <certfile> /usr/lib/fwupd/efi/fwupdx64.efi

Pacman フックを使うと fwupdx64.efi の更新時に自動で署名できます:

/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 <keyfile> --cert <certfile> /usr/lib/fwupd/efi/fwupdx64.efi
Depends = sbsigntools

<keyfile><certfile> は対応する鍵と証明書へのパスに置き換えます。

pacman hook を使わず、/usr/lib/fwupd/efi/fwupdx64.efi から /usr/lib/fwupd/efi/fwupdx64.efi.signed へシンボリックリンクを作成し /etc/sbupdate.confEXTRA_SIGN に追加する方法もあります。

最後に、/etc/fwupd/uefi.confDisableShimForSecureBoottrue に変更し fwupd.service サービスを再起動してください。

ノート: fwupd 1.4 以前を使う場合は設定オプションの名前が微妙に異なります。

さらなる詳細は GitHub Issue を参照してください。

トラブルシューティング

エラーは出ないが再起動後も更新されない

現象: fwupdmgr update は正常に終了し (UEFI の更新などで) 再起動を求められた。しかし再起動してもファームウエア更新は行なわれなかった。

考えられる原因: 起動順序がBIOS で正しく設定されていない。