天天看點

bios/固件更新至最新版_幾乎開放:針對Linux使用者的BIOS和固件更新提示

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,但足以用于簡單的測試平台)。

bios/固件更新至最新版_幾乎開放:針對Linux使用者的BIOS和固件更新提示

對于任何新裝置,我的第一步是嘗試使用實時USB映像來測試硬體。 我手頭上有許多可引導映像,包括Fedora,Ubuntu和Red Hat Enterprise Linux,這些天我傾向于使用64位映像進行測試,因為最終我将運作64位作業系統。 我還确認該系統已設定為啟用VT,以進行硬體加速虛拟化,因為仍有大量系統仍在BIOS或UEFI中禁用了此設定。

bios/固件更新至最新版_幾乎開放:針對Linux使用者的BIOS和固件更新提示

實時圖像中目前最有用的工具是

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樣式的前端也沒有用于更新固件的選項。

bios/固件更新至最新版_幾乎開放:針對Linux使用者的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
           

好吧,大約兩個月前,此後硬體一直運作良好。

推薦建議

  1. 更多供應商應允許直接從BIOS樣式的界面進行UEFI BIOS更新。 UEFI Shell指令行不适用于臨時使用者。
  2. 如果您的供應商提供了可引導映像,請嘗試首先使用該映像。
  3. 研究可用的支援工具,但考慮使用實時映像進行修補。 我對建構和安裝自己的核心子產品的工具有所警惕。
  4. 協助項目(例如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/固件更新至最新版