bios/固件更新至最新版
我想我很幸運,因為我的主要工作環境已經基于Linux十多年了,但是由于我需要修補一些BIOS裝置固件,是以我經常不得不被迫挖掘DOS或Windows映像。 這些天來,我不擁有擁有有效Windows許可證的任何産品,甚至我的2008白色MacBook在使用Ubuntu或Fedora時都花費了大部分時間。 幸運的是,大多數硬體制造商已開始提供可引導映像來修補系統固件,而對于企業級硬體,他們甚至提供了可用于Linux的工具。 在本文中,我将逐漸介紹Linux上的最新固件更新,并根據經驗分享一些建議。
在消費者/生産者方面,已經轉向基于UEFI的桌上型電腦和筆記本電腦系統,并且在此過程中,許多制造商似乎已删除了從USB記憶棒更新BIOS的選項。 從曆史上看,我們隻會看到企業級旋轉鏽蝕(硬碟)的固件更新,但是許多SSD制造商還為消費者級裝置提供正常的固件更新。 雖然我們經常應該堅持舊的格言“如果沒有破裂,就不要修複它”,當我站在一個新的環境中以確定我的所有固件都是最新的時候,我堅信。 是以開始我的旅程...
我的更新曆險記
多年以來,我一直參與MythTV項目 (開源DVR),包括曾經在紐西蘭生産面向消費者的系統( myPVR )。 最近,我使用基于Intel的緊湊型PC,該PC可以作為MythTV前端運作,能夠運作Kodi (開放源代碼影院系統),并且偶爾還可以用作家庭實驗室的管理程式。
我選擇了基于四核N3150處理器的技嘉BRIX,并重新配置設定了備用RAM和硬碟驅動器,以尋求簡單有效的解決方案。 內建的Intel HD Graphics能夠以24幀/秒的速度運作H265 / HEVC,此外,CPU具有用于硬體加速虛拟化的VT(僅可更新到8GB RAM,但足以用于簡單的測試平台)。

