当用户的Red Hat 5.x工作站崩溃并且在文件系统出错时,在下次启动时,它要求root密码进入单一模式并手动运行fsck。
这很烦人,因为用户不能使用他的工作站,我们需要发送一个人来运行fsck。
用户不会在工作站上存储任何有价值的数据,那么有没有办法将这个fsckconfiguration成在没有任何密码的情况下自动运行错误?
什么可能最接近“正式”的方式来做到这一点,通常不build议(有充分的理由!)的事情:
echo ' -y ' > /fsckoptions chattr +i /fsckoptions
所有版本的/etc/rc.d/rc.sysinit
我已经检查在运行fsck
之前将/fsckoptions
的内容添加到$fsckoptions
variables中。 chattr +i
确保没有自动改变它。
所有这些飞行前检查都由操作系统创build的初始ramdisk映像(grub.conf中的initrd选项)控制,操作系统对文件系统上的错误进行快速testing,如果检测到错误,则会下降到单用户模式。 你改变这种行为来运行没有密码的fsck -y
的过程,首先是解压你的内核RPM中包含的initrd镜像。 不幸的是,在每次系统更新之后,你可能必须这样做(因为redhat会为每个内核提供一个新的initrd(或者更具体地说,使用基于你的硬件的mkinitcpio生成一个新的initrd))。
在我们的环境中,我们有同样的问题,感谢你的这个想法。 如果我有时间来看看或解决这个问题,我一定会更新这个post。
我想我find了 在/etc/rc.d/rc.sysinit中,有几行如下所示:
如果! [[“$ fsckoptions”=〜“-y”]]; 然后 fsckoptions =“ - a $ fsckoptions” 科幻
如果! [[“$ fsckoptions”=〜“-y”]]; 然后 如果! [[“$ fsckoptions”=〜“-a”]]; 然后 如果! [[“$ fsckoptions”=〜“-p”]]; 然后 fsckoptions =“ - y $ fsckoptions” 科幻 科幻 科幻
当然,诀窍在于testing这个愚蠢的东西。 我不知道如何强制一个文件系统错误,这将导致正常的自动fsck请求root密码,所以我可以知道它是否实际工作或没有。
用户不会在工作站上存储任何有价值的数据,那么有没有办法将这个fsckconfiguration成在没有任何密码的情况下自动运行错误?
这全部由/etc/rc.d/rc.sysinit
控制,它只是一个shell脚本。 你可以修改这个以适应你的需求(虽然你需要小心,在包更新的情况下你的改变不会丢失)。 寻找脚本调用sulogin
。
查看这个脚本,看起来好像是要删除下面一行:
touch /.autofsck &> /dev/null
系统将不会在以下引导中运行fsck。 如果你使用的是ext3
(或ext4
),你通常不需要运行fsck。
我不知道如何绕过密码。 如果您不担心文件系统的完整性,可以通过将fastboot
追加到grub.conf中的内核行来完全绕过fsck。
另一个解决问题的方法是:在GRUB / LILO中,将init=/bin/bash
到命令行的末尾。 这将允许您绕过您获取fsck的sulogin提示符。