文科生 / 网管 / 看书写字 / 动漫 / 不爱国

rEFInd 引导简介

2019.03.15

相比 GRUB,rEFInd 有更漂亮的启动界面 ( 可定制主题 ),多系统和多硬盘的自动扫描更强大。


preview.png


贴一下 官网

安装

# 各个发行版基本上源里都有
apt install refind
pacman install refind

暴力一点的话:

  1. 下载这个文件 refind.zip

  2. 解压扔进 /boot/efi/EFI/ 目录内( 假定 esp 分区挂载在 /boot/efi/ )

  3. 手动添加 UEFI 启动项, 需要用到 efibootmgr 这个工具——

    #  1. 添加
    sudo efibootmgr -c -d /dev/sda -p 1 -L rEFInd -l /EFI/refind/refind_x64.efi
    #                     指定磁盘  分区  启动项名称     refind_x64.efi 的文件路径
    #  2. 查看目前有的所有启动项,返回结果类似 “ Boot0001*  rEFInd ”
    sudo efibootmgr
    #  3. 设置下次从 rEFInd 启动,假设 “ Boot0001*  rEFInd ”
    sudo efibootmgr -n 0001
    #  4. 删除,0001 从上一条返回结果中查看,只取数字即可
    sudo efibootmgr -b 0001 -B
    
  4. Done ~

修改主题及启动项配置

~ λ cat /boot/efi/EFI/refind/refind.conf ( 我的配置 )

#
# refind.conf
# Configuration file for the rEFInd boot menu
#

# 在选择系统的界面停留多久
timeout 10
##  主题相关,可以去 github 翻自己喜欢的风格
hideui singleuser,hints,arrows,label
icons_dir themes/refind-black/icons
banner themes/refind-black/background.png
banner_scale fillscreen
selection_big   themes/refind-black/selection_big.png
selection_small themes/refind-black/selection_small.png
showtools shutdown
# 屏蔽 rEFInd 自带的一些工具,只显示关机按钮
## 主题相关

# 控制 rEFInd 扫描不扫描哪些分区
also_scan_dirs boot,ESP2:EFI/linux/kernels
# @/boot 用来屏蔽 btrfs 子卷,否则启动选单会出现两个选项(包含下面要自定义的)
dont_scan_dirs @/boot,ESP:/EFI/boot,EFI/Dell,EFI/memtest86

# 第一个系统选项,这里的排列会影响启动画面展示顺序
menuentry "Debian Sid" {
# 命名一下
    icon \EFI\refind\icons\os_debian.png
# 自定义一个 logo
    volume ROOT
# 系统所在分区名称,这儿是一个 btrfs 分区
    loader /@/vmlinuz
# /@/ 表示 ROOT 分区里叫 @ 的 btrfs 子卷
    initrd /@/boot/acpi_override
    initrd /@/initrd.img
# 表示 ROOT 分区里 @ 子卷下的 boot 目录及文件
    options "root=LABEL=ROOT rootflags=subvol=@ rw quiet splash i915.enable_guc=3 mem_sleep_default=deep cgroup_enable=memory swapaccount=1"
# 内核启动参数,不像 GRUB 是改 /etc/default/grub,根据自己需要修改
# 下面是定义在启动选单页面按 F2 进入二级菜单时显示的项目
# 启动上一个内核( debian 官方会在升级内核时做个软链接到 *.old )
    submenuentry "Boot using old initrd.img" {
            loader   /@/vmlinuz.old
            initrd   /@/boot/acpi_override
            initrd   /@/initrd.img.old
    }
# 进入单用户模式
    submenuentry "Boot to single-user mode" {
            options "root=PARTLABEL=ROOT rootflags=subvol=@ rw single"
    }
# 进入终端模式
    submenuentry "Boot to terminal" {
            add_options "systemd.unit=multi-user.target"
    }

}

menuentry "Arch Linux" {
    icon     /EFI/refind/icons/os_arch.png
    volume   ROOT
    loader   /@arch/boot/vmlinuz-linux
    initrd   /@arch/boot/intel-ucode.img
    initrd   /@arch/boot/acpi_override
    initrd   /@arch/boot/initramfs-linux.img
    options  "root=LABEL=ROOT rootflags=subvol=@arch quiet splash rw add_efi_memmap  i915.enable_guc=3 mem_sleep_default=deep"
    submenuentry "Boot using fallback initramfs" {
        initrd /@arch/boot/initramfs-linux-fallback.img
    }
    submenuentry "Boot to terminal" {
        add_options "systemd.unit=multi-user.target"
    }
}

快速去掉上面的 " 傻x " 注释,保存到 oooo 文件:

grep -v ^# oooo > refind.conf

Windows 使用

若是 Windows + Linux 的多系统组合,在 Win 或 Linux 里配好就不需要管另一个了。


下载 refind.zip 解压丢进 efi 分区,efi 在 Windows 里不能直接挂载,我们需要 bootice 这个神器!磁盘管理里给 efi 分区分配盘符后就能复制进去。然后在 UEFI 标签下添加启动项,指定好分区和 efi 文件位置即可。