/var/lib/dpkg/ 在 fsck 后消失

wiz*_*zz4 2 dpkg lost-found system-recovery

All apt-like 命令无法创建锁定文件,因为/var/lib/dpkg/不存在。此外,/lost+found/还有内容:

pi@pi-top:~ $ sudo ls -al /lost+found/
total 102456
drwx------ 11 root root      16384 Apr  3 16:26 .
drwxr-xr-x 23 root root       4096 May  5 17:00 ..
-rw-------  1 root root  104857600 Apr  3 16:30 #29025
lrwxrwxrwx  1 root root          9 Mar 29 10:05 #87867 -> /run/lock
lrwxrwxrwx  1 root root          4 Mar 29 10:05 #87868 -> /run
drwxr-xr-x  2 root root       4096 May  5 10:35 #89863
drwxr-xr-x 12 root root       4096 Apr  3 16:41 #89864
drwxr-xr-x 44 root root       4096 Apr  3 16:30 #89865
drwxrwsr-x  2 root staff      4096 Mar 12 14:03 #89866
drwxr-xr-x  6 root root       4096 May  5 16:30 #89867
drwxrwsr-x  2 root mail       4096 Mar 29 10:05 #89868
drwxr-xr-x  2 root root       4096 Mar 29 10:05 #89869
drwxr-xr-x  5 root root       4096 Mar 29 10:32 #89870
drwxrwxrwt  3 root root       4096 May  5 16:31 #89871
Run Code Online (Sandbox Code Playgroud)

许多/var/lib/也丢失了,尽管系统没有显示任何其他症状。是否可以恢复系统(或至少dpkg)?如果是这样,如何?

Gil*_*il' 5

对不起,但在这个阶段,您最好从干净的备份中恢复。当在 中fsck放置如此多的目录时/lost+found,这表明存在大量损坏。很可能有更多的损坏,但因为它在文件内容中而不是在元数据中,fsck 无法知道。

从备份还原时,请确保它是干净的备份。损坏可能在检测到之前就已经开始。

识别其中的文件的唯一方法lost+found是查看它们并弄清楚。没有系统的方法。如果有,fsck 会做。

查看您显示的内容/lost+found,看起来该/var目录已损坏。您可以尝试通过创建修复它/var,并在移动相应的条目/lost+found/var

# Running as root, of course
umask 022
mkdir /var
mv /lost+found/\#87867 /var/lock
mv /lost+found/\#87868 /var/run
mv /lost+found/\#89866 /var/local
mv /lost+found/\#89868 /var/mail
…
Run Code Online (Sandbox Code Playgroud)

我从元数据(所有权和符号链接目标)中找出了上面的条目。您可以通过查看目录内容来了解​​更多信息。与现有系统安装进行比较(最好是相同的发行版或至少是接近的,但处理器架构无关紧要)。

/var/lib可能是#89865因为它往往有很多子目录,但这只是一个猜测。它可能完全来自系统的另一部分。

不要专注于恢复/var/lib/dpkg而忽略其余部分。缺乏/var/lib/dpkg只是你注意到的第一个症状。

在 PC 上,我建议进行 RAM 测试(使用Memtest86+,它在大多数发行版中都可以作为一个包使用,并且至少在 Ubuntu 上默认安装)。在 Raspberry Pi 上,如果您的系统在 SD 卡上,我建议更换 SD 卡:SD 卡是系统中最不可靠的部分,如果您继续使用它,它可能会不断破坏您的数据。