Не удается открыть скрытое меню GRUB2?
У меня есть система двойной загрузки (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=""
обратитесь к Grub2 Files and Options
Если это не сработало для вас, есть другой способ сделать это, который включает изменение /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, вы автоматически загрузитесь в операционную систему по умолчанию. Удачи!
Примечание. Если что-то пойдет не так или произойдет какое-то непредвиденное поведение, измените код на исходный, используя файл резервной копии, и все снова вернется в нормальное состояние.