是否有可能在启动时以某种方式摆脱 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
根据具体情况,有三种简单的方法可以实现您想要做的事情。
- 关机时,使用命令行
shutdown
二进制文件并传递-f
开关,例如重新启动:shutdown -rf now
。如果您愿意,也可以使用此快捷方式。这将仅在下次重新启动时跳过 fsck 检查。 - 当启动时显示 grub 菜单时,按“e”编辑当前启动内核,编辑 vmlinuz 行并附加到
fastboot
末尾。与选项 1 一样,这只会跳过该启动的 fsck 检查。 - 如果你真的想要完全禁用检查(不推荐),您可以编辑文件
/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