使用Hyper-V的虚拟机,转换导入VMware,或者VMware导入Hyper-V后,因网卡、硬盘驱动等不同,Centos会出现无法启动的情况,这时候需要修复重建initranfs,进入recovery执行下列命令修复:
dracut –regenerate-all –force
如果是要修复Grub2,命令如下:grub2-mkconfig -o /boot/grub2/grub.cfg
怎么判断需要重建initranfs还是重建Grub呢?
一般硬件驱动问题,无法启动,光标会出现在报错后进入dracut视图,因为dracut就是用来修复和建立initranfs的,如果是Grub有问题,广播会一直闪,或者进入Grub视图。
那么initranfs是干什么的呢?问了下GPT
dracut --regenerate-all --force 命令的作用是重新生成(或重建)系统的 initramfs 文件,并且通过 --force 参数强制进行操作。让我们逐步解析这个命令的含义,以及与 initramfs 相关的概念。
dracut 是什么?dracut 是一个用于创建和更新 initramfs(initial RAM filesystem)的工具。在 Linux 系统启动时,initramfs 被加载到内存中,包含了基本的文件系统和启动时需要的驱动程序,用于初始化操作系统并挂载根文件系统。
initramfs?initramfs 是 initial RAM filesystem(初始内存文件系统)的缩写。它是一个用于 Linux 系统引导过程中的临时文件系统,包含了一些基本的工具、驱动程序和脚本,在操作系统的根文件系统挂载之前就会加载。其主要目的是:
initramfs 中加载必要的驱动程序(如硬盘驱动、网络驱动等)来访问磁盘和其他硬件。initramfs 中包含启动系统所需的脚本,这些脚本会引导 Linux 内核找到并挂载真正的根文件系统。具体来说,initramfs 包括以下内容:
dracut --regenerate-all --force 的作用这个命令的主要作用是重新生成当前系统的 initramfs。它会从当前的内核环境生成新的 initramfs 文件,并且通过 --force 参数强制执行。具体步骤如下:
--regenerate-all:这表示 dracut 会重新生成所有内核的 initramfs 文件。通常,在系统中有多个内核版本时,这个命令会更新当前所有的内核版本的 initramfs 文件。--force:这个参数会强制执行命令,即使存在某些配置文件、依赖文件等没有修改,dracut 仍然会强制重新生成 initramfs。它忽略一些安全检查,强制覆盖当前的 initramfs。initramfs?修复或重载 initramfs 通常在以下情况下需要进行:
initramfs。如果没有更新 initramfs,新内核可能无法加载所需的驱动或正确启动。initramfs 以确保系统能够加载适当的驱动程序。initramfs 中的文件可能损坏或丢失,导致系统无法启动。重新生成 initramfs 可以解决此类问题。initramfs 中的配置文件没有正确设置,导致系统无法正确挂载根文件系统,那么通过重新生成 initramfs 可以解决这类启动问题。initramfs 相关的修复操作initramfs 错误(如无法挂载根文件系统或缺少必要驱动),你可以使用 dracut --regenerate-all --force 来重新生成 initramfs,从而解决系统无法启动的问题。initramfs 配置或添加了新的内核模块时,重载 initramfs 会确保系统能够加载新的配置文件或驱动。如果你想手动检查和生成 initramfs,可以执行以下命令:
initramfs 文件:bash复制ls /boot/initramfs-$(uname -r).img 这个命令会列出当前内核版本的 initramfs 文件。dracut 生成新的 initramfs 文件:bash复制dracut --force /boot/initramfs-$(uname -r).img $(uname -r) 这会为当前内核生成新的 initramfs 文件。dracut 是用来生成和更新 initramfs 的工具。initramfs 是一个临时的根文件系统,包含了启动 Linux 系统所需的基本文件和驱动程序。initramfs 可以帮助修复系统启动问题,尤其是在内核更新或硬件更改后。dracut --regenerate-all --force 命令会强制重新生成所有内核版本的 initramfs 文件,确保系统可以正确启动并加载必要的驱动和文件。