当遇到引导失败时,我看到系统下降到一个提示,上面写着dracut。
据我理解,dracut是用来生成initramfs图像的。我感到困惑的是,基于我正在进入一个名为"dracut“的shell的事实,它似乎不仅仅是一个用于生成initramfs的实用程序,实际上它也是一个在引导时运行的程序。这是正确的吗?-如果上面的内容是准确的,那么initramfs和dracut之间的区别/关系是什么?
发布于 2019-06-05 01:34:32
Dracut是一个生成initramfs实例的工具,它还有所谓的dracut紧急外壳。initramfs的目的是提供一个能够查找、加载和将执行传递到根文件系统的环境。如果在此过程中有什么问题发生,initramfs将下降到dracut紧急外壳,给您一个调试/尝试修复问题的机会。
关于评论意见:
“我很乐意这么做。澄清一下,最初发生的事情是,我有一个运行VMWare的VMWare虚拟机。由于直接将VM导入VMWare工作站的问题,我决定从ESXi中取出VM的硬盘驱动器,放到VMWare工作站中的一个新VM上。然而,当我试图引导VM时,我能够成功地加载GRUB,然后加载dracut,但是dracut却找不到根文件系统。这很奇怪,因为如果dracut能够加载,系统也将能够找到根文件系统。”
安装RHEL时,dracut生成一个initramfs实例,该实例只包含与安装操作系统的硬件兼容所需的驱动程序。当我将RHEL实例的硬盘驱动器从一组虚拟硬件上的ESXi移动到VMWare工作站(一组不同的虚拟硬件)时,与内核关联的initramfs不再具有查找和加载根文件系统所需的适当驱动程序集。
要解决这个问题,在移动硬盘驱动器之前,需要运行dracut --force --no-hostonly。引用https://fedoramagazine.org/initramfs-dracut-and-the-dracut-emergency-shell/
force参数告诉dracut,可以覆盖现有的initramfs存档。no-hostonly参数覆盖默认行为,即只包含与当前运行的计算机相关的驱动程序,并导致dracut将所有驱动程序包含在initramfs中。
这意味着,dracut现在将“膨胀”,并有所有适用的驱动程序时,硬盘驱动器被移动。在移动完硬盘驱动器之后,您必须使用dracut --force重新运行dracut,以重新生成dracut的轻量级版本。
https://unix.stackexchange.com/questions/522876
复制相似问题