我有一个双启动 (Ubuntu/Ubuntu) 系统,并已将 GRUB2 配置为隐藏启动菜单,除非我按下 Shift 键(或其他键)。这是我在 /etc/default/grub 中的配置:
GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=3
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
但是,无论我做什么,按什么键,或者何时按,它都会启动到默认操作系统选项,我永远看不到 GRUB 菜单。我总是sudo update-grub
在更改这些选项后执行此操作。
我尝试将隐藏超时延长至 15 秒,但我的系统没有改变……就像该值没有被遵守一样——系统立即启动。
我确实有一个软件 RAID 1 配置,但是每个驱动器都是镜像的,并且它们都有 Grub,所以不可能是它。
有任何想法吗?
答案1
将 GRUB_TIMEOUT 更改为某个值(例如 10),更新 grub,您的问题将得到解决。重新启动并按下 Shift 键。
GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=3
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
如果这对您不起作用,那么还有另一种方法可以做到这一点,即更改文件/etc/grub.d/30_os-prober
。备份文件后,我执行了以下步骤,对我来说效果很好。
因此,打开终端并写入
sudo gedit /etc/grub.d/30_os-prober
将打开一个文件。更改以下代码:
make_timeout () {
if [ "x${found_other_os}" = "x" ] ; then
if [ "x${1}" != "x" ] ; then
if [ "x${GRUB_HIDDEN_TIMEOUT_QUIET}" = "xtrue" ] ; then
verbose=
else
verbose=" --verbose"
fi
if [ "x${1}" = "x0" ] ; then
cat <<EOF
if [ "x\${timeout}" != "x-1" ]; then
if keystatus; then
if keystatus --shift; then
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 [ "x\${timeout}" != "x-1" ]; then
if sleep$verbose --interruptible ${GRUB_HIDDEN_TIMEOUT} ; then
set timeout=0
fi
fi
EOF
fi
fi
fi
}
adjust_timeout () {
if [ "x$GRUB_BUTTON_CMOS_ADDRESS" != "x" ]; then
cat <<EOF
if cmostest $GRUB_BUTTON_CMOS_ADDRESS ; then
EOF
make_timeout "${GRUB_HIDDEN_TIMEOUT_BUTTON}" "${GRUB_TIMEOUT_BUTTON}"
echo else
make_timeout "${GRUB_HIDDEN_TIMEOUT}" "${GRUB_TIMEOUT}"
echo fi
else
make_timeout "${GRUB_HIDDEN_TIMEOUT}" "${GRUB_TIMEOUT}"
fi
}
变成这样:
adjust_timeout () {
cat <<EOF
if keystatus --shift; then
set timeout=-1
else
set timeout=0
fi
EOF
}
并保存文件。
运行后sudo update-grub
关闭系统。
现在,当你重新启动系统时,你必须按下并按住不动Shift 键立即地按下电源按钮后。这将引导您进入 Grub。如果您不按 Shift 键,您将自动启动到默认操作系统。祝您好运!
笔记:如果出现任何问题或某些意外行为,请使用备份文件将代码改回原始代码,一切都会恢复正常。