是否可以在不使用 initrd 的情况下将 root 放在 LVM 中?

phu*_*ehe 13 root boot kernel initrd lvm

我刚刚建立了一个 Gentoo 基本系统(这意味着我现在可以启动和登录并使用它做一些事情)。我的根分区位于 LVM2 虚拟组中(具有单独的/boot分区)。为了启动,我需要将以下参数传递给内核:

root=/dev/ram0 real_root=/dev/vg/rootlv init=/linuxrc dolvm
Run Code Online (Sandbox Code Playgroud)

显然,它在挂载 root 之前使用初始 ramdisk 做一些事情(我猜是加载 LVM 的东西)。有没有办法可以将这段代码放入内核本身,这样就不需要 initrd 了?如果没有,我如何自己制作 initrd?

补充一点可能很有用,我曾尝试为非 LVM 根目录编译内核,没有 initrd 并且它运行良好。然后我试图将整个事情放在 LVM 下,但无法启动机器(我猜它无法处理 LVM 的东西)。然后我使用genkernel带有--lvm选项的工具,它创建了我当前正在使用的工作内核和 initrd。

现在我想跳过genkernel并自己做所有事情,最好没有 initrd 以便机器启动得更快(反正我不需要灵活性)。

tan*_*nte 6

简单的回答:不。如果你想要 LVM,你需要一个 initrd。

但正如其他人之前所说:LVM 不会减慢您的系统速度或以其他方式做任何坏事,它们只是允许您创建一个环境,允许您的内核加载并完成其工作。

initrd 允许加载您的内核:如果您的内核位于 LVM 驱动器上,则必须先建立整个 LVM 环境,然后才能加载包含内核的二进制文件。

查看initrd 上维基百科条目,它解释了 initrd 的作用以及您需要它的原因。

另一个注意事项:我明白你想要自己做事的观点,但即使使用 genkernel 也可能弄脏你的手。使用 genkernel --menuconfig all ,您基本上可以设置所有内容,就好像您将在没有工具支持的情况下完全构建内核一样,genkernel 只是为您添加了 make bzImage、make modules 和 make modules_install 行,并执行那些讨厌的 initrd 内容。

您显然可以自己构建 initrd,因为它在此处针对 initramfs此处针对 initrd 进行了概述。

  • 一个小更正:initrd 不用于加载 _kernel_:内核由引导加载程序(GRUB、LILO 等)加载;initrd 是一种提供初始根文件系统的 ram-disk。它应该包含实际使系统运行所需的所有二进制文件(例如,内核模块、用户空间支持程序)。这就是为什么 LVM 根需要它的原因:LVM 子系统需要初始化,并且它的初始化太复杂,单独使用内核引导参数无法方便地完成;因此,initrd 中的`linuxrc` 脚本执行此任务。 (8认同)
  • 由于回答中的相当大的错误而无法投票(initrd 不允许加载内核)。 (2认同)

Lie*_*yan 5

编辑:刚刚意识到您正在尝试在 LVM 上启动,我从未设置过 LVM,也从不需要它们,所以这里的方法可能不起作用

以下是创建无 initrd 内核所需的基本规则(根据记忆,我记不清了):

  1. 重新编译内核,确保内置到内核中(重要:不是作为模块!):

    1. 主板驱动和硬盘驱动(都在下Device Drivers
    2. 文件系统驱动程序//etc/*/lib/modules/*(下File systems

    基本上,内核需要能够挂载根文件系统、读取 /etc/fstab、加载其他驱动程序模块(如果需要)以及挂载其他非根文件系统以完成其余的引导过程。如果您有更复杂的启动过程,例如网络启动,那么您还需要内置这些驱动程序。

  2. 从内核“常规设置 > 初始 RAM 文件系统和 RAM 磁盘 (initramfs/initrd)support”(又名 CONFIG_BLK_DEV_INITRD=n)禁用 initrd。

  3. 修改 GRUB 配置,不再需要 init= 和 realroot=,并设置 root= 使其指向根文件系统设备。

我认为仅此而已。不要忘记保留备份内核和可启动 Live CD 的良好副本,以防万一。

可能出错的事情:如果您编译了错误的驱动程序,或者如果您将基本驱动程序编译为模块,则内核无法读取文件系统。使用新内核或 Live CD 重新启动并使用正确的驱动程序重新编译内核。

唯一困难的部分是弄清楚哪个驱动程序与您的硬件相关。您可以使用lspcilshw来帮助识别您的硬件。如果您还没有这些工具,那么emerge lshw pciutils.