Centos7

CentOS7 Dracut lvm 命令未找到

  • December 30, 2020

由於 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)。修復後我會更新。

引用自:https://serverfault.com/questions/893721