對于任何新裝置,我的第一步是嘗試使用實時USB映像來測試硬體。 我手頭上有許多可引導映像,包括Fedora,Ubuntu和Red Hat Enterprise Linux,這些天我傾向于使用64位映像進行測試,因為最終我将運作64位作業系統。 我還确認該系統已設定為啟用VT,以進行硬體加速虛拟化,因為仍有大量系統仍在BIOS或UEFI中禁用了此設定。
實時圖像中目前最有用的工具是
dmidecode
和
lspci
以提取固件和硬體資訊:
$ sudo dmidecode
System Information
Manufacturer: GIGABYTE
Product Name: GB-BACE-3150
Version: 1.x
Serial Number: To be filled by O.E.M.
UUID: 0XXXXXXX-0XXX-XXXX-XXXX-XXXXXXXXXXXX
Wake-up Type: Power Switch
SKU Number: To be filled by O.E.M.
Family: To be filled by O.E.M.
Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
Vendor: American Megatrends Inc.
Version: F2
Release Date: 06/29/2015
$ sudo lspci
00:00.0 Host bridge: Intel Corporation Device 2280 (rev 21)
00:02.0 VGA compatible controller: Intel Corporation Device 22b1 (rev 21)
00:10.0 SD Host controller: Intel Corporation Device 2294 (rev 21)
00:13.0 SATA controller: Intel Corporation Device 22a3 (rev 21)
00:14.0 USB controller: Intel Corporation Device 22b5 (rev 21)
00:1a.0 Encryption controller: Intel Corporation Device 2298 (rev 21)
00:1b.0 Audio device: Intel Corporation Device 2284 (rev 21)
00:1c.0 PCI bridge: Intel Corporation Device 22c8 (rev 21)
00:1c.1 PCI bridge: Intel Corporation Device 22ca (rev 21)
00:1c.3 PCI bridge: Intel Corporation Device 22ce (rev 21)
00:1f.0 ISA bridge: Intel Corporation Device 229c (rev 21)
00:1f.3 SMBus: Intel Corporation Device 2292 (rev 21)
01:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. Device 522a (rev 01)
02:00.0 Network controller: Intel Corporation Wireless 3160 (rev 83)
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 15)
我預計唯一有潛在問題的裝置是基于Realtek 522a的MicroSD讀卡器。 現代Linux發行版很好地支援所有其他裝置。
檢視技嘉的網站,确認了基于UEFI的BIOS的新固件更新 ,該更新解決了USB裝置和標明的顯示器的某些問題。 鑒于我的主要用例之一是作為HTPC,良好的螢幕支援至關重要,是以是時候進行更新了。
快速檢查提供的
brix_bios_gb-bace-3150_f3.zip
更新确認缺少Linux工具,而且我從未嘗試直接從UEFI Shell從UEFI固件進行固件更新。 BIOS樣式的前端也沒有用于更新固件的選項。
線上搜尋AMI UEFI修補程式,在Phoronix的舊文章中找到了MSI硬體( MSI:從Linux桌面更新BIOS ),表明可能有一個名為
afulnx_64
的工具
afulnx_64
選擇。 在使用檔案托管站點中的随機工具修補系統時,我有些擔心,我發現技嘉科技為其機架式企業級系統提供了該工具的一個版本 。
讓我們從技嘉提供的ZIP檔案中的tools檔案夾中試用afulnx_64可執行檔案:
./afulnx_64
Error: Cannot locate kernel source.
e - Error: Kernel source files cannot be found.
該工具需要建構一個核心子產品才能修補我的BIOS。 從安全角度來看,這有點令人擔憂,但看起來比Matthew Garret近年來談論的某些UEFI工具更好。
此外,UEFI中最近還存在許多安全漏洞,其中包括針對多個關鍵英特爾晶片組的UEFI中标記為ThinkPwn的漏洞,這些晶片組已影響到Lenovo,技嘉,惠普和許多其他公司的産品。 與過去的BIOS更新相比,密切關注針對您的硬體的新UEFI版本可能更為重要,特别是考慮到UEFI子系統在現代硬體上的強大功能。
- Lenovo:系統管理模式(SMM)BIOS漏洞
- HPSBBHF3549 ThinkPwn UEFI BIOS SmmRuntime特權提升
- 寄存器:技嘉BIOS壞了
在這一點上,我嘗試尋找真正開放的替代方案,例如flashrom :
$ sudo flashrom-程式員内部-V
Linux 4.4.0-28-generic(x86_64)上的flashrom v0.9.9-rc1-r1942
flashrom是免費軟體,請在https://flashrom.org上擷取源代碼。
flashrom使用libpci 3.3.1,GCC 5.3.1 20160225,little endian建構
找到了Macronix閃存晶片“ MX25U6435E / F”(8192 kB,SPI)。
該晶片可能包含一次性可程式設計存儲器。 flashrom無法讀取,也可能永遠無法寫入,是以它可能無法完全克隆此晶片的内容(有關詳細資訊,請參見手冊頁)。 未指定任何操作。
在0x7fc38d7470fc恢複MMIO空間
看起來不太好,是以回到
afulnx_64
工具。 幸運的是,大多數實時USB映像将允許您安裝其他程式包,是以我提取了核心标頭并再次嘗試了
afulnx_64
。 我無法在Ubuntu 14.04或16.04上使用它,但是它确實在RHEL 7.2上運作。由于對新硬體感到不安,我首先檢查了目前的bios安裝,以确認該工具“似乎可以正常工作”:
$ sudo ./afulnx_64 /S
+--------------------------------------------------------+
AMI Firmware Update Utility v3.05.02
Copyright (C)2013 American Megatrends Inc. All Rights Reserved.
+--------------------------------------------------------+
Reading flash ............... done
- System ROM ID = 000
- System ROM GUID = 206a14ad-fcd9-4e0c-91fbd419d9e41972
- System ROM Secure Flash = Disable.
然後執行現有ROM的備份,作為對該工具的進一步測試:
$ sudo ./afulnx_64 ./F2.ROM /O
+--------------------------------------------------------+
AMI Firmware Update Utility v3.05.02
Copyright (C)2013 American Megatrends Inc. All Rights Reserved.
+--------------------------------------------------------+
Saving current BIOS into file: ./F2.ROM
Reading flash ............... done
驗證工具是否了解此主機闆随附的新ROM:
$ sudo ./afulnx_64 ../image.bin /D
+--------------------------------------------------------+
AMI Firmware Update Utility v3.05.02
Copyright (C)2013 American Megatrends Inc. All Rights Reserved.
+--------------------------------------------------------+
Reading flash ............... done
- ME Data Size checking . ok
- FFS checksums ......... ok
- ROM File Capsule Header checking.. fail
- ROM File Size checking ........... ok
- ROM ID checking .................. ok
- ROM File verification status ..... ok
手指和腳趾越過時間,因為上面确實出現了一個錯誤:
$ sudo ./afulnx_64 ../image.bin
+--------------------------------------------------------+
AMI Firmware Update Utility v3.05.02
Copyright (C)2013 American Megatrends Inc. All Rights Reserved.
+--------------------------------------------------------+
Reading flash ............... done
- ME Data Size checking . ok
- FFS checksums ......... ok
Erasing Main Block .......... done
Updating Main Block ......... done
Verifying Main Block ........ done
通過
dmidecode
确認BIOS更新:
Handle 0x0000, DMI type 0, 24 bytes
BIOS Information
Vendor: American Megatrends Inc.
Version: F3
Release Date: 03/23/2016
好吧,大約兩個月前,此後硬體一直運作良好。
推薦建議
- 更多供應商應允許直接從BIOS樣式的界面進行UEFI BIOS更新。 UEFI Shell指令行不适用于臨時使用者。
- 如果您的供應商提供了可引導映像,請嘗試首先使用該映像。
- 研究可用的支援工具,但考慮使用實時映像進行修補。 我對建構和安裝自己的核心子產品的工具有所警惕。
- 協助項目(例如flashrom)避免将來出現這些問題。
在下一篇文章中,我将分享修補SSD固件的樂趣。
資源資源
- 技嘉BRIX BACE-3150 X
- Phoronix- MSI:從Linux桌面更新BIOS
- Flashrom
翻譯自: https://opensource.com/life/16/8/almost-open-bios-and-firmware-update-tips-linux-users
bios/固件更新至最新版