Linux:强制只读挂载文件系统的fsck?

前端之家收集整理的这篇文章主要介绍了Linux:强制只读挂载文件系统的fsck?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在为无头嵌入式设备开发,运行CentOS 6.2.用户可以连接键盘,但不能连接显示器,串行控制台需要打开机箱,这是我们不希望用户必须做的事情.这几乎完全避免了使用恢复USB驱动器启动的可能性,除非它只是盲目地重新映像硬盘驱动器.我想提供一些恢复工具,我已经编写了一个工具,它在/ dev / tty1上代替getty来提供这些功能.

一个这样的功能是fsck.我已经找到了如何以只读方式重新安装root和其他文件系统.既然它们是只读的,那么fsck它们然后重新启动应该是安全的.不幸的是,fsck向我抱怨文件系统已安装并拒绝执行任何操作.

如何强制fsck在只读的挂载分区上运行?

根据我的研究,这将是一个模糊不清的东西. “-f”仅表示强制修复干净(但未安装)的分区.我需要修复干净或不干净的安装分区.从我读到的,这是“只有专家”应该做的事情,但没有人费心去解释专家是如何做到的.我希望有人可以向我透露这个.

顺便说一句,我注意到Gentoo上的e2fsck 1.42.4会让你fsck一个挂载的分区,甚至挂载读写,但是如果从终端运行fsck似乎只会这样做,所以它可以询问用户是否有“他们确定要做一些如此危险的事情.我不确定CentOS版本是否做同样的事情,但似乎fsck CAN修复了已安装的分区,但是当它没有从终端运行时它却完全拒绝.

一个最后的选择是我编译自己的黑客fsck.但我担心我会以某种意想不到的方式弄乱它.

谢谢!

注意:最初发布here.

更新:我认为在我写这篇文章的时候并不重要,但为了重新安装fs只读,我必须这样做:

echo s > /proc/sysrq-trigger
echo s > /proc/sysrq-trigger
echo u > /proc/sysrq-trigger

这是我能找到的唯一方法.其他一切抱怨文件系统忙.据我所知,这是“安全的”,但它可能与通常的方法略有不同.这可能是fsck不想修复它的原因.它仍然认为它是读写的.

解决方法

您可以fsck只读文件系统,因为只读挂载并不像读写安装那样将其标记为“脏”.写入缓存中没有任何更改可能只是部分刷新到磁盘,因此所有磁盘上的结构都是一致且安全的,以便fsck进行修改.

但是,如果fsck进行了任何更改,内核的文件系统驱动程序可能会变得混乱,因为它预期保持不变的事情已经从它下面改变了.这不会影响文件系统本身的完整性(因为驱动程序没有写入它),但它可能会使运行系统不稳定.为避免这种情况,如果fsck对文件系统进行了任何更改,则应重新启动.

猜你在找的Linux相关文章