web-dev-qa-db-ja.com

CentOS7 Dracut lvmコマンドが見つかりません

Meltdownの問題が原因でCentOS7カーネルを3.10.0-693.11.1から3.10.0-693.11.6に更新しましたが、その更新後、centosがエラーでdracutにドロップするため、起動できません

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のmanページを調べたところ、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を追加しても、有用なものはありません。

1
user979291

私はこの問題を抱えていました。私はそれを修正しました:

ライブ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がマウントされない問題が発生しました(回復シェルに移動します)。修正したら更新します。

3
puffin_chunks