在启动时突破 e2fsck

在启动时突破 e2fsck

是否有可能在启动时以某种方式摆脱 e2fsck?

我的系统每 30 天运行一次 e2fsck,这对我来说没问题,我希望它保持这种状态。但有时当我打开电脑并且 30 天已经过去时,我仍然希望它能快速启动。例如,当我必须通过笔记本电脑进行演示时 - 想象一下告诉 50 个人“我们只需等待 10 分钟……不,我无法避免……是的,这是 Linux,你问这个干什么?” :)

如果我按下 Ctrl+C,它会停止检查并继续启动顺序,但系统无法使用,因为根文件系统是以只读方式挂载的。重新启动后,检查会再次开始。

我在网上搜索了答案,发现有很多类似的问题,但我找不到解决方案。有人知道解决办法吗?

笔记:我正在寻找一个解决方案不是禁用 fsck,这样不是重新启动计算机之前需要执行任何操作——我事先不知道我是否必须跳过检查。

如果重要的话:Debian 6 (Squeeze)。\

更新:我了解到在 Ubuntu 上可以使用 Esc 键退出 e2fsck。这正是我所寻找的 - 有人知道如何在 Debian 上实现这一点吗?

解决方案:加勒特的回答是正确的,我不得不进行编辑/etc/init.d/checkroot.sh。就在这些行之前:

#
# The actual checking is done here.
#
if [ "$rootcheck" = yes ]
then
    ...

我添加了以下几行:

if [ "$rootcheck" = yes ]
then
    if [ -f /forcefsck ] || grep -s -w -i "forcefsck" /proc/cmdline
    then
        echo "fsck was forced."
    else
        echo "********************************************************************************************************"
        echo "*                                                                                                      *"
        echo "*  WARNING: fsck should be run, but it is disabled. Create /forcefsck and reboot at your convenience.  *"
        echo "*                                                                                                      *"
        echo "********************************************************************************************************"
        rootcheck="no"
    fi
fi

效果非常好 - 每次看到这条消息我都会微笑,因为我知道我又节省了半个小时的时间。:)

答案1

根据具体情况,有三种简单的方法可以实现您想要做的事情。

  1. 关机时,使用命令行shutdown二进制文件并传递-f开关,例如重新启动:shutdown -rf now。如果您愿意,也可以使用此快捷方式。这将仅在下次重新启动时跳过 fsck 检查。
  2. 当启动时显示 grub 菜单时,按“e”编辑当前启动内核,编辑 vmlinuz 行并附加到fastboot末尾。与选项 1 一样,这只会跳过该启动的 fsck 检查。
  3. 如果你真的想要完全禁用检查(不推荐),您可以编辑文件/etc/fstab。找到包含根文件系统的行,末尾将有两个数字,通常是1 2。将最后一个数字(此处为 2)更改为 0 将阻止所有自动启动时 fsck 检查在该卷上运行。

针对 #2 进行编辑:您可以为 grub 添加一个新条目fastboot,这可能更适合您的示例情况。这在引导期间提供选择的同时保留了正常的 fsck 检查。

答案2

虽然它没有直接回答你关于如何中止正在运行的 fsck 的问题,但如果你事先知道需要快速启动(例如,如果你计划进行演示),那么你当然可以在更早的时间手动运行 fsck。这将为你提供下一次自动文件系统检查前 30 天的新时间,而无需触及任何系统配置。

答案3

您可以编辑调用 fsck 的启动脚本。例如,您可以让它询问控制台是否执行 fsck,并设置超时时间。脚本位于 /etc/init.d/checkroot.sh 和 /etc/init.d/checkfs.sh 中。

我注意到我的副本中有此代码,您可以重新启用它:

# Disabled AC power check until fsck can be told to only check the
# file system if it is corrupt when running on battery. (bug #526398)
#       if which on_ac_power >/dev/null 2>&1 && [ "$rootcheck" = yes ]
#       then
#               on_ac_power >/dev/null 2>&1
#               if [ "$?" -eq 1 ]
#               then
#                       log_warning_msg "On battery power, so skipping file system check."
#                       rootcheck=no
#               fi
#       fi

相关内容