我是 linux 和 bash 的新手,所以我不知道我做错了什么。我将 grub 设置为不显示,并在按下 shift 3 秒后显示。这工作得很好。然后我在 30_os-prober 中更改了行(如下所示),其中包含 'shift' 到 'F11',正如我在这里阅读的那样:http ://www.gnu.org/software/grub/manual/grub.html (13.3 .33)。现在,当我按下 F11 时,什么也没有发生,当我按下 shift 时,我可以看到“Grub 正在加载”,然后默认操作系统(Ubuntu)加载而不显示 grub 菜单。
这是我的 /etc/default/grub 内容的一部分:
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
GRUB_DEFAULT="Custom Menu"
GRUB_HIDDEN_TIMEOUT=1
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="splash"
GRUB_CMDLINE_LINUX=" splash vga=799 quiet"
这是(恕我直言)关键部分,来自/etc/grub.d/30_os-prober:
adjust_timeout () {
#if [ "x${found_other_os}" = "x" ] ; then
if [ "x${GRUB_HIDDEN_TIMEOUT}" != "x" ] ; then
if [ "x${GRUB_HIDDEN_TIMEOUT_QUIET}" = "xtrue" ] ; then
verbose=
else
verbose=" --verbose"
fi
if [ "x${GRUB_HIDDEN_TIMEOUT}" = "x0" ] ; then
cat <<EOF
if [ \${timeout} != -1 ]; then
if keystatus; then
if keystatus --F11; then << There I changed shift to F11
set timeout=-1
else
set timeout=0
fi
else
if sleep$verbose --interruptible 3 ; then
set timeout=0
fi
fi
fi
EOF
else
cat << EOF
if [ \${timeout} != -1 ]; then
if sleep$verbose --interruptible ${GRUB_HIDDEN_TIMEOUT} ; then
set timeout=0
fi
fi
EOF
fi
fi
#fi
}
谢谢你。