05 October 2020

Lenovo ThinkCentre M720q のBIOSアップデートとEFIブート順序変更を戻す作業

Lenovo ThinkCentre M720qのドライバ等のアップデートを、Lenovo System Update というソフトウエアを用いて行ったところ、BIOSもアップデート推奨となったため、アップデートを行った。

事前準備

Lenovo System Updateで表示されるBIOS以外の全ての項目をまずアップデート。再起動後、BIOSのみをアップデートする。

Windows 10のWindows Updateも手動で「アップデートのチェック」を押して何も表示されなくなるまで、更新を完了しておく。

こうすることで、システムのアップデート作業がバックグラウンドで動いていることで、BIOSのアップデートに影響を及ぼす可能性を限り無く小さく出来る。

また、常駐ソフトウエア類もタスクマネジャーから可能な限り停止させた。(画面にシステム状態を表示しているRaimmeterや、メール確認のHoward Email Notifier、Google Drive Sync 、Java update など)

かつての悪い記憶…

ずっと以前、まだWindows 98がメジャーだった2000年11月、MS-DOSフロッピー起動でBIOSをアップデートする方式でアップデートを行ったところ失敗。再起動不可でBIOS画面すら表示できなくなったことがあった。

すぐに、大阪梅田の駅前ビルにあったPCパーツ屋に自転車で駆けつけ、AOpenのAX6BC ProII(13,000円)を急遽購入し、マザーボードのみ換装した記憶がある。 その時以来、M/BのBIOSアップデートは私にとっては鬼門だ…

Lenovo System UpdateでBIOSアップデート

20201005-lenovoupdate.jpg

推奨更新がBIOSのみであるのを確認し、アップデート開始。

Windows上での処理が1分ほどあり、システムが自動的に再起動される。

20201005-firmwareupdate.jpg

再起動後は、ブートメニューが表示されることはなく、既存のBIOS自体に組み込まれたアップデートプロセス Lenovo BIOS Setup Utility が実行される。

画面にはこのようなメッセージが表示され、プログレスバーが100%まで進むのに2〜3分程度。

WARNING ! System BIOS is being updated.
Keyboard is locked.
DO NOT TURN THE POWER OFF !!!
Once firmware update is completed
system will automatically shut down

メッセージでは「シャットダウンされる」と書かれているが、実際は「再起動」された。

2〜3回の再起動を繰り返した後に、Windowsが通常通り起動した。

アップデートの内容は何だったのか…

Windows版のHWiNFO64を使って、BIOSバージョンを調べると

20201005-hwinfo-before.jpg
アップデート前 BIOS Version M1UKT45A (2019/07/11)

20201005-hwinfo-after.jpg
アップデート前 BIOS Version M1UKT59A (2020/07/07)

LenovoのBIOSアップデートのドキュメント (m1ujy59usa.txt) によれば

m1ujy59usa.txt
Summary of Changes
==================
CHANGES for M1UKT59A
  - Enhance HDD password support.
 
CHANGES for M1UKT57A 
  - Enhancement to address security vulnerability.
  - Update CPU Microcode.
 
CHANGES for M1UKT56A
  - Enhance C State support.
 
CHANGES for M1UKT55A
  - Enhancement to address security vulnerability.
  - Enhance BIOS SETUP support.
 
CHANGES for M1UKT53A
  - Enhancement to address security vulnerability.
  - Update UEFI DIAG to 4.12.001
 
CHANGES for M1UKT52A 
  - Enhancement to address security vulnerability.
  - Update CPU Microcode.
 
CHANGES for M1UKT50A
  - Enhancement to address security vulnerability.
  - Enhance NVMe SSD detection.
 
CHANGES for M1UKT4FA
  - Enhancement to address security vulnerability.
  - Update UEFI DIAG to 4.11.
 
CHANGES for M1UKT4EA
  - Fix some TIO multi display issue for M920x.
  - Enhancement to address security vulnerability.
  - Update Setup layout.
 
CHANGES for M1UKT4BA
  - Enhancement to address security vulnerability.
  - Update CPU Microcode.
 
CHANGES for M1UKT4AA
  - Enhancement to address security vulnerability.
  - Enhance BIOS SETUP support.
 
CHANGES for M1UKT47A
  - Enhancement to address security vulnerability.
  - Enhance BIOS SETUP support.
 
CHANGES for M1UKT45A
  - Enhance Smart USB Protection support.
  - Prevents a hang in POST.
  - Fixes the IPv4/IPv6 repeating "v" messaging in F12 menu.
  - Prevents flashing to BIOS levels prior to version 44A.

通常の使い方では、気づかないような内容の微修正だと思う。

2020/11/03 Windows Updateでさらに新しいBIOSにアップデートされる

Lenovo Ltd. - Firmware - 1.0.0.92が新たにインストールされ、BIOSバージョンが M1UKT5CA (2020/09/21) に更新された。

Lenovoのドライバー ダウンロードページによれば…

Summary of Changes
==================
CHANGES for M1UKT5CA
  - Enhancement to address security vulnerability.
 
CHANGES for M1UKT5BA
  - Enhancement to address security vulnerability.
 
CHANGES for M1UKT5AA
  - Enhancement to address security vulnerability.
  - Fix COM port data transmission issue.
 
CHANGES for M1UKT59A
  - Enhance HDD password support.

EFIの起動順が強制的にWindowsに書き換えられる

これまでUbuntuのGRUBが最優先で起動していたが、BIOSアップデート作業でWindowsが最優先に書き換わってしまった。

起動時に F12 キー 連打 によって、EFI 起動メニューが表示できるので、Ubuntuを選択して起動する。

起動順を確認すると

$ sudo efibootmgr
BootCurrent: 0009
Timeout: 1 seconds
BootOrder: 0000,0009,000A,000B,0006,0007,000C,000D
Boot0000* Windows Boot Manager
Boot0006* UEFI: PXE IPV4 Intel(R) Ethernet Connection (7) I219-V
Boot0007* UEFI: PXE IPV6 Intel(R) Ethernet Connection (7) I219-V
Boot0009* ubuntu
Boot000A* ubuntu
Boot000B* UEFI: TOSHIBA TransMemory 1.00, Partition 1
Boot000C* Generic Usb Device
Boot000D* CD/DVD Device
 
$ sudo efibootmgr -v
[sudo] vm のパスワード: 
BootCurrent: 0009
Timeout: 1 seconds
BootOrder: 0000,0009,000A,000B,0006,0007,000C,000D
Boot0000* Windows Boot Manager	HD(1,GPT,8263c8c9-00b6-457e-a668-ac716e57875b,0x800,0x82000)/File(\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}...s................
Boot0006* UEFI: PXE IPV4 Intel(R) Ethernet Connection (7) I219-V	PciRoot(0x0)/Pci(0x1f,0x6)/MAC(98fa9b6acb1d,0)/IPv4(0.0.0.00.0.0.0,0,0)..BO
Boot0007* UEFI: PXE IPV6 Intel(R) Ethernet Connection (7) I219-V	PciRoot(0x0)/Pci(0x1f,0x6)/MAC(98fa9b6acb1d,0)/IPv6([::]:<->[::]:,0,0)..BO
Boot0009* ubuntu	HD(1,GPT,8263c8c9-00b6-457e-a668-ac716e57875b,0x800,0x82000)/File(\EFI\UBUNTU\GRUBX64.EFI)..BO
Boot000A* ubuntu	HD(1,GPT,8263c8c9-00b6-457e-a668-ac716e57875b,0x800,0x82000)/File(\EFI\UBUNTU\SHIMX64.EFI)..BO
Boot000B* UEFI: TOSHIBA TransMemory 1.00, Partition 1	PciRoot(0x0)/Pci(0x14,0x0)/USB(5,0)/HD(1,GPT,c2d5dfee-7bf7-45a9-91e3-ea01af11e09a,0x800,0x100000)..BO
Boot000C* Generic Usb Device	VenHw(99e275e7-75a0-4b37-a2e6-c5385e6c00cb)
Boot000D* CD/DVD Device	VenHw(99e275e7-75a0-4b37-a2e6-c5385e6c00cb)

起動順を書き換える。セキュアブート対応のSHIMX64.EFIが最優先になるように指定する。

$ sudo efibootmgr  --bootorder a,0,9,b,6,7,c,d
BootCurrent: 0009
Timeout: 1 seconds
BootOrder: 000A,0000,0009,000B,0006,0007,000C,000D
Boot0000* Windows Boot Manager
Boot0006* UEFI: PXE IPV4 Intel(R) Ethernet Connection (7) I219-V
Boot0007* UEFI: PXE IPV6 Intel(R) Ethernet Connection (7) I219-V
Boot0009* ubuntu
Boot000A* ubuntu
Boot000B* UEFI: TOSHIBA TransMemory 1.00, Partition 1
Boot000C* Generic Usb Device
Boot000D* CD/DVD Device