美文网首页
多系统引导 —— rEFInd手动安装记录

多系统引导 —— rEFInd手动安装记录

作者: 南方老F | 来源:发表于2022-03-04 11:03 被阅读0次

    0x00 前言

    rEFInd对于UEFI下的多系统引导非常有优势,可以自动的识别所有不同系统下的引导文件,并生成启动条目。
    rEFInd有多种安装方式,其中比较方便的是使用自带的脚本命令refind-install即可一键安装。也可以使用手动方式一步步安装所需文件,本文采用手动安装方式。
    谨以此文作为个人安装笔记方便以后查阅。

    • 本文所使用的环境:

      • VMware: Workstation 16 Pro & 16.2.0 build-18760230

      • host: Windows 11 Pro & 22000.282

      • guest: Windows10 && ArchLinux 5.15.2-arch1-1

    • guest 中的分区情况:

    $ lsblk
    NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
    sda           8:0    0   300G  0 disk
    ├─sda1        8:1    0   100G  0 part /
    ├─sda2        8:2    0   300M  0 part /boot/efi
    ├─sda3        8:3    0   190G  0 part /home
    └─sda4        8:4    0   9.7G  0 part [SWAP]
    nvme0n1     259:0    0   200G  0 disk
    ├─nvme0n1p1 259:1    0   529M  0 part  
    ├─nvme0n1p2 259:2    0    99M  0 part
    ├─nvme0n1p3 259:3    0    16M  0 part
    └─nvme0n1p4 259:4    0 199.4G  0 part
    

    注意:nvme0n1p1 是 Win10 的EFI分区,虚拟机系统引导类型:UEFI,磁盘分区表:GPT

    0x01 安装rEFInd

    rEFInd需要配合 efibootmgr 创建一个引导入口,因此安装时需要一同安装:

    pacman -S refind efibootmgr
    

    EFI 分区下创建 refind 目录,并将 efi 引导文件复制到EFI分区下

    mkdir -p /boot/efi/EFI/refind
    cp /usr/share/refind/refind_x64.efi /boot/efi/EFI/refind/
    

    然后使用efibootmgr在UEFI NVRAM中创建一个引导条目,其中 /dev/sda --part 2 是指EFI系统分区所在的磁盘与分区号(即 refind_x64.efi 引导文件所在的磁盘与分区号)。

    efibootmgr --create --disk /dev/sda --part 2 --loader /EFI/refind/refind_x64.efi --label "rEFInd Boot Manager" --verbose
    

    将支持其它系统的相关 efi 引导文件复制到EFI系统分区中的rEFInd安装目录下的 drivers_x64 文件夹中

    mkdir /boot/efi/EFI/refind/drivers_x64
    cp /usr/share/refind/drivers_x64/* /boot/efi/EFI/refind/drivers_x64/
    

    复制 rEFInd 的配置文件、图标文件、字体文件到EFI系统分区中的rEFInd安装目

    cp /usr/share/refind/refind.conf-sample /boot/efi/EFI/refind/refind.conf
    cp -r /usr/share/refind/icons /boot/efi/EFI/refind/
    cp -r /usr/share/refind/ifonts /boot/efi/EFI/refind/
    

    0x02 配置rEFInd

    以root用户运行 mkrlconf。它会尝试在 /boot 中找到你的内核,并自动生成 refind_linux.conf

    mkrlconf
    

    运行之后会在 /boot 下自动生成的引导配置文件 refind_linux.conf

    "Boot with standard options"     "archisobasedir=arch archisolabel=Arch_20211101"
    "Boot to single-user mode"       "archisobasedir=arch archisolabel=Arch_20211101 single"
    "Boot with minimal options"      "ro root=/dev/sda1"
    

    注意:

    • 如果是以启动盘或者挂载镜像文件来安装的系统,那么此时 mkrlconf 找到的内核是启动盘或者挂载镜像文件的内核,一旦移除启动盘或者挂载镜像文件之后,除了最后一行外,其余引导将不起作用。

    因此我们应该手动地修改引导参数,并且传递相关的参数给内核;
    修改后的引导文件 /boot/refind_linux.conf 如下

    "Boot using default options"        "root=/dev/sda1 rw add_efi_memmap initrd=\boot\intel-ucode.img initrd=\boot\initramfs-%v.img"
    "Boot using fallback initramfs"     "root=/dev/sda1 rw add_efi_memmap initrd=\boot\intel-ucode.img initrd=\boot\initramfs-%v-fallback.img"
    "Boot to terminal"                  "root=/dev/sda1 rw add_efi_memmap initrd=\boot\intel-ucode.img initrd=\boot\initramfs-%v.img systemd.unit=multi-user.target"
    

    refind_linux.conf 文件内容解析:

    1. root=/dev/sda1 指定用于启动系统的内核所在的分区。因为 /dev/sda2 挂载在 /boot/efi,而内核文件又放在 /boot 目录下,其中 boot目录是在 / 下,而 /dev/sda1 挂载在 /,所以这里应该设置 root=/dev/sda1

    2. intel-ucode.img 是 针对 Intel的CPU,如果是AMD,则改成 amd-ucode.img

    3. 变量 %v 需要在 /boot/efi/EFI/refind/refind.conf 中取消 extra_kernel_version_strings的注释,否则会引导失败(如果不使用变量 %v 可以直接改成具体的文件名)。

    0x03 使用主题

    rEFInd的主题文件一般都放在/boot/efi/EFI/refind/themes目录下

    mkdir -p /boot/efi/EFI/refind/themes
    cd themes
    git clone https://github.com/kgoettler/ursamajor-rEFInd.git
    

    在rEFInd 配置文件 refind.conf 最末尾添加一行包含主题参数文件的命令

    echo "include themes/ursamajor-rEFInd/theme.conf" >> /boot/efi/EFI/refind/refind.conf
    

    附上一张效果图

    rEFInd.png

    【参考资料】

    相关文章

      网友评论

          本文标题:多系统引导 —— rEFInd手动安装记录

          本文链接:https://www.haomeiwen.com/subject/wyektrtx.html