往Gen8上加了一块 PCIe 转 NVMe 转接卡,装上了固态硬盘打算做系统,但是Gen8是不支持UEFI引导,BIOS也没有nvme驱动,隧折腾~
至于为什么不把PVE装到其他地方,把虚拟机放在NVME里面,是因为我打算把整个SATA控制器直通给虚拟机管理,如果PVE装在SATA上就没办法直通控制器了
前言
面临的挑战:
不支持 UEFI:Gen8 只能用传统的 Legacy 模式启动
认不出 NVMe:BIOS 自检阶段根本看不见 PCIe 槽位上的 SSD,无法直接引导
尝试方案:
利用USB或SD(TF)卡插一个轻量级的引导器(Clover 或 Grub),让它先启动,再去寻找并引导 NVMe 上的 PVE 系统
安装前的准备
- PCIe 转 NVMe 转接卡 + NVMe SSD
- USB U盘
- PVE 9.x 安装镜像
第一阶段:将 PVE 安装到 NVMe
- 虽然 BIOS 不认 NVMe,但 PVE 的安装程序(基于 Debian)内核是可以认出的
得益于iLO可以直接把PVE镜像挂在到Gen8上,然后开始安装 - 我选择用Terminal UI 安装 (不知道为啥iLO Console图形交互会很卡)

3.在选择目标磁盘(Target Harddisk)时是可以识别出 NVMe SSD的
SSD只有512G所以我打算
root分配 150G
data分配 250G
Free冗余 50G
swap分配 剩下的零头
4.正常配置 IP、主机名,开始安装
我尝试了很多次,Gen8每次安装PVE都一定会中途出现报错,但不影响最后安装
询问过AI和查阅相关资料后,判断是虚拟化的问题,目前对之后的使用好像也没影响(无视)
5.安装完重启后,机器进不去系统这是正常的,因为 BIOS 找不到引导记录
第二阶段:制作引导U盘
我们需要在内置优盘里做一个向导,告诉 CPU 去哪里找 NVMe
引导方式参考:浅谈几种常见的引导方式
这里有2个方案:
方法 A:使用 Clover 镜像
原装Gen8是不支持的,不加显卡是没办法使用Clover引导的,即便是改成纯文本也不行
以前也用过Clover装黑苹果,觉得Clover界面挺好看的,网上也有很多方便的工具,值得尝试
按网上的教程,制作好启动盘,加入NVME驱动,BIOS引导后就卡死了,只显示一个6
在网上搜寻后发现,有相同问题的人,原文:惠普gen8系列服务器从nvme硬盘启动的方法
原因是没有显卡作为输出设备,详细原文都有写,这里不再重复赘述。
我服务器不打算上显卡,隧放弃A方案
方法 B:配置 GRUB(grub4dos)
理论上GRUB就可以了,但是我做主引导的时候没搞好,导致没成功引导,隧换了grub4dos
前期准备
Diskgenius软件:格式化U盘设置MBR,标记主分区
FirPE(非必要,下载BOOTICE也行):这里面有很多工具,包括BOOTICE(设置主引导记录),模拟BIOS引导的环境,还能制作PE
grub4dos0.4.6a压缩包
制作引导U盘
- 用Diskgenius格式化U盘,设置MBR,并指定主分区
- 使用FirPE里面的BOOTICE

- 设置主引导记录

- 从grub4dos0.4.6a压缩包里拷贝grldr和menu.lst两个文件到U盘里面
grldr在/grub4dos-0.4.6a根目录里面
menu.lst在/grub4dos-0.4.6a/sample文件夹里面 - 从PVE的安装盘里面把/boot 目录复制到 U盘里面
至于怎么搞,安装虚拟机,或者把nvme拔下来用其他电脑提取都行PVE更新了需要手动从新复制一份到U盘,或者将U盘挂载到/boot上 编辑menu.lst
设置短一点的timeout时间
并将下面内容复制到第一个title的前一行,其他项目可以删除可以保留根据 /boot 下面的文件修改对应的bvmlinuz和initrd版本title Proxmox VE (Gen8 NVMe Boot Bridge) # 1. 在/boot 中寻找内核文件 # 根据 /boot 下面的文件设置对应的bvmlinuz版本 find --set-root /boot/vmlinuz-6.xx.xx-1-pve # 2. 加载内核本体 intel_iommu=on,relax_rmrr iommu=pt # 参数 intel_iommu=on,relax_rmrr iommu=pt 是Gen8硬件直通用的(非必要,之后有其他启动参数也要加到这里) kernel /boot/vmlinuz-6.xx.xx-1-pve root=/dev/mapper/pve-root ro quiet intel_iommu=on,relax_rmrr iommu=pt # 3. 加载初始化驱动包 (内含 NVMe 驱动) initrd /boot/initrd.img-6.xx.xx-1-pve- 把修改好的U盘插到Gen8上,不出意外就能正常启动NVMe里面的PVE了

结语
通过U盘跳板曲线救国,让Gen8这一代神鸡跑上了现代化的NVMe存储
NVME能跑PCIe3.0,虚拟机测速如下: