现象
linux系统启动时,dracut报错某分区找不到,无法系统,并进入紧急模式。如下图:
原因
- 由于grub的配置文件错误,设置了错误的根分区,导致dracut尝试挂载根分区时找不到根分区。
- 由于某种原因(比如升级内核,但新内核没有配套的RAID卡驱动),系统无法识别到硬盘,导致无法挂载根分区。
判断问题原因
在dracut紧急模式的shell中执行 ls /dev/
或 lsblk
,看是否可以看到硬盘设备。有则很可能是原因1导致的,否则是原因2导致的。
解决方法
对原因1导致的问题:
- 方法一:参考问题一的解决方法,重启使用grub shell进入系统后,更新grub.cfg
- 方法二:在dracut紧急模式shell中,尝试手动修改grub.cfg。见下面shell命令。
blkid # 使用blkid获取根分区的UUID
GRUB_CFG=$(find /boot -name "grub.cfg")
vi $GURB_CFG # 在grub.cfg中查找root=字样的字符串,并修改为root=UUID=<blkid查询得到的UUID>
reboot # 重启系统
对原因2导致的问题:
如果用户升级过内核,请重启系统,在grub启动菜单中选择旧内核(一般旧内核的启动项在grub启动菜单的下面),尝试启动。成功进入系统后,可为更新RAID卡等硬件驱动。
如果上述方法无法启动,或用户未升级过内核。请联系天翼云以获取更多帮助。