WeHack BBS
在GM/GS45平台的ThinkPad上使用NVMe的问题 - 可打印的版本

+- WeHack BBS (https://bbs.wehack.space)
+-- 版块: 计算机技术 (https://bbs.wehack.space/forum-5.html)
+--- 版块: 固件技术讨论区 (https://bbs.wehack.space/forum-8.html)
+--- 主题: 在GM/GS45平台的ThinkPad上使用NVMe的问题 (/thread-271.html)



在GM/GS45平台的ThinkPad上使用NVMe的问题 - nadebula - 06-06-2021

试验机型:X200/s,T400,T500 with coreboot(SeaBIOS payload),通过Mini PCIe转M.2支架转接,SSD是X270拆机的东芝128GB PCIe 2x。
尝试在T400/T500上安装,不论WLAN还是WWAN位置,都至少会和键盘、键盘框、掌托中的一者发生冲突(键盘下方的空隙不足以容纳转接板和固定螺母)。另外会观察到SeaBIOS不能正确识别该SSD的容量(显示为大约2GB)。
今天在X200/s上测试,由于X200系列的全高mini PCIe全部位于掌托下方,有足够的空间容纳。同样观测到类似于T400/T500上的现象:

1,不能正确识别容量(显示为1907MiB,约2GB)
2,在安装此SSD的情况下,位于SATA硬盘上已安装好的Debian不能引导(停在Welcome to GRUB处)
3,位于SATA硬盘上的Ubuntu/Mint可以引导(在GRUB loading处需等待较长时间),登入系统之后能正确识别NVMe SSD的容量,也能进行读写操作
4,从USB设备可以引导Debian Installer,整个安装过程正常
5,如将GRUB安装到NVMe设备,则重启后按Esc不能从NVMe引导
6,如将GRUB安装到SATA设备,/boot位于NVMe,则重启后找不到/boot分区
7,如将GRUB安装到SATA设备,/boot也位于SATA硬盘上,现象类似于SATA硬盘上已存在的系统,停在Welcome to GRUB

想知道的是SeaBIOS对NVMe支持欠佳是普遍现象还是只出现在特定型号的SSD上,以及除了更换payload以外可能的解决方式。本人倒是不一定非要在X200/s上使用双硬盘。


RE: 在GM/GS45平台的ThinkPad上使用NVMe的问题 - vimacs - 06-07-2021

不能正确识别容量的确很奇怪,可能和NVMe namespace有关。
既然进入操作系统后可以识别,用Linux做payload应该没问题。另一个可以支持NVMe设备的payload是Tianocore.


RE: 在GM/GS45平台的ThinkPad上使用NVMe的问题 - nadebula - 06-07-2021

本人随后测试了Ubuntu、Mint等发行版,发现它们也是可以正常启动的,只要/boot位于SATA设备上。看起来像是Debian testing的新版grub的行为问题(不一定是bug,也可能是feature),不过主要的问题仍然在于SeaBIOS对于(部分)NVMe设备的识别问题。当然,问题还有可能在于该SSD本身,有可能联想对其拆机的SSD的固件做了手脚,当检测到引导固件非联想官方固件时(换言之,在非联想品牌设备上安装时),就使得引导固件不能正确识别其参数。这一行为有过先例,当年苹果设备专用的一批1.8英寸IDE(ZIF)硬盘就是东芝为其定制的,在非苹果设备上不能正确识别,不过这套机制后来已被破解,有专用的IDE(ZIF)转USB2.0硬盘盒可以使这些硬盘在非苹果系统上正常使用。

本人初步的理解是,只要Linux内核正常加载,就能识别该NVMe设备,那么本人遇到的不能引导的情况,应该属于卡在了grub这一步,尚未加载Linux内核。当然,这不一定是新版grub的bug,也可能是feature(一种保护机制),即禁止引导参数异常的硬盘上的操作系统。

除了研究自行编译构建coreboot镜像(假设未来的某个SeaBIOS版本解决了此类NVMe设备的识别问题),本人近期可能想借用几块不同型号的2230/2242 PCIe 2x/4x的NVMe设备,看看这是普遍现象还是个别案例,不论是关于硬盘还是关于主板芯片组。既然东芝当年可以为苹果定制厂商锁定的机械硬盘,现在同样可以为联想定制厂商锁定的固态硬盘。

关于Tianocore的问题:如果我用Tianocore作为payload,但是同时用SeaBIOS作为它的CSM模块(以提供传统BIOS兼容性),情况会如何……


RE: 在GM/GS45平台的ThinkPad上使用NVMe的问题 - nadebula - 06-13-2021

最新情况:换了另一个型号的SSD,SeaBIOS能识别正确参数,并且不会导致Debian的grub发生异常行为。感觉不像是SeaBIOS或者grub或者Debian的锅。

此SSD虽然存在较为严重的问题,不过至少能让Debian在这台设备上启动了。

最新更新:建兴T11在SeaBIOS payload上可用且货源充足,推荐coreboot+SeaBIOS用户使用。