ubuntu 12.04,断电重启后启动时停留在启动菜单,必须敲回车才可以进入系统,查看grub.cfg文件发现有这么一段
function recordfail { #存在启动失败记录时调用,设置变量recordfail
set recordfail=1
if [ -n ${have_grubenv} ]; then if [ -z ${boot_once} ]; then save_env recordfail; fi; fi#如果grubenv文件存在,并已设置过相关变量,就将变量recordfail保存到grubenv文件。
}
只要存在启动失败记录
if [ "${
recordfail}" = 1 ]; then
set timeout=-1 #设置超时时间为-1 ,如果不敲回车,不会继续
else
set timeout=10 #设置超时时间为10秒
在grub用set查看时recordfailt的值确实是1,重启机器时值仍然保留。
这样就知道原因出在哪了,有两种解决办法:
方法1、将timeout=-1 改为timeout=10 这样即使以后存在启动失败记录,也只是延时10秒启动
方法2、启动grub时按c键进行grub, 输入unset recordfail 重置recordfail即可。
-------------------------
2015.2.5日将ubuntu12.04内核从3.11升级至3.13,然后发现/boot/grub/grub.cfg有变化。这里修改的-1,有重新变回来了。因此,掉电后再次重启系统,就又停在了这里不动。
重新按此方法设置,新的内核上电就又正常了。
想到一个問題,之前出現国一次需要用fsck来修复 mktemp文件系统的問題,是否和掉电操作频繁有关?
----------首发14.11----------------------2016.7.2补充-------------
彻底解决这个问题的方法:
(A)于是有效的方法是修改/etc/grub.d/00_head文件中:
cat << EOF
if [ \${recordfail} = 1 ]; then
set timeout=-1
else
set timeout=${GRUB_TIMEOUT}
fi
EOF
将set timeout=-1 修改 成自己需要的秒数。
(B)还有一种方法是将/etc/grub.d/00_head文件中的,
set timeout=-1 修改成
set timeout = ${GRUB_RECORDFAIL_TIMEOUT:--1}
然后在/etc/default/grub文件中设置:
GRUB_RECORDFAIL_TIMEOUT=10
保存后执行update-grub
而单一修改/boot/grub/grub.cfg文件,则会因为运行update-grub命令,重新生成此文件而导致修改无效。
首先看看/boot/grub/grub.cfg和/etc/default/grub 和/etc/grub.d三者之间的关系吧:
(grub.cfg)It is automatically generated by grub-mkconfig using templates from /etc/grub.d and