如何修改CentOS 7的dracut-initqueue超时时间?
解决CentOS 7开机dracut-initqueue超时进入命令行的问题
我之前帮不少用户处理过这个CentOS 7上的dracut超时问题,确实挺头疼的——远程重启后卡在紧急shell,还得手动输入exit才能完成开机,完全没法自动化运维。核心问题就是dracut在初始化阶段等待存储设备的时间不够,触发了超时机制。要让系统自动等存储加载完成,你可以从调整超时时间和优化dracut配置两方面入手:
一、延长dracut的超时时间
优先推荐用自定义配置文件修改(避免覆盖系统默认的
dracut.conf):- 先创建自定义配置目录(如果不存在的话):
mkdir -p /etc/dracut.conf.d/ - 新建一个超时配置文件:
vi /etc/dracut.conf.d/timeout.conf - 在文件里添加超时设置,比如设为300秒(5分钟,你可以根据自己存储的实际加载时间调整):
这个参数会让dracut在触发超时进入紧急shell前,先等待指定的秒数。timeout=300
- 先创建自定义配置目录(如果不存在的话):
重新生成initramfs镜像,让配置生效:
dracut -f如果你的系统有多个内核版本,最好指定当前内核对应的initramfs,避免影响其他版本:
dracut -f /boot/initramfs-$(uname -r).img $(uname -r)
二、优化dracut对存储设备的识别(可选但推荐)
如果你的存储是iSCSI、SAN或者其他网络存储,可能dracut默认没加载对应的驱动模块,导致识别速度慢,进而触发超时。可以添加相关模块来加速设备识别:
还是在刚才的
/etc/dracut.conf.d/timeout.conf里,添加对应的模块(根据你的存储类型调整):add_dracutmodules+=" iscsi lvm dm-multipath "比如用iSCSI存储就加
iscsi,用LVM逻辑卷就加lvm,多路复用存储就加dm-multipath。再次重新生成initramfs:
dracut -f
三、验证效果
完成配置后重启系统,dracut就会按照你设置的时间等待存储设备加载,直到设备就绪后自动进入系统,不会再跳转到紧急shell。如果还是有问题,可以查看/var/log/dmesg或/var/log/messages里的日志,看看存储设备的加载细节,再针对性调整超时时间或者模块配置。
内容的提问来源于stack exchange,提问作者Pascal




