0. はじめに
こんにちは。都内でエンジニアをしている、@gkzvoiceです。
先日、私用Linux PCのFirmwareの更新でコケてしまったので、そのトラブルシュートにチャレンジしておりました。
あれ?firmwareの更新に失敗したかも
— GakujiTamaki@July Tech Festa運営スタッフ/ #bosyu芸人 (@gkzvoice) September 8, 2020
結論からお伝えしますと、後述する、fwupdを使って無事更新することができました。
そこで本記事では、fwupdを使ってFirmware(UEFI/BIOS)の更新ができるようになるまでの手順について解説していきます。
1. 目次
-
- 環境/バージョン情報
-
- 遭遇したエラーの説明
-
- 更新手順
-
- 参考資料
2.環境/バージョン情報
ローカル開発環境
- Dell XPS13-9380
- Ubuntu 20.04.1 LTS (Focal Fossa)"
- BIOS 1.11.0
- fwupdmgr
- client 1.3.11
- daemon 1.3.11
僕だけかも知れませんが、バージョン一つ確認するのも苦労したので確認に使ったコマンドを貼っておきます(とくにBIOS。。)。
## Dell XPS13-9380
$ sudo lshw -short | head -3
H/W path Device Class Description
==============================================================
system XPS 13 9380 (08AF)
## Ubuntu
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.1 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.1 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
## BIOS
$ sudo dmidecode -s bios-version
1.11.0
## fwupdmgr client/daemon
$ fwupdmgr --version
client version: 1.3.11
compile-time dependency versions
gusb: 0.3.4
efivar: 37
daemon version: 1.3.11
3. 遭遇したエラーの説明
なにがきっかけかは分かりませんが、下記のスクリーンショットの左側に表示されているようなエラーメッセージが画面に出るようになったんですよね大汗。
エラーメッセージ全文です↓。
Unable to update "Dell Inc. System Firmware" as download failed:
failed to download https://fwupd.org/downloads/-xxxxxxx-d35-XPS_9380_1.11.0.cab: Connection terminated unexpectedlly
4. 更新手順
4-1.下記のLinux Vendor Firmware Service(LVFS)から自分PCに合ったcabをダウンロード
- 僕の場合は「2.環境/バージョン情報」で先述したとおり、XPS13-9380のcab
https://fwupd.org/lvfs/devices/com.dell.uefice945437.firmware
- 下記のようにcurlやwgetを使ってダウンロードしても、GUIでcabをクリックしてもよい
$ curl https://fwupd.org/downloads/60344cbcc1f3c061ea202e1c7d7cc9c6333f0f070eba09fc8ef27114fe3ced35-XPS_9380_1.11.0.cab \
> --output $HOME/Downloads/xps_9380.cab
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 21.6M 100 21.6M 0 0 1454k 0 0:00:15 0:00:15 --:--:-- 2711k
- 無事 curlのoutputオプションで指定したダウンロード先にcabがあることを確認(GUIでダウンロードされた方はよしなに)
$ ls $HOME/xps_9380.cab
$HOME/Downloads/xps_9380.cab
4-2. fwupdmgr installコマンドでcabをインストール
- 下記のように**
fwupdmgr install /path/to/$FILE
を実行してからy
**を押す - **
fwupdmgr install
**コマンドを実行するためには、ACアダプタをつなぐ必要があります。 - なお、この**
fwupdmgr install
**とはfwupdというデーモンが提供するインストールコマンドみたいです。
$ fwupdmgr install Downloads/xps_9380.cab
Decompressing… [***************************************]
Authenticating… [***************************************]
Installing on System Firmware… ]
Scheduling… [***************************************]
Successfully installed firmware
An update requires a reboot to complete. Restart now? [y|N]:
- 後は画面に従って
再起動
したり、淡々と進めるだけでした。
※**fwupdmgr install
コマンドについては、fwupd/firmware-dellリポジトリ
**で自分で立てたissueで教えていただきました。
-
Unable to update "Dell Inc. System Firmware" as download failed · Issue #35 · fwupd/firmware-dell
-
**
fwupdmgr install
**コマンドの解説についてはこちらをご参照ください。
Download the .cab files that match your hardware and then install them on the target hardware via Ansible or Puppet using
fwupdmgr install foo.cab.
参考:Offline Firmware — LVFS documentation
- fwupdについてはこちらを。
**
The Linux Foundationは3月26日(米国時間),同ファウンデーション傘下の新しいプロジェクトとして「Linux Vendor Firmware Service(LVFS)」がスタート
**したことを発表した。Linux Vendor Firmware Service
LVFS Project Announcement - The Linux Foundation
LVFSはRed Hatの開発者が中心となって進めてきた活動で,**各ハードウェアベンダが提供するファームウェアやBIOSを,再配布可能な形式(.cab)でサイト上で集約し,ユーザや開発者は「fwupd」というデーモンを介してLVFSに接続することで,ローカルマシンのファームウェアアップデートが可能
**になる。
5. 参考資料
- Unable to update "Dell Inc. System Firmware" as download failed · Issue #35 · fwupd/firmware-dell
- Offline Firmware — LVFS documentation
- 2019年3月29日 ファームウェア提供のスタンダードに! Linux Foundationの新プロジェクト「Linux Vendor Firmware Service」がスタート