pacman中-f选项导致的文件丢失

由于错误的消息来源,我在arch下都是使用sudo pacman -Syuf升级,

于是今天悲剧发生了。

 

 

像往常一样,我运行了sudo pacman -Syuf(导致我udev损坏,这点是后来regenerate kernel的时候才发现的)

reboot后,就被drop到了recovery shell里

显示的是

Unable to find root device /dev/sda7

you are being dropped to the recovery shell

(rootfs)#

 

在arch的wiki和论坛上查询后,有了下面的解决方法。

使用引导光盘/USB,把引导系统的root换成自己的root,

步骤如下

fdisk -l          (查看自己的arch运行在哪个分区,这里以/dev/sda7为例)

mkdir /mnt/arch

mount /dev/sda7 /mnt/arch

cd /mnt/arch

mount -t proc proc proc/

mount -t sysfs sys sys/

mount -o bind /dev dev/

 

如果你有在别的分区上安装别的文件系统,也一起挂载到这里来

例如有个/boot在/dev/sda8 上

mount /dev/sda8 boot/


 

接下来

chroot  . /bin/bash 
如果这里出现错误,说明你光盘拿错了。



现在已经进入了自己的root中,要做的就是恢复系统

pacman -Qk

检查哪些软件包出了问题

pacman -U /var/cache/pacman/pkg/软件包名字-olderpkgver.pkg.tar.gz


把软件包降级,就能恢复了。

 

如果你不幸像我一样,刚刚犯了洁癖,pacman -Scc清空了旧版缓存

这里还有另一种方法。

按照上面的步骤一直到pacman -Qk

配置网络,重新安装那些软件包

mkinitcpio -p linux 

重构内核 (我是在这里发现udev损坏的)

 

 

最后,reboot即可


版权声明:本文为lx75249原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。