跳过正文
  1. Posts/

How to update InsydeH2O BIOS with pure Linux

·3 分钟· · · #LINUX #Idea

作为一个骨灰级 Linux 发烧友,我的电脑到手基本都是第一时间换装 Linux 发行版。这样设备厂商出厂自带的 Windows 系统几乎毫无作用,但我又不能把它干掉——我还得靠它来更新厂商发布的 BIOS。为了偶尔更 BIOS 的需求而不得不保留这近 100GB 磁盘占用的 Windows 着实有些蛋疼,当然我知道可以用类似 WIN2GO 的玩意来更 BIOS,但这又有什么区别呢,还是离不开 Windows。

终于赶在 2024 年的尾巴,我在 Twitter 上闲逛时发现有人提到了纯 Linux 环境更新 BIOS 的方案:https://x.com/felixonmars/status/1876646199207604351

虽然寥寥数语,但激起了心中折腾的一团火:有戏&干之!

我手头笔记本清一色都是联想的 ThinkBook,先拿家里的机器 A 开刀,配置如下:

OS: Ubuntu oracular 24.10 x86_64
Host: 21D0 (ThinkBook 14 G4+ ARA)
Kernel: Linux 6.12.9-bigv
Uptime: 1 day, 53 mins
Packages: 2800 (dpkg), 7 (flatpak)
Shell: zsh 5.9
Display (AUOC391): 2880x1800 @ 90 Hz in 14"
DE: GNOME
WM: Mutter (X11)
WM Theme: Yaru
Theme: Yaru [GTK2/3/4]
Icons: Yaru [GTK2/3/4]
Font: Cantarell (11pt) [GTK2/3/4]
Cursor: DMZ-White (48px)
Terminal: tmux 3.4
CPU: AMD Ryzen 7 6800H (16) @ 4.79 GHz
GPU: AMD Radeon 680M [Integrated]
Memory: 12.95 GiB / 29.55 GiB (44%)
Swap: 5.25 MiB / 32.00 GiB (0%)
Disk (/): 312.72 GiB / 414.32 GiB (75%) - btrfs
Local IP (wlan0): 192.168.31.157/24
Battery (AP16L5J): 77% [AC Connected]
Locale: en_US.UTF-8
  1. 下载 Framework 家的 UEFI shell 更新工具,我们只用到H2OFFT-Sx64.efi,把他保存至/boot/efi:https://downloads.frame.work/bios/Framework_Laptop_13_13th_Gen_Intel_Core_BIOS__3.05_EFI.zip
  2. 下载 UEFI-Shell,将shellx64.efi保存至/boot/efi:https://github.com/pbatard/UEFI-Shell/releases/tag/24H2
  3. 去联想驱动官网下载你笔记本型号对应的 BIOS 更新程序,通常会是j6cn50ww.exe的名字
  4. 尝试用7z解压这个exe文件:7z e j6cn50ww.exe,可能有类似的输出:Comments: This installation was built with Inno Setup.
  5. 我们需要innoextract来解包:innoextract -e j6cn50ww.exe,你会得到一个新的exe,我这里的名字是J6CN50WW.exe
  6. 再用7z解压:7z e J6CN50WW.exe,这次我们应该可以顺利得到真实的 BIOS 固件WinJ6CN50WW.fd
  7. WinJ6CN50WW.fd保存至/boot/efi
  8. 添加 UEFI-Shell 启动项,编辑/etc/grub.d/40_custom,填入如下内容后执行sudo update-grub
    menuentry "UEFI Shell" {
        insmod part_gpt
        insmod chain
        set root='(hd0,gpt1)'
        chainloader /shellx64.efi
    }
  9. 重启进入 UEFI-Shell,输入:FS0: 回车进入 EFI 分区,再输入:H2OFFT-Sx64.efi WinJ6CN50WW.fd回车
  10. 此时熟悉的 BIOS 更新界面出现,耐心等待进度条走完即可完成更新

终于可以把自带的 Windows 分区扔进垃圾堆了✌️


注意:对于某些比较新的联想机型,可能7z就能直接解压得到 BIOS 固件了,一般是 xxx.bin 的命名,innoextract 并不是必须的;还有7z也不不是必须的,你可以换任何能解包exe的工具,比如bsdtar之类。


NOTE: I am not responsible for any expired content.
Created at: 2025-01-12T16:58:10+08:00
Updated at: 2025-01-12T17:04:21+08:00
Origin issue: https://github.com/ferstar/blog/issues/83

相关文章