「Fwupd」の版間の差分
Kusakata.bot2 (トーク | 投稿記録) (Pkg/AUR テンプレートの更新) |
(→UEFI のアップグレード: 英語版 642497 に追従) |
||
14行目: | 14行目: | ||
== インストール == |
== インストール == |
||
− | {{Pkg|fwupd}} パッケージを[[インストール]]してください |
+ | {{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/ |
+ | 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] に記載されています。
目次
インストール
fwupdate を使用する場合は #UEFI BIOS のアップグレードを見てください。
グラフィカルフロントエンド
デスクトップ環境によっては fwupd が標準でサポートされています:
- GNOME Software — GNOME 環境上で動作します。バックグラウンドで定期的に更新を確認しダウンロードを行います。ファームウエアがダウンロードされると GNOME Software に更新の実行確認を行うポップアップが表示されます。
- KDE Discover — Plasma 上で動作します。KDE Plasma 5.14 以降では KDE Discover 上で fwupd バックエンドが実装されました。他のシステムのアップデートと同様にファームウエアの更新も表示されます。
- 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.
使用方法
fwupd に検出されたデバイスを確認するには:
$ fwupdmgr get-devices
利用可能なアップデートのメタデータを更新するには:
$ fwupdmgr refresh
システムのアップデート一覧を確認するには:
$ fwupdmgr get-updates
アップデートをインストールするには:
$ fwupdmgr update
UEFI のアップグレード
アップグレードする前に以下を確認してください:
- マシンが UEFI モードで起動していることを確認してください。BIOS モードでは正しく動作しません。
- EFI 変数にアクセスできることを確認してください。
- EFI システムパーティション (ESP) が正しくマウントされていることを確認してください。この記事では ESP のマウントポイントを
esp
として表記します。
ESP の準備
fwupd は必要なファイルを esp 以下にコピーします。'EFI' デイレクトリが存在しない場合は作成してください:
# mkdir esp/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.conf
の EXTRA_SIGN
に追加する方法もあります。
最後に、/etc/fwupd/uefi.conf
の DisableShimForSecureBoot
を true
に変更し fwupd.service
サービスを再起動してください。
さらなる詳細は GitHub Issue を参照してください。
トラブルシューティング
エラーは出ないが再起動後も更新されない
現象: fwupdmgr update
は正常に終了し (UEFI の更新などで) 再起動を求められた。しかし再起動してもファームウエア更新は行なわれなかった。
考えられる原因: 起動順序がBIOS で正しく設定されていない。