在基于SD卡的设备上进行异常关闭后,我将SD卡取出到fsck
根文件系统中。这导致以下方面的变化:
e2fsck 1.43.1 (08-Jun-2016)
/dev/sdc2: recovering journal
Superblock needs_recovery flag is clear, but journal has data.
Run journal anyway<y>? no
Clear journal<y>? no
e2fsck: unable to set superblock flags on /dev/sdc2
在这里我两次都回答“否”,但是没有是/否的序列不会立即导致相同的结果。
可以挂载文件系统,并且在临时检查中看起来还可以;它在设备中也可以正常工作,这就是根文件系统(实际上,它不是很好,请参见注释; tldr一些无法恢复的损坏目录)。
我dd
将分区(8 GB)分区为一个文件,并尝试了fsck。有趣的是:
e2fsck 1.43.1 (08-Jun-2016)
plush.rootfs: recovering journal
Clearing orphaned inode 18290 (uid=0, gid=0, mode=0100644, size=34096)
Clearing orphaned inode 18270 (uid=0, gid=0, mode=0100644, size=38916)
Clearing orphaned inode 18250 (uid=0, gid=0, mode=0100644, size=1128076)
Clearing orphaned inode 11411 (uid=0, gid=0, mode=0100644, size=293108)
Setting free inodes count to 406127 (was 408580)
Setting free blocks count to 1305622 (was 1347486)
plush.rootfs: clean, 60209/466336 files, 604906/1910528 blocks (check after next mount)
随后fsck
经过清理,可以安装映像,fsck -f
此后也可以通过。
但是,从中创建原始块副本映像的卡上的文件系统仍然存在相同的问题-除了systemd-fsck
在引导过程中发生的事件外,该文件系统会将文件系统记录为“干净”。但是,随后进行适当的关机,将卡取出并fsck
从另一盒中再次尝试会出现相同的错误。
每当将原件安装在另一台计算机上时,syslog都会指出:
kernel: EXT4-fs (sdc2): 4 orphan inodes deleted
kernel: EXT4-fs (sdc2): recovery complete
既然已经备份了所有内容,那么我愿意在这里尝试任何事情。我可以简单地忘记这一点,并从看似固定的映像中重新刻录分区,但这似乎不是一个非常令人满意的解决方案,因为这意味着假设fsck秘密地无法解决较小的外观问题。
我怀疑这将变成一个关于诸如“ recovery_flag ”之类的东西的“要求提供官方文件”的问题(或者仅仅是“这是什么意思?”问题),因此,沿用这些建议。
apt upgrade
)。之后,它会记录正常的启动-并且systemd-fsck会说“ clean”(我将在其中进行编辑),但是在该上下文之外尝试fsck仍然失败。