Grant Curell Asked: 2019-06-05 09:22:29 +0800 CST2019-06-05 09:22:29 +0800 CST 2019-06-05 09:22:29 +0800 CST dracut 和 initramfs 有什么关系? 772 当遇到启动失败时,我看到系统下降到显示 dracut 的提示。 我的理解是 dracut 用于生成 initramfs 的图像。我感到困惑的是,基于我正在放入一个名为“dracut”的 shell 的事实,它似乎不仅仅是一个用于生成 initramfs 的实用程序,但它实际上也是一个独立的程序在启动时运行。这个对吗?- 如果以上内容准确,那么 initramfs 和 dracut 之间的区别/关系是什么? rhel initramfs 1 个回答 Voted Best Answer Grant Curell 2019-06-05T17:34:32+08:002019-06-05T17:34:32+08:00 Dracut 既是一个用于生成 initramfs 实例的工具,它也有所谓的 dracut 紧急外壳。initramfs 的目的是提供一个能够查找、加载并将执行传递给根文件系统的环境。如果在此过程中出现任何问题,initramfs 将进入 dracut 紧急 shell,让您有机会调试/尝试修复问题。 关于评论: “我很乐意。澄清一下,最初发生的事情是我有一个运行 RHEL 的 VMWare VM。由于将 VM 直接导入 VMWare Workstation 时出现问题,我决定只将 VM 的硬盘从 ESXi 拉到一个新 VM 上在VMWare Workstation中。但是,当我尝试启动VM时,我能够成功加载GRUB并随后加载dracut,但是dracut无法找到根文件系统。这很奇怪,因为人们会期望如果dracut可以加载,系统也将能够找到根文件系统。” 当您安装 RHEL 时,dracut 会生成一个 initramfs 实例,该实例仅包含与安装操作系统的硬件兼容所需的驱动程序。当我将 RHEL 实例的硬盘从一组虚拟硬件上的 ESXi 移动到另一组虚拟硬件 VMWare Workstation 时,与内核关联的 initramfs 不再具有查找和加载根文件系统所需的适当驱动程序集. 要解决此问题,在移动硬盘驱动器之前,您需要运行dracut --force --no-hostonly. 引用https://fedoramagazine.org/initramfs-dracut-and-the-dracut-emergency-shell/ force 参数告诉 dracut 可以覆盖现有的 initramfs 存档。no-hostonly 参数覆盖了仅包含与当前运行的计算机密切相关的驱动程序的默认行为,并导致 dracut 将所有驱动程序包含在 initramfs 中。 这意味着 dracut 现在将“臃肿”,并且具有移动硬盘驱动器所需的所有适用驱动程序。完成移动硬盘驱动器后,您必须重新运行 dracut 以dracut --force重新生成轻量级版本的 dracut。
Dracut 既是一个用于生成 initramfs 实例的工具,它也有所谓的 dracut 紧急外壳。initramfs 的目的是提供一个能够查找、加载并将执行传递给根文件系统的环境。如果在此过程中出现任何问题,initramfs 将进入 dracut 紧急 shell,让您有机会调试/尝试修复问题。
关于评论:
当您安装 RHEL 时,dracut 会生成一个 initramfs 实例,该实例仅包含与安装操作系统的硬件兼容所需的驱动程序。当我将 RHEL 实例的硬盘从一组虚拟硬件上的 ESXi 移动到另一组虚拟硬件 VMWare Workstation 时,与内核关联的 initramfs 不再具有查找和加载根文件系统所需的适当驱动程序集.
要解决此问题,在移动硬盘驱动器之前,您需要运行
dracut --force --no-hostonly
. 引用https://fedoramagazine.org/initramfs-dracut-and-the-dracut-emergency-shell/这意味着 dracut 现在将“臃肿”,并且具有移动硬盘驱动器所需的所有适用驱动程序。完成移动硬盘驱动器后,您必须重新运行 dracut 以
dracut --force
重新生成轻量级版本的 dracut。