Centos7
CentOS7 Dracut lvm 命令未找到
由於 Meltdown 問題,我將 CentOS7 核心從 3.10.0-693.11.1 更新到 3.10.0-693.11.6,但在更新之後,我無法啟動,因為 centos 出現錯誤
warning /dev/mapper/centos-root does not exist dracut:/# ls /dev/mapper/ control dracut:/#
看起來我的 initrd 配置錯誤,我仍然可以引導 3.10.0-693.11.1 沒有任何問題。我正在嘗試調試這個(網上有很多資源),但看起來我在這里基本上遺漏了一些東西,因為我無法執行 lvm 命令
dracut:/# lvm scan sh: lvm: command not found dracut:/# ls /etc/lvm/lvm.conf ls: cannot access /etc/lvm/lvm.conf: No file or dictionary dracut:/# ls /etc/lvm ls: cannot access /etc/lvm: No file or dictionary
我看到工具問題通常是由 /sbin 中缺少二進製文件引起的,所以我安裝了穩定的核心並檢查了:
root@localhost ~# ls /sbin/lvm /sbin/lvm root@localhost ~# which lvm /sbin/lvm
所以二進製文件在正確的位置,但由於某種原因,dracut 沒有在 /sbin 中看到它。
我的 3.10.0-693.11.1 和 3.10.0-693.11.6 的 grub 配置幾乎相同
#: after update kernel params linux16 /vmlinuz-3.10.0-693.11.6.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=128M rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rdshell #: before update kernel params linux16 /vmlinuz-3.10.0-693.11.1.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=128M rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rdshell
在這裡我有點掙扎:我瀏覽了 dracut 手冊頁,有很多用於 LVM 的選項,我認為自動發現不起作用,但為什麼它適用於以前的核心而更新的核心有問題?另外,我如何在 initram 上獲得可用的 lvm 工具,以進一步調試它?
感謝您的任何建議!
更新:執行 lsinitrd -m -k 顯示 ramdisk 內沒有 lvm 模組
======================================================================== Image: /boot/initramfs-3.10.0-693.11.6.el7.x86_64.img: 18M ======================================================================== Early CPIO image ======================================================================== drwxr-xr-x 3 root root 0 Jan 22 11:15 . -rw-r--r-- 1 root root 2 Jan 22 11:15 early_cpio drwxr-xr-x 3 root root 0 Jan 22 11:15 kernel drwxr-xr-x 3 root root 0 Jan 22 11:15 kernel/x86 drwxr-xr-x 2 root root 0 Jan 22 11:15 kernel/x86 /microcode -rw-r--r-- 1 root root 24576 Jan 22 11:15 kernel/x86 /microcode/GenuineIntel.bin ======================================================================== Version: dracut-033-502.el7 dracut modules: bash nss-softokn i18n network ifcfg drm plymouth kernel-modules qemu resume rootfs-block terminfo udev-rules biosdevname systemd usrmount base fs-lib shutdown ========================================================================
我試圖將 lvm 核心驅動程序添加到 initram 映像,但不幸的是,它失敗了,沒有任何明顯的問題:
dracut --add-drivers lvm /boot/initramfs-3.10.0-693.11.6.el7.x86_64.img dracut[27939]: Failed to install module lvm
添加 -v 並不指向任何有用的東西。
我有這個問題。我通過以下方式修復了它:
登錄live cd(恢復也應該沒問題)
cp /etc/dracut.conf /etc/dracut.conf.bak nano /etc/dracut.conf
將以下幾行修改為:
# dracut modules to add to the default add_dracutmodules+="lvm" # install local /etc/mdadm.conf mdadmconf="yes" # install local /etc/lvm/lvm.conf lvmconf="yes"
(您可能不需要 mdadmconf,我在 Raid 中添加了它。)
為我的核心重新執行 dracut -f。重啟。
這讓我通過了 lvm 問題。我現在遇到了 sysroot 無法掛載的問題(它讓我進入了恢復 shell)。修復後我會更新。