我正在运行 Debian Buster,根分区的文件系统突然损坏了。我没有做任何不寻常的事情,只是基本上上网,在某些时候我发现根分区被重新安装为只读。
我尝试重新启动,但 grub 启动时进入的是极简 shell,而不是通常的菜单。因此,我从 Debian usb 启动到救援模式,并对根分区和 efi 分区进行 fsck,发现了很多错误,但似乎都已成功修复。Badblocks 没有发现任何问题,硬盘看起来物理上没问题(没有奇怪的噪音或类似的东西)。
Grub 又可以工作了,但是当我尝试以正常或恢复模式启动 Debian 时,它的内核出现恐慌,说找不到 libseccomp.so.2。然后我记得如果 fsck 无法确定文件在哪里,它会将文件放入“lost+found”中。
那里有很多文件。有没有办法自动恢复所有系统文件?或者我应该格式化并重新安装?
编辑:SMART 检查的结果
# smartctl -HA -f brief -l xerror,error /dev/sda
smartctl 7.0 2018-12-30 r4883 [x86_64-linux-4.19.34-1-lts] (local build)
Copyright (C) 2002-18, Bruce Allen, Christian Franke, www.smartmontools.org
=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED
SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME FLAGS VALUE WORST THRESH FAIL RAW_VALUE
1 Raw_Read_Error_Rate PO-R-- 100 100 050 - 0
2 Throughput_Performance P-S--- 100 100 050 - 0
3 Spin_Up_Time POS--K 100 100 001 - 1712
4 Start_Stop_Count -O--CK 100 100 000 - 4003
5 Reallocated_Sector_Ct PO--CK 100 100 050 - 0
7 Seek_Error_Rate PO-R-- 100 100 050 - 0
8 Seek_Time_Performance P-S--- 100 100 050 - 0
9 Power_On_Hours -O--CK 042 042 000 - 23297
10 Spin_Retry_Count PO--CK 179 100 030 - 0
12 Power_Cycle_Count -O--CK 100 100 000 - 3471
191 G-Sense_Error_Rate -O--CK 100 100 000 - 3116
192 Power-Off_Retract_Count -O--CK 100 100 000 - 73
193 Load_Cycle_Count -O--CK 061 061 000 - 392741
194 Temperature_Celsius -O---K 100 100 000 - 36 (Min/Max 8/48)
196 Reallocated_Event_Count -O--CK 100 100 000 - 0
197 Current_Pending_Sector -O--CK 100 100 000 - 0
198 Offline_Uncorrectable ----CK 100 100 000 - 0
199 UDMA_CRC_Error_Count -O--CK 200 200 000 - 0
220 Disk_Shift -O---- 100 100 000 - 0
222 Loaded_Hours -O--CK 052 052 000 - 19435
223 Load_Retry_Count -O--CK 100 100 000 - 0
224 Load_Friction -O---K 100 100 000 - 0
226 Load-in_Time -OS--K 100 100 000 - 274
240 Head_Flying_Hours P----- 100 100 001 - 0
||||||_ K auto-keep
|||||__ C event count
||||___ R error rate
|||____ S speed/performance
||_____ O updated online
|______ P prefailure warning
SMART Extended Comprehensive Error Log Version: 1 (64 sectors)
No Errors Logged
答案1
在进行任何重大恢复工作之前,您应该检查磁盘设备的 SMART 运行状况,并备份所有关键数据。您的磁盘已被证明并不完全可靠,因此请首先确保您的数据安全。如果 SMART 数据表明磁盘状况不佳,最好换一个新磁盘,而不是试图延长旧磁盘的痛苦。
smartctl
检查磁盘健康状况的一个好命令/dev/sda
是:
smartctl -HA -f brief -l xerror,error /dev/sda
libseccomp.so.2
应该是/usr/lib/x86_64-linux-gnu/
(或不同硬件架构的等效项)。如果该目录丢失,修复起来会很麻烦,因为其中有很多库文件。幸运的是,这可能很简单,只需告诉包管理工具验证任何lib*
包,然后重新安装任何丢失文件的包 - 至少在理论上是这样。
由于您使用的是 Debian,dpkg -V | grep -v ' c '
因此应该检查系统上从.dpkg
软件包安装的所有文件,并报告任何已更改或丢失的文件。该grep
部分从列表中排除任何配置文件。这是我能想到的针对这种情况的最简单的有用工具;如果您碰巧已经debsums
安装或可以安装它,debsums | grep -v 'OK$'
则可以用于相同的目的。
如果您仍然有足够的未损坏的库来允许此命令工作,
apt-get install --reinstall $(dpkg -S $(debsums -c) | cut -d : -f 1 | sort -u)
将自动重新安装任何具有更改的非配置文件的软件包。使用apt-get install --reinstall
重新安装某些文件已损坏的任何软件包比尝试从lost+found
.