我正在为无头嵌入式设备开发,运行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不想修复它的原因.它仍然认为它是读写的.