埃洛
我真的很难决定要复制粘贴的哪一部分,因为这一切都很好,所以我只想请您阅读。
罗德·史密斯
但是在您开始之前,我想对此发表一点评论。上面的ELILO链接指向UEFI引导的许多页面之一,您可以在Rod Smiths.com撰写的rodsbooks.com上找到该页面。他是一位技术过硬的技术作家,如果您曾经搜索过UEFI引导主题,但最后却不看他的书,那很可能是因为您跳过了前几项结果。
Linux UEFI引导
基本上,Linux内核可以直接由固件执行。
在上面的链接中,他提到了Linux内核的EFI存根加载器 -我认为这是您应该使用的,因为它允许固件本身直接调用linux内核。不管您在做什么,固件都会执行某些操作-听起来好像是在执行某些操作grub
。如果固件可以直接加载os内核,那么引导加载程序有什么用?UEFI固件安装由分区表标记为esp的FAT格式的GPT分区,并执行将其保存为板载闪存模块中的UEFI启动变量的路径。因此,您可能要做的一件事是将Linux内核放在该FAT分区上,并将其路径存储在该启动变量中。突然内核是自己的 引导程序。
引导程序
在UEFI系统上,引导加载程序是冗余的-包括ELILO。
引导加载程序旨在解决的问题是BIOS系统仅读取引导标记分区的第一个扇区并执行它。使用512字节内核进行有意义的事情有点困难,因此通常要做的是编写一个微型实用程序,该实用程序可以将文件系统挂载在其中,您可以在其中保存实际内核并对其进行链式加载。
实际上,即使对于引导加载程序而言,512字节通常也不够用。grub
例如,实际上,在链式加载内核之前,链式加载实际上是在自身进行链式加载,因为它会将第二阶段插入到引导扇区和文件系统的第一个扇区之间的空白区域。这是一种肮脏的技巧-但它确实有效。
引导经理
但是,为了便于配置,可以在中间进行一些调整。
Rod Smith的rEFInd所做的是作为EFI 应用程序启动-这是一个相对较新的概念。它是一个由磁盘从-固件执行并返回到-固件的程序。rEFInd的作用是允许您管理引导菜单,然后将引导选择返回给固件以执行。它带有UEFI文件系统驱动程序 -因此,例如,您可以在非FAT分区(例如您当前的/boot
)上使用内核的EFI-stub加载程序。它根本就不容易管理-如果根本不需要这样的事情-它将可执行系统内核的简单性添加到可配置引导管理器的便利中。
原子间接
内核不需要符号链接-它可以mount --bind
。
如果有你的任何路径/
,你应该禁止符号链接,它是/boot
。在一个孤立的符号链接/boot
是不是你应该永远必须解决这类问题。尽管如此,还是很普遍的做法是/boot
通过几种发行版来建立精心设计的间接寻址(即使这是一个可怕的想法),以便处理就地内核更新和/或多个内核配置。
对于未配置为加载文件系统驱动程序(例如,随rEFInd软件包提供)的 EFI系统,这是一个问题,因为FAT总体上是一个相当愚蠢的文件系统,并且无法理解它们。
我个人不使用rEFInd随附的UEFI文件系统驱动程序,尽管大多数发行版都包含可以通过程序包管理器安装的rEFInd程序包,而忘记了仅使用它们自己的糟糕的/boot
符号链接配置和rEFInd打包的UEFI文件系统驱动程序。
我的配置
我曾经在上面写过一组说明并将其发布在此处,但看起来像:
% grep esp /etc/fstab &&
> ls /esp/EFI
LABEL=ESP /esp vfat defaults 0 1
/esp/EFI/arch_root /boot none bind,defaults 0 0
arch_root/ arch_sqsh/ arch_xbmc/ BOOT/ ipxe/
因此,我只是把这两行/etc/fstab
指向一个我打算包含新的Linux安装目录的文件夹,/boot
而我几乎已经担心了整个事情。我还必须做:
cat /boot/refind_linux.conf
"Arch" "root=LABEL=data rootflags=subvol=arch_root,rw,ssd,compress-force=lzo,space_cache,relatime"
除了refind-efi
通过pacman
第一个安装软件包之外,这是我需要设置尽可能多的单独安装/配置所需要的全部。请注意,上述字符串的大部分由指定为内核参数的特定于btrfs的安装选项组成。一个更典型的/boot/refind_linux.conf
可能看起来像:
"Menu Entry" "root=/dev/sda2"
这就是全部。
rodsbooks.com
如果仍然需要ELILO,则可以在上面的链接中找到安装说明。如果需要rEFInd,则可以在第一段中找到指向它的链接。基本上,如果您想进行任何UEFI引导配置,请先阅读rodsbooks.com。