「Fwupd」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(Pkg/AUR テンプレートの更新)
 
(4人の利用者による、間の17版が非表示)
2行目: 2行目:
 
[[Category:ハードウェア]]
 
[[Category:ハードウェア]]
 
[[en:Fwupd]]
 
[[en:Fwupd]]
  +
[[zh-hans:Fwupd]]
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related|EFI システムパーティション}}
 
{{Related|EFI システムパーティション}}
13行目: 14行目:
 
== インストール ==
 
== インストール ==
   
{{Pkg|fwupd}} パッケージを[[インストール]]してください。依存パッケージとして {{AUR|fwupdate}} もインストールされます
+
{{Pkg|fwupd}} パッケージを[[インストール]]してください。
   
 
''fwupdate'' を使用する場合は [[#UEFI BIOS のアップグレード]]を見てください。
 
''fwupdate'' を使用する場合は [[#UEFI BIOS のアップグレード]]を見てください。
  +
  +
=== グラフィカルフロントエンド ===
  +
  +
[[デスクトップ環境]]によっては fwupd が標準でサポートされています:
  +
* {{App|GNOME Software|[[GNOME]] 環境上で動作します。バックグラウンドで定期的に更新を確認しダウンロードを行います。ファームウエアがダウンロードされると GNOME Software に更新の実行確認を行うポップアップが表示されます。|https://wiki.gnome.org/Apps/Software|{{Pkg|gnome-software}}}}
  +
* {{App|KDE Discover|[[Plasma]] 上で動作します。KDE Plasma 5.14 以降では KDE Discover 上で fwupd バックエンドが実装されました。他のシステムのアップデートと同様にファームウエアの更新も表示されます。|https://userbase.kde.org/Discover|{{Pkg|discover}}}}
  +
* {{App|GNOME Firmware|fwupd がサポートするデバイスのファームウェアをアップグレード、ダウングレード、再インストールするためのアプリケーションです。ロックされた fwupd デバイスのロック解除、サポートされているデバイスのファームウェアの検証、fwupd デバイスの全リリースを表示することができます。|https://gitlab.gnome.org/hughsie/gnome-firmware-updater|{{Pkg|gnome-firmware}}}}
   
 
== 使用方法 ==
 
== 使用方法 ==
   
  +
このパッケージは、最初のクエリを受信したときに ''fwupd'' デーモンを自動的に起動する {{ic|fwupd.service}} を提供します。 [https://fwupd.org/lvfs/docs/users]
以下のコマンドを実行することで利用可能なデバイスを確認できます:
 
  +
  +
fwupd に検出されたデバイスを確認するには:
 
$ fwupdmgr get-devices
 
$ fwupdmgr get-devices
   
27行目: 37行目:
 
$ fwupdmgr refresh
 
$ fwupdmgr refresh
   
デバイアップデートが存在するか確認するには:
+
テムのアップデート一覧を確認するには:
 
$ fwupdmgr get-updates
 
$ fwupdmgr get-updates
   
33行目: 43行目:
 
$ fwupdmgr update
 
$ fwupdmgr update
   
  +
{{Note|
{{Note|アップデートによっては root 権限が必要になることがあります。}}
 
  +
* 再起動が必要ない更新はただちに適用されます。
  +
* 起動時に実行される更新は次回再起動時に行なわれます。
  +
* アップデートによっては root 権限が必要になることがあります。
  +
}}
   
== UEFI BIOS のアップグレード ==
+
== UEFI のアップグレードのセットアップ ==
  +
  +
{{Warning|UEFI ファームウエアの更新により [[ブートローダー]] が破棄される可能性があります。更新完了後に NVRAM エントリを [[efibootmgr]] などで再生成する必要が生じる場合があります。}}
   
 
アップグレードする前に以下を確認してください:
 
アップグレードする前に以下を確認してください:
   
* マシンが UEFI モードで起動していることを確認してください。
+
# マシンが [[UEFI]] モードで起動していることを確認してください。BIOS モードでは正しく動作しません
* [[Unified_Extensible_Firmware_Interface#UEFI 変数のサポートを正しく動作させるための必要条件|EFI 変数にアクセスできること]]を確認してください。
+
# [[Unified_Extensible_Firmware_Interface#UEFI 変数のサポートを正しく動作させるための必要条件|EFI 変数にアクセスできること]] を確認してください。
* [[EFI システムパーティション]] (ESP) が正しくマウントされていることを確認してください。この記事では ESP のマウントポイントを {{ic|''esp''}} として表記します。
+
# [[EFI システムパーティション]] (ESP) が正しくマウントされていることを確認してください。この記事では ESP のマウントポイントを {{ic|''esp''}} として表記します。
  +
# オプションの依存関係 {{Pkg|udisks2}} がインストールされていること、および関連する systemd ユニットが fwupd ユニットの前に起動されていることを確認してください。UEFI ファームウェアのアップグレードサポートが提供されます。
   
  +
=== ESP の準備 ===
=== 以前の環境で作られたファイルの確認 ===
 
   
  +
''fwupd'' は必要なファイルをすべて {{ic|''esp''}} にコピーしますが、これが機能するには、基本的なフォルダーレイアウトが {{ic|''esp'' に存在する必要があります。}};
他の Linux 環境で fwupdate を既にインストールしたことがある場合、efivars に残っているものを削除するようにしてください。以下のコマンドを実行することで残余を確認できます:
 
  +
これにより、{{ic|''esp''}} 上に {{ic|EFI}} ディレクトリが作成されます。
  +
{{Note|ブートローダーまたは他のオペレーティングシステムの存在によっては、このディレクトリがすでに存在している可能性があります。}}
   
  +
# mkdir ''esp''/EFI/
$ ls /sys/firmware/efi/efivars/fwupdate-*-0abba7dc-e516-4167-bbf5-4d9d1c739416
 
   
  +
{{Warning|{{ic|EFI}} ディレクトリはすべて大文字である必要があります。小文字を使用した場合、''fwupd'' は {{ic|''esp''}} を {{ic|''esp''/efi/}} として検出し、変わりに {{ic|''esp''/efi/EFI/}} を探す可能性があります。}}
何か出力が返ってくる場合、以下のように削除してください:
 
   
  +
その後、{{ic|fwupd.service}} ユニットを [[再起動]] します。{{ic|fwupdmgrfresh}} と {{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
 
   
  +
{{Note|[[Lenovo ThinkPad P50]] ラップトップなどの一部のデバイスでは、ファームウェアアップデーターによって '''何もメッセージが表示されない黒い画面''' が表示されます。パニックにならないでください。また、'''中断しないでください。''' アップデートに応じて数秒または数分後デバイスは、強制的にリセットされます。マシンは再起動されてオペレーティングシステムに戻ります。}}
=== fwupdate のインストールとアップデート ===
 
   
  +
=== セキュアブート ===
''fwupdate'' の新しいバージョンをインストール・アップデートするにはユーザーの操作が必要です。pacman のフックを使うことでアップデートを自動化できます (ただしインストール時に一度は手動で設定する必要があります)。
 
   
  +
[[セキュアブート]]が有効な環境で fwupd EFI バイナリをチェーンロードするには {{Pkg|shim}} が正しくインストールされていることが必要です。
==== 手動 ====
 
   
  +
==== 自己署名証明書を使う ====
{{ic|/usr/lib/fwupdate/EFI}} フォルダを ESP にコピーしてください:
 
   
  +
ファームウエア更新に使われる UEFI バイナリ {{ic|/usr/lib/fwupd/efi/fwupdx64.efi}} を手動で署名する方法もあります。
# cp -r /usr/lib/fwupdate/EFI ''esp''
 
   
  +
{{Pkg|sbsigntools}} を使うと署名されたバイナリ {{ic|/usr/lib/fwupd/efi/fwupdx64.efi.signed}} が生成されます。
==== 自動 ====
 
  +
# sbsign --key <keyfile> --cert <certfile> /usr/lib/fwupd/efi/fwupdx64.efi
   
  +
[[Pacman フック]]を使うと {{ic|fwupdx64.efi}} の更新時に自動で署名できます:
{{AUR|fwupdate}} パッケージに含まれている 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
 
   
  +
{{hc|head=/etc/pacman.d/hooks/sign-fwupd-secureboot.hook|output=
他の場所にマウントしている場合は以下のスニペットの {{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}} サービスを再起動してください。
  +
{{ic|fwupd.service}}:
  +
{{hc|head=/etc/fwupd/fwupd.conf|output=
  +
...
  +
  +
[uefi_capsule]
  +
DisableShimForSecureBoot=true
  +
}}
  +
  +
{{Note|''fwupd'' 1.9 より前にこれを設定した場合、このオプションは {{ic|/etc/fwupd/uefi_capsule.conf}} にあります。}}
  +
{{Note|''fwupd'' 1.4 以前を使う場合は設定オプションの名前が微妙に異なることに注意してください。}}
  +
  +
さらなる詳細は [https://github.com/fwupd/fwupd/issues/669 GitHub Issue] を参照してください。
  +
  +
== トラブルシューティング ==
  +
  +
=== 再起動時にスタック ===
  +
  +
{{ic|fwupdmgr update}} はエラーを報告しませんが、再起動を促すメッセージが表示されず、電源ボタンを押したままにしても応答がありません。 電源を切るか、リセットボタン (ラップトップの場合は背面の穴である可能性があります) を押して強制的に再起動してみてください。
  +
  +
=== エラーは出ないが再起動後も更新されない ===
  +
  +
'''現象:''' {{ic|fwupdmgr update}} は正常に終了し (UEFI の更新などで) 再起動を求められた。しかし再起動してもファームウエア更新は行なわれなかった。
  +
  +
'''考えられる原因:''' 起動順序がBIOS で正しく設定されていない。
  +
  +
'''保留中の更新が複数ある場合に考えられる他の解決策:''' パッケージを 1つずつ更新してみてください。以下を使用してパッケージを選択します。:
  +
  +
$ fwupdmgr update ''update_ID''
  +
  +
({{ic|''update_ID''}} は {{ic|f95c9218acd12697af946874bfe4239587209232}} のようなものです。)
  +
  +
=== 読み取り専用ファイルシステムエラー ===
  +
  +
少なくとも、{{ic|fwupdmgr}} 1.5.2 は、もし bind が ''esp'' を {{ic|/boot}} [https://wiki.archlinux.org/index.php?title=EFI_system_partition#Using_bind_mount] にマウントするために使用された場合、間違ったマウントポイントが推測されます。その結果、UEFI 更新ファイル {{ic|/boot/EFI/arch/fw}} の書き込みに失敗します({{ic|fwupdmgr}} は {{ic|''esp''/EFI/arch/fw}} に書き込みます)。これにより、(誤解を招く) "file system is read-only" というエラーメッセージが表示されます。{{ic|Discover}} (またはその他の fwupd 対応アップデート GUI ) によって更新が実行された場合は、エラーや誤解を招くようなエラーは表示されない場合があります。
  +
  +
回避策としては、以前に {{ic|''esp''/EFI/arch}} にバインドマウントされていた場合は最初に {{ic|umount /boot}} を実行し、その後 {{ic|fwupdmgr update}} を実行して UEFI 更新ファイルを {{ic|''esp''/EFI/arch/fw}} に書き込み、{{ic|mount /boot}} してシステムを再起動して UEFI 更新を実行します。
  +
  +
=== UEFI ESP パーティションが検出または設定されていない ===
  +
  +
[[fwupd#UEFI のアップグレードのセットアップ]] のすべての要件を満たした後でも ESP パーティションが検出されない場合、マウントポイントを手動で指定することができます。
  +
  +
{{hc|head=/etc/fwupd/uefi_capsule.conf|output=
  +
[uefi_capsule]
  +
OverrideESPMountPoint=/efi # 設定に合わせて変更
  +
}}
  +
  +
[https://github.com/fwupd/fwupd/wiki/PluginFlag:esp-not-found 関連記事] も参照
  +
  +
=== MSR プラグインを読み込めない ===
  +
  +
MSR プラグインは DCI の状態を問い合わせることができます。DCI は Intel CPU で利用可能なデバッグインターフェイスで、[https://github.com/fwupd/fwupd/blob/master/plugins/msr/README.md fwupd's documentation] に従って本番マシンでは無効化されているはずです。
   
  +
このプラグインは {{ic|msr}} カーネルモジュールがロードされている必要があります。{{ic|msr}} は全ての公式 Arch Linux カーネルパッケージのビルトインカーネルモジュールですが、非公式のカーネルパッケージではロード可能なカーネルモジュールとして存在しているかもしれません。後者の場合、起動時に明示的に [[カーネルモジュール#モジュールの自動ロード|モジュールを自動ロード]] する必要があります。
[[#使用方法]]に書かれているように実行してください。
 
   
  +
=== Failed to load daemon: failed to load engine: No ESP with path ===
{{Note|UEFI モードで UEFI エントリが認識されない場合、BIOS の設定を確認して UEFI カプセルアップデートをオンにするオプションがないかチェックしてください。}}
 
   
  +
fwupd は起動時に {{ic|EspLocation}} という esp の場所を {{ic|/etc/fwupd/daemon.conf}} から確認しています。このエラーが発生した場合は、対応する設定に変更してください。
{{Warning|ESP を {{ic|/boot/efi}} にマウントしていない場合 (例えば {{ic|/boot}} にマウントしている場合)、fwupd によってサポートされるまで待つ必要があります。}}
 

2023年10月9日 (月) 09:56時点における最新版

関連記事

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 — fwupd がサポートするデバイスのファームウェアをアップグレード、ダウングレード、再インストールするためのアプリケーションです。ロックされた fwupd デバイスのロック解除、サポートされているデバイスのファームウェアの検証、fwupd デバイスの全リリースを表示することができます。
https://gitlab.gnome.org/hughsie/gnome-firmware-updater || gnome-firmware

使用方法

このパッケージは、最初のクエリを受信したときに fwupd デーモンを自動的に起動する fwupd.service を提供します。 [3]

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

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

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

$ fwupdmgr refresh

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

$ fwupdmgr get-updates

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

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

UEFI のアップグレードのセットアップ

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

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

  1. マシンが UEFI モードで起動していることを確認してください。BIOS モードでは正しく動作しません。
  2. EFI 変数にアクセスできること を確認してください。
  3. EFI システムパーティション (ESP) が正しくマウントされていることを確認してください。この記事では ESP のマウントポイントを esp として表記します。
  4. オプションの依存関係 udisks2 がインストールされていること、および関連する systemd ユニットが fwupd ユニットの前に起動されていることを確認してください。UEFI ファームウェアのアップグレードサポートが提供されます。

ESP の準備

fwupd は必要なファイルをすべて esp にコピーしますが、これが機能するには、基本的なフォルダーレイアウトが esp に存在する必要があります。; これにより、esp 上に EFI ディレクトリが作成されます。

ノート: ブートローダーまたは他のオペレーティングシステムの存在によっては、このディレクトリがすでに存在している可能性があります。
# mkdir esp/EFI/
警告: EFI ディレクトリはすべて大文字である必要があります。小文字を使用した場合、fwupdespesp/efi/ として検出し、変わりに esp/efi/EFI/ を探す可能性があります。

その後、fwupd.service ユニットを 再起動 します。fwupdmgrfreshfwupdmgr update ができるようになりました。再起動するように求められます (ファームウェアアップデーターを起動します)

ノート: Lenovo ThinkPad P50 ラップトップなどの一部のデバイスでは、ファームウェアアップデーターによって 何もメッセージが表示されない黒い画面 が表示されます。パニックにならないでください。また、中断しないでください。 アップデートに応じて数秒または数分後デバイスは、強制的にリセットされます。マシンは再起動されてオペレーティングシステムに戻ります。

セキュアブート

セキュアブートが有効な環境で 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.service:

/etc/fwupd/fwupd.conf
...

[uefi_capsule]
DisableShimForSecureBoot=true
ノート: fwupd 1.9 より前にこれを設定した場合、このオプションは /etc/fwupd/uefi_capsule.conf にあります。
ノート: fwupd 1.4 以前を使う場合は設定オプションの名前が微妙に異なることに注意してください。

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

トラブルシューティング

再起動時にスタック

fwupdmgr update はエラーを報告しませんが、再起動を促すメッセージが表示されず、電源ボタンを押したままにしても応答がありません。 電源を切るか、リセットボタン (ラップトップの場合は背面の穴である可能性があります) を押して強制的に再起動してみてください。

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

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

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

保留中の更新が複数ある場合に考えられる他の解決策: パッケージを 1つずつ更新してみてください。以下を使用してパッケージを選択します。:

$ fwupdmgr update update_ID

(update_IDf95c9218acd12697af946874bfe4239587209232 のようなものです。)

読み取り専用ファイルシステムエラー

少なくとも、fwupdmgr 1.5.2 は、もし bind が esp/boot [4] にマウントするために使用された場合、間違ったマウントポイントが推測されます。その結果、UEFI 更新ファイル /boot/EFI/arch/fw の書き込みに失敗します(fwupdmgresp/EFI/arch/fw に書き込みます)。これにより、(誤解を招く) "file system is read-only" というエラーメッセージが表示されます。Discover (またはその他の fwupd 対応アップデート GUI ) によって更新が実行された場合は、エラーや誤解を招くようなエラーは表示されない場合があります。

回避策としては、以前に esp/EFI/arch にバインドマウントされていた場合は最初に umount /boot を実行し、その後 fwupdmgr update を実行して UEFI 更新ファイルを esp/EFI/arch/fw に書き込み、mount /boot してシステムを再起動して UEFI 更新を実行します。

UEFI ESP パーティションが検出または設定されていない

fwupd#UEFI のアップグレードのセットアップ のすべての要件を満たした後でも ESP パーティションが検出されない場合、マウントポイントを手動で指定することができます。

/etc/fwupd/uefi_capsule.conf
[uefi_capsule]
OverrideESPMountPoint=/efi   # 設定に合わせて変更

関連記事 も参照

MSR プラグインを読み込めない

MSR プラグインは DCI の状態を問い合わせることができます。DCI は Intel CPU で利用可能なデバッグインターフェイスで、fwupd's documentation に従って本番マシンでは無効化されているはずです。

このプラグインは msr カーネルモジュールがロードされている必要があります。msr は全ての公式 Arch Linux カーネルパッケージのビルトインカーネルモジュールですが、非公式のカーネルパッケージではロード可能なカーネルモジュールとして存在しているかもしれません。後者の場合、起動時に明示的に モジュールを自動ロード する必要があります。

Failed to load daemon: failed to load engine: No ESP with path

fwupd は起動時に EspLocation という esp の場所を /etc/fwupd/daemon.conf から確認しています。このエラーが発生した場合は、対応する設定に変更してください。