在物理机上面安装完物理机碰到下面这个错误:

dracut丢失raid驱动

刚看到这个问题,猜测是因为系统未正确安装,重新安装了一次还是出现同样的问题.开始怀疑不是系统安装问题,整理了下系统启动过程

  • 当系统从固件接口启动(UEFI / BIOS)时,它的工作原理是找到可启动磁盘, 这一步正常
  • 加载bootloader程序(grub/ilo),bootloader程序启动内核和初始化内存镜像(initramfs), 这一步应该也通过了
  • initramfs的内部的工具负责将系统切换到SysVinit/Systemd,但是在启动服务前,需要加载根盘,读取根盘内的相关内容(从上述截图看,是加载根盘过程中,没有找到对应的根盘分区, 这地方出问题了)

出现该问题的最大可能是initramfs中的工具箱根本就无法发现该分区,猜测grub加载的内核并没有对应的驱动设备,我们的物理机使用的megaraid_sas.ko驱动,参考了下dracut的官方文档,需要在/etc/dracut.conf文件中添加下列信息:

# additional kernel modules to the default
add_drivers+="ahci megaraid_sas mpt3sas mpt2sas aacraid"

重新构建一下内存镜像

  • centos 6X
KERNEL_VERSION=`ls /lib/modules/ -1`
dracut --force /boot/initramfs-${KERNEL_VERSION}.img ${KERNEL_VERSION}
  • centos 7X
KERNEL_VERSION=`ls /lib/modules/ -1`
dracut --force --fstab --early-microcode --kmoddir /lib/modules/${KERNEL_VERSION} --kver=${KERNEL_VERSION}

当然上述操作环境需要在livecd环境或者恢复(rescue)模式下, chroot到目标根盘后执行

参考链接

【腾讯云】境外1核2G服务器低至2折,半价续费券限量免费领取!
https://cloud.tencent.com/act/cps/redirect?redirect=1068&cps_key=e4b50f6c64a4480367f8a8d16fd07c5a&from=console

标签: dracut, raid, driver, initramfs, bootloader, chroot

添加新评论