[排错] Linux 解决启动时,某个盘挂不上或者报错 “Warning: dracut-initqueue timeout – starting timeout scripts”

报错代码

启动时某个盘挂不上

或者:

Warning: dracut-initqueue timeout - starting timeout scripts

分析

系统启动 initrd 的时间默认上限是 90 秒钟,如果 initrd 加载的时间超过 90 秒钟,则系统会报此错误。

导致 initrd 加载时间过多的原因有很多,例如系统根 “/” 目录需要加载的硬盘过多、系统根 “/” 目录的逻辑卷过多、根 “/” 目录的系统逻辑卷挂载格式是 /dev// (这是设备的链接文件,需要等待 udev 规则将其创建以后才能挂载)。

注意:当无法正常进入系统时可以进入救援模式后再使用可尝试的解决方法尝试解决问题


可尝试的解决方法一:系统根 “/” 目录不使用由多个硬盘组合而成的逻辑卷

(步骤略)

可尝试的解决方法二:将系统根 “/” 目录的挂载格式写成 /dev/mapper/<volume group>-<logical volume>

步骤一:将系统根 “/” 目录的挂载格式写成 /dev/mapper/<volume group>-<logical volume>

# vim /etc/fstab

(步骤略)

步骤二:重新制作 initrd,让修改后的挂载格式在 initrd(dracut)引导时生效

# mkinitrd

可尝试的解决方法三:延长系统等待 initrd 的时间上限

步骤一: 修改 /ETC/DEFAULT/GRUB 配置文件

# vim /etc/default/grub

在这一行里:

GRUB_CMDLINE_LINUX="......"

添加:

GRUB_CMDLINE_LINUX="...... systemd.default_timeout_start_sec=500s"

(补充:这里以将系统等待 initrd 的时间限延长到 500 秒为例)

步骤二:使刚刚的修改生效

# grub2-mkconfig -o /boot/grub2/grub.cfg

参考文献:

Linux 启动顺序