如何使用纯Linux更新InsydeH2O BIOS

💡 原文英文,约700词,阅读约需3分钟。
📝

内容提要

作者为摆脱BIOS更新对Windows的依赖,探索纯Linux方案:下载Framework的H2OFFT-Sx64.efi和UEFI Shell,从联想驱动页获取BIOS更新exe,用7z或innoextract解出固件fd文件,放入/boot/efi,并在GRUB添加UEFI Shell启动项;重启进入Shell后运行刷写工具完成更新,从而删除Windows分区。

🔎

延伸解读

为何要摆脱Windows更新BIOS

许多Linux用户在新笔记本上安装Linux后,仍保留Windows分区,只因厂商BIOS更新工具通常只提供Windows版。作者也是如此,为了偶尔的BIOS更新,不得不保留约100GB的Windows分区,这既浪费空间又违背了纯Linux的初衷。即使使用Windows To Go,也依然依赖Windows。因此,探索纯Linux更新BIOS的方法,对于希望彻底删除Windows的Linux用户来说,具有实际意义。

关键工具与文件准备

实现纯Linux更新需要几个关键文件:Framework提供的H2OFFT-Sx64.efi刷写工具、UEFI Shell的shellx64.efi,以及从联想驱动页面下载的对应机型BIOS更新exe。这些文件都需要放入EFI系统分区(/boot/efi)。其中,H2OFFT-Sx64.efi是InsydeH2O BIOS的刷写工具,而UEFI Shell则提供了在Linux外执行efi程序的环境。准备时需注意选择与机型匹配的BIOS更新文件。

从exe中提取固件的技巧

联想BIOS更新exe通常使用Inno Setup打包,直接使用7z可能无法解出固件。此时可先用innoextract解包,得到一个新的exe,再用7z提取,最终获得.fd固件文件。对于较新的联想机型,7z可能直接解出.bin固件,无需innoextract。此外,7z并非唯一选择,任何能解包exe的工具(如bsdtar)均可。这一步骤的灵活性有助于适应不同机型的打包方式。

操作流程与风险提示

在GRUB中添加UEFI Shell启动项后,重启进入Shell,切换到EFI分区(FS0:),运行H2OFFT-Sx64.efi和固件文件即可开始刷写。刷写过程中需确保电源稳定,避免中断。作者成功在ThinkBook上完成更新并删除了Windows分区,但此方法涉及BIOS刷写,操作不当可能导致设备无法启动。建议仅在了解风险并做好数据备份的前提下尝试,且不同机型可能存在差异。

❓

Q&A

为什么在Linux系统上更新InsydeH2O BIOS需要保留Windows分区?

因为厂商提供的BIOS更新工具通常只能在Windows下运行,所以即使主要使用Linux,也需要保留Windows分区来执行BIOS更新。

在纯Linux环境下更新InsydeH2O BIOS需要准备哪些工具和文件?

需要下载Framework的H2OFFT-Sx64.efi刷写工具、UEFI Shell的shellx64.efi,以及从联想驱动页面下载对应机型的BIOS更新exe文件。

如何从联想提供的BIOS更新exe文件中提取出固件fd文件?

先用7z尝试解压exe,如果提示是Inno Setup打包的,则使用innoextract解包,得到新的exe后再用7z解压,最终得到.fd固件文件。

怎样在GRUB中添加UEFI Shell启动项以便刷写BIOS?

编辑/etc/grub.d/40_custom文件,添加一个menuentry,内容包含insmod part_gpt、insmod chain、set root='(hd0,gpt1)'和chainloader /shellx64.efi,然后运行sudo update-grub。

进入UEFI Shell后,执行BIOS刷写的具体命令是什么?

在UEFI Shell中,先输入FS0:切换到EFI分区,然后运行H2OFFT-Sx64.efi WinJ6CN50WW.fd(其中WinJ6CN50WW.fd是固件文件名),按回车后会出现BIOS刷写界面,等待完成即可。

对于较新的联想机型,提取BIOS固件有什么更简单的方法?

部分较新联想机型可以直接用7z解压出BIOS固件,通常命名为xxx.bin,这样就不需要innoextract了。另外,7z也不是必须的,可以用任何能解压exe的工具,比如bsdtar。

🏷️

标签

➡️

继续阅读