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和固件更新提示_第1张图片

对于任何新设备,我的第一步是尝试使用实时USB映像来测试硬件。 我手头上有许多可引导映像,包括Fedora,Ubuntu和Red Hat Enterprise Linux,这些天我倾向于使用64位映像进行测试,因为最终我将运行64位操作系统。 我还确认该系统已设置为启用VT,以进行硬件加速虚拟化,因为仍有大量系统仍在BIOS或UEFI中禁用了此设置。

bios/固件更新至最新版_几乎开放:针对Linux用户的BIOS和固件更新提示_第2张图片

实时图像中目前最有用的工具是dmidecodelspci以提取固件和硬件信息:


$ 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和固件更新提示_第3张图片

在线搜索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/固件更新至最新版

你可能感兴趣的:(人工智能,linux,java,大数据,python)