• 借助 Clover 引导主板不支持NVMe固态硬盘上的系统(以启动R730XD服务器上的NVME固态的RAID1 PVE系统为例)


    背景

    R730XD服务器挺不错,就是缺少NVME驱动,不能直接引导NVME上面的系统。借助黑苹果常用的引导工具:四叶草Clover,便可实现引导NVME上的系统

    步骤

    1. 准备Clover

    github下载最新版本的Clover:选择名字形如CloverV2-5XXX.zip的即可。
    解压后找到\EFI\CLOVER\drivers\off\NvmExpressDxe.efi 复制一份到 \EFI\CLOVER\drivers\UEFI\ 目录下,来启用Clover的NVME驱动,否则无法找到NVME硬盘

    2. 将Clover写入引导盘

    用主板原生能识别的硬盘/U盘作为引导盘即可。借助Diskgenius在引导盘上新建一个EFI分区,将解压后的文件放入该分区即可。
    确保分区里面有名为EFI的目录

    3.尝试引导系统

    在BIOS中将引导盘改为第一顺位,启动后应当能看到Clover的界面。如果此时能看到对应系统,选择启动即可。
    若没有看到,按下“F3”键来显示所有隐藏的引导项(一般第一项是Clover自身)。
    按下“F2”键来留下启动日志,方便后续进行快速启动设置。
    多尝试找到正确的启动项即可。

    4. 设置快速启动

    如果想快速启动,我们要先整配置文件,复制一份\EFI\CLOVER\config-sample.plist改名为config.plist
    修改config.plist配置,官方说明文档

    注意:示例配置有些字段后面是带?的,代表了不启用该配置,所以要检查好,要启用时将?去除。

    先将Timeout设置为0(此时不会启动GUI,是纯文字,而且立即启动):

    <key>Timeoutkey>
    <integer>0integer>
    
    • 1
    • 2

    如果不能直接找到启动项,接下来是两种设置启动项的的方式,任选一种即可。

    1. 添加自定义启动项

    直接在Custom的Entries下添加一个新dict,来增加一个新启动项,后续只需要手动启动过一次即可,Clover会默认启动上一次启动的启动项。

    <key>GUIkey>
    <dict>
        ...
        <key>Customkey>
        <dict>
            <key>Entrieskey>
            <array>
                <dict>
                    <key>Pathkey>
                    <string>\EFI\BOOT\BOOTX64.efistring>
                    <key>Typekey>
                    <string>OSstring>
                    <key>Titlekey>
                    <string>My Custom Boot Entrystring>
                    <key>Volumekey>
                    <string>HD(2,GPT,289E11B5-A439-4477-AEBE-89251F1E0F7F,0x800,0x200000)string>
                dict>
            array>
        dict>
    dict>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    重要的是PathVolume,这些可以在 EFI/CLOVER/misc/preboot.log中找到(按“F2”生成的文件)

    2. 设置DefaultLoader和DefaultVolume

    DefaultVolume
    <key>DefaultVolumekey>
    <string>MacHDDstring>
    
    • 1
    • 2

    DefaultVolume 用于在 Clover GUI 中指定默认的启动项。它还可以参见 DefaultLoader。它可以被设置为:

    • 卷名 - 卷的名称。例如,Macintosh。
    • GUID - 在 Clover 的启动、预启动或调试日志中显示的卷的全球唯一标识符。例如,57272A5A-7EFE-4404-9CDA-C33761D0DB3C。
    • 设备路径的一部分 - 同样在 Clover 的日志中显示。例如,HD(1,GPT,57272A5A-7EFE-4404-9CDA-C33761D0DB3C,0x800,0xFF000)。
    • LastBootedVolume - 在 Clover GUI 中,上次启动的卷将被设置为默认的卷。

    OS X 启动磁盘可以用于重启到另一个卷,但对于接下来的重启,将再次使用 DefaultVolume。

    DefaultLoader
    <key>DefaultLoaderkey>
    <string>BOOTX64.efistring>
    
    • 1
    • 2

    除了上述的 DefaultVolume,加载器的路径可以被指定为 DefaultLoader。对于有多个加载器的卷,这提供了更精确的默认项选择。值可以是完整的路径或像文件名那样的唯一部分。

    但不知为何,我使用该方法设置始终无法成功引导,会停留在Clover页面,最后使用了第一种方法。

    后记

    我使用自定义启动项引导的PVE是用systemd-boot引导的(好像把pve直接安装zfs池中会使用该种引导方式),而不是常见的 grub ,两者不同看官方文档
    后续要开启IOMMU时就要改/etc/kernel/cmdline

    root=ZFS=rpool/ROOT/pve-1 boot=zfs
    
    • 1

    改为

    root=ZFS=rpool/ROOT/pve-1 boot=zfs intel_iommu=on iommu=pt
    
    • 1

    再用proxmox-boot-tool refresh进行更新,重启后应用

    参考资料

    https://blog.naturalwill.me/2020/06/13/boot-on-nvme-sdd-with-clover/
    https://zhuanlan.zhihu.com/p/137604937
    https://www.insilen.com/post/501.html

  • 相关阅读:
    数据挖掘与机器学习:Apripori算法
    Mysql进阶-详解InnoDB引擎
    文件的基本操作
    框架安全-CVE 复现&Apache Shiro&Apache Solr漏洞复现
    动态规划题: 统计每个月兔子的总数
    ROS2对比ROS1的一些变化与优势(全新安装ROS2以及编译错误处理)《1》
    神经网络和AI的关系
    Maven仓库地址(寻找Maven依赖)
    【Java毕设项目】基于SpringBoot+Vue校园便利平台的设计与实现
    Kotlin高仿微信-第57篇-VIP管理列表
  • 原文地址:https://blog.csdn.net/Reven_L/article/details/132794522