WeHack BBS
入手一台 HP EliteBook 820 G1 - 可打印的版本

+- WeHack BBS (https://bbs.wehack.space)
+-- 版块: 计算机技术 (https://bbs.wehack.space/forum-5.html)
+--- 版块: 硬件设备讨论区 (https://bbs.wehack.space/forum-15.html)
+--- 主题: 入手一台 HP EliteBook 820 G1 (/thread-149.html)



入手一台 HP EliteBook 820 G1 - vimacs - 04-02-2020

HP EliteBook 是我最常用的笔记本系列之一。由于 ThinkPad 在 Haswell 低压处理器和 Broadwell 开始的平台上都启用了 Boot Guard,于是我再次考虑 EliteBook 系列。在 laboneinside 下了几份 EliteBook 的固件,惊喜地发现里面都没有 Boot Guard profile,也就是说没有 Boot Guard,于是我就考虑入手了。这次先入一台 Haswell 低压处理器的 12 寸笔记本 EliteBook 820 G1,这个机型的配置相对固定,没有独显型号。

在这之前,其实我还是有点担心。因为最近 coreboot 邮件列表上讨论某款 HP 的笔记本的 coreboot 移植问题,有人提到了 HP 有一个叫 Sure Start 的类似 Boot Guard 的技术,它是在 EC 固件里面实现的。不过我看了一下 Sure Start 的白皮书,似乎是种类似 measured boot 的机制,不见得会让改过固件的机器无法启动。值得一提的是,HP EliteBook 的 Haswell 和 Broadwell 两代型号的固件都用 MEC1322 作为 EC,而 Chrome EC 恰好支持这个芯片,说不定以后能把这个自由的 EC 固件移植上去。

拿到机器后先检查外观,然后打开后盖,装上一块硬盘启动。HP EliteBook 的官方固件的引导逻辑比较不友好,以前我就体验过了。这次是因为硬盘里面没有设置活动分区,导致固件认为它不是启动设备,于是我先用 USB 启动用 fdisk 设了活动分区,然后正常启动。

用 lscpu 和 dmidecode 看 CPU 和内存的情况。然后用 lspci 看硬件。我收到的这台机装的是 HP 祖传的 Broadcom 无线网卡。820 G1 的无线网卡用的还是半高 mini PCIe 卡槽,因此不需要再买一块 M.2 的卡。

最后说一下大家最关心的 Boot Guard. 此前没考虑 EliteBook,是因为我在中关村疏解之前,现场在一台 EliteBook 上用 intelmetool 检查过,发现有 Verified Boot. 但是后来我发现这工具的检查并不准确。这次我使用了 win-raid.com 论坛上的 MEInfo,在 ME 9.5 的这个版本上还没有 GNU/Linux 的版本,但是有 UEFI 版本。用法很简单,从 Arch 的启动盘里复制一份 shellx64_v1.efi (v2 在这台机上用不了) 到 U 盘,再把 MEInfo 的 EFI 版本复制到 U 盘,设置笔记本用 UEFI 启动,重启后选择启动设备,选择从 EFI 文件启动,启动 EFI shell,然后运行 MeInfo.efi 就行了,EFI shell 也支持重定向输出到文件。MeInfo 报告 Boot Guard 是禁用状态。至于 Boot Guard 是个什么状况,只有之后尝试修改了固件之后才知道了。

另外还有一项挑战,就是这台机子没法用 EHCI 调试了,因为上面的 USB 只有 USB 3.0 接口,在网上找了几张这个机器底座的图片,底座也没有 USB 2.0. 于是只能使用 SPI console 调试了,spkmodem 也许可以,但可能 8254 timer 在新的机器上不好用了,可以尝试一下。


RE: 入手一台 HP EliteBook 820 G1 - vimacs - 04-03-2020

刚才试着读出BIOS,不知道是不是因为有一次夹反了,结果主板坏掉了,只好重新入几块主板。这应该是我毁掉的第3块主板了。

此外我看了下EC那块flash芯片的内容,突然想到EC应该还是和部分BIOS放一起的,而且有可能会和Sure Start有关,因为里面有一个完整的PEI和bootblock,还有CPU微码。之前我还以为是所谓的双BIOS技术,后来知道是EC之后我觉得很困惑。


RE: 入手一台 HP EliteBook 820 G1 - vimacs - 04-07-2020

新主板到了,顺便入了块820G2的主板,结果发现两代主板不通用。除了WLAN接口一个是miniPCIe一个是M.2之外,还有一处排线宽度不同。


RE: 入手一台 HP EliteBook 820 G1 - vimacs - 04-08-2020

今晚试着刷一份 coreboot 进去,结果直接启动不了,然后发现我的备份居然是有问题的(估计是当时备份的时候夹子出问题了,因为今晚刷coreboot的时候备份出来的东西是bootblock完整的),然后我就尝试了使用 HP Sure Start 恢复,居然成功了。
刚才根据Sure Start的一些资料,分析了一下从laboneinside下载下来的BIOS和EC,发现EC的确有一份完整的PEI和bootblock,除此之外还有IFD和GbE区域,布局如下:

0x2000:0x4fff IFD(4K)+GbE(8K)
0x14f000:2fffff PEI(0xAF000)+bootblock(8K)

那么剩下了 1M 多的空间,应该还能放不少东西,因为 EC 固件一般也就做到 64K 左右。

刚才看了 EC 固件里的字符串,发现还有 microcode,于是用 UEFITool NE 看了一下,发现 BIOS 里面的微码都在 EC 的芯片里面。

0xa000:0x24fff ucode

PEI 之前有个 padding 区域,EC 芯片也有。顺便提一下,UEFITool NE 有 Hex view 功能,挺好用的。

0x10a000:0x14efff padding

刚好和 PEI 连着,也就是说:

0x10a000:0x1fffff padding(0x45000)+PEI(0xAF000)+bootblock(8K)

但是MEC1322固件的头部有"CSMS"这4个字符,它的位置在0x11f000,这说明BIOS和EC芯片里面都存在一份MEC1322的固件。
顺便提一下,在 0x10a000之前,EC 芯片里面是一大片 0xff,直到 0x25000 这个位置,看来这 EC 芯片空间浪费不小。


RE: 入手一台 HP EliteBook 820 G1 - vimacs - 04-30-2020

看了一下 Sure Start 的文档,突然想到 flash 里面说的 MUD 指的是 Machine Unique Data. 我原来还以为是种什么新的算法。