Я новичок в 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 is loading», тогда ОС по умолчанию (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
}
Спасибо.