ArchLinux升级后报错Cannot find UUID

最近为了给ArchLinux安装Parallels Tools工具,尝试升级了一下系统。执行命令

1
pacman -Syu

没想到重启后报错

Error: device ‘UUID=b5a9a977-e9a7-4d3d-96a9-dcf9c3a9010d’ not found. Skipping fsck.
Error: can’t find UUID=b5a9a977-e9a7-4d3d-96a9-dcf9c3a9010d
You are now being dropped into a emergency shell.
Can’t access tty: job control turned off

不仅无法进入系统,就连键盘也无法工作了,吓得我一度想重装。网上找了一圈之后,找到了几个靠谱的方案。

步骤一:引导盘启动

既然键盘都无法输入了,只能用引导盘来修复问题了。我的fstab文件配置如下

1
2
3
4
# /dev/sda1 		<dir>		<type>
UUID=... / xfs
# /dev/sda2
UUID=... /boot xfs

Paralles选择操作》配置》硬件》CD/DVD1》源,选择archlinux.iso镜像,启动。

步骤二:挂载启动目录和引导目录

执行命令

1
2
mount /dev/sda1 /mnt
mount /dev/sda2 /mnt/boot

需要注意的时,不能只挂在启动目录,引导目录也得同时挂载。

步骤三:更新系统

上一步,挂载了两个目录之后,接下来就要切换到启动目录了,执行

1
arch-chroot /mnt

然后更新系统

1
pacman -Syu

步骤四:重新生成initramfs

虽然我也不太懂什么是initramfs,但是这个命令必须执行,它是解决挂钩的关键

1
mkinitcpio -p linux

特别注意,如果步骤二时只挂载了启动目录,就更新系统的话,执行mkinitcpio命令会报错

‘/lib/modules/4.11.9-1ARCH’ is not a valid kernel module directory

解决办法是需要挂载引导目录后,再执行命令

1
pacman -S linux

重新安装一次linux包,哪怕版本已经最新了。最后执行mkinitcpio命令。

总结

我就是因为更新系统的时候,没有挂载引导目录,导致执行mkinitcpio报错一直找不到模块目录。

avatar

chilihotpot

You Are The JavaScript In My HTML