Неможливо отримати меню "Grub" до тайм-ауту (або піти)


18

Я запускаю Ubuntu 12.04.

Я не можу за все життя отримати грубне меню (з опціями), щоб піти.

Я хотів би, щоб це було автоматично завантажено в перший варіант. Я відредагував / etc / default / grub, щоб він виглядав так:

GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
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=""

Після цього я запустив sudo update-grub . Тоді я зрозумів, що у мене grub 2, тому я запустив sudo update-grub2 (обидва роблять так, що вони успішно створюють файл grub.cfg .

Я перезавантажую комп’ютер, і він повертається до меню «груб» і просто сидить там, поки не зроблю вибір. Це не бажано, якщо живлення згасне ... :-)

Я також спробував перевстановити grub за допомогою sudo grub-install / dev / sda - теж не вдалося


Чи є у вас випадково інший розділ, на який ви встановили Ubuntu, після встановлення поточного розділу, в який зараз хочете завантажуватися автоматично?
fabrator4

Я не впевнений, що ви маєте на увазі, я новачок у Linux. Я встановив попередню установку Ubuntu, але не оновив. Чиста установка. Можливо, я щось згадав про розділ ... Це можливо, якісь ідеї щодо його виправлення?
Ерік

sudo update-grubі sudo update-grub2виконує ту саму команду. Отже, не хвилюйтеся з приводу цієї частини.
saji89

Будь ласка, опублікуйте вихід cat /boot/grub/grub.cfg через пастебін і поділіться посиланням тут. Це для того, щоб побачити фактично grub.cfgстворене.
saji89

Ось пастабін : pastebin.com/xxe2rLhg grub.cfg. Дякуємо за всю вашу допомогу!
Ерік

Відповіді:


23

Як вказують інші відповіді, ви можете стати жертвою рекордної ситуації. Редагування /boot/grub/grub.cfgвручну не повинно викликати сумнівів, оскільки воно створюється автоматично. Ще одна пропозиція, яку можна побачити навколо, - це відредагувати, /etc/grub.d/00_headerале тоді вона може запропонувати втручання користувача в оновлення.

Найпростіше рішення визначити незадокументовану GRUB_RECORDFAIL_TIMEOUT змінну в /etc/default/grub. Наприклад:

GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=5
GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT

Редагувати

Дивіться цю відповідь для отримання більш детальної інформації.


1
Дуже дякую, саме це я шукав!
Авіо

1
Після внесення змін також запустіть update-grubдля створення оновленого /boot/grub/grub.cfgфайлу
Кольт

Не вбивайте функціональність recordfail! Ви хочете триваліший тайм-аут, якщо сталося завантаження помилок. Щоб вручну очистити, все , що вам потрібно , це @ sniffski відповідають: grub-editenv create. Однак, можливо, є якась інша причина recordfail, що встановлюється ...
Cameron Tacklind

6

Використання:

grub-editenv create

Це очистить файл середовища середовища grub і наступного разу має чітко завантажитися.


Дуже дякую вам за спільний доступ. Це спрацювало через SSH, що зробило мій день застрягання на безшовному сервері
Geppettvs D'Constanzo

1
grub-editenv - unset recordfailпрацює також і не впливає на інші оточення, які можуть бути встановлені
Cameron Tacklind

2

змінити GRUB_TIMEOUT=10на нуль

Це мій файл конфігурації:

GRUB_DEFAULT="Ubuntu, with Linux 3.2.0-30-generic-pae"
#GRUB_HIDDEN_TIMEOUT=10
#GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""

Спочатку напишіть назву ОС, на яку ви хочете завантажитися безпосередньо. Шахта - Ubuntu. Отже, ви напишете це як уGRUB_DEFAULT="Ubuntu, with Linux x.x.x-xx-generic-pae"

тоді я використав 1 секунду в, GRUB_TIMEOUT=щоб дати мені 1 секунду перед тим, як вибрати ОС за замовчуванням (якщо мені потрібно завантажитися в іншу ОС, наприклад, Xubuntu)

за GRUB_CMDLINE_LINUX_DEFAULT=""якщо прибрати quite splashце покаже вам тексти замість логотипу Ubuntu під час процесу завантаження (я , як це так: P)


Є ще одне рішення:

Існує програма під назвою відновлення завантаження, яка допомагає в налаштуванні з графічним інтерфейсом.

введіть тут опис зображення

введіть тут опис зображення

як видно із зображення. є коробка під назвою Unhide boot menu. Просто зніміть прапорець і натисніть додаток. Ви можете отримати доступ до цього, натиснувши стрілку розширених параметрів.

встановити ремонт завантаження

sudo add-apt-repository ppa:yannubuntu/boot-repair

sudo apt-get update

sudo apt-get install -y boot-repair

а потім запустіть boot-reapirабо з терміналу, або з тире.


3-е рішення:

Ви можете використовувати простий у користуванні графічний інтерфейс, який називається grub-customizer, щоб зробити ваше життя трохи легким. Як випливає з назви, ви можете зробити набагато більше, ніж просто переупорядкувати записи в меню Grub.

Ви можете встановити його:

sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt-get update
sudo apt-get install grub-customizer

введіть тут опис зображення

як видно з меню, є show menuваріант. Зніміть позначку і подивіться, чи працює


Без змін. : - / Я думав, GRUB_DEFAULT повинен бути числовим числом # відповідно до списку в меню? Зміна GRUB_TIMEOUT на 0 не допомогло.
Ерік

@Eric ви можете скористатися двома способами: якщо вам відомо місце вашої ОС у списку grub, ви можете використовувати номер. Але для мене є 4 дистрибутива Linux та 1 Windows плюс memTest та відновлення. Тож мені важко запам'ятати їх місця :) просто для того, щоб переконатися (я знаю, ви це зробили, але просто для того, щоб переконатися: P). Ви запускали grub-updateпісля зміни значень?
Suhaib

Я запустив grub-update після зміни значень. : - /
Ерік

Я встановив і використав доданий вами ремонт-завантажувальний додаток, він працює при першій перезавантаженні. Після цього меню GRUB повертається і там сидить, поки я не натисну клавішу. Дякую за всю вашу допомогу, я дуже ціную це. Не знаєте, куди подітися звідси ...
Ерік

@Eric ok. Я знайшов 3-те рішення, перевіри це
Suhaib

2

GRUB_HIDDEN_TIMEOUTа GRUB_HIDDEN_TIMEOUT_QUIETпараметри застарілі. Тож прокоментуйте це.

Щоб пропустити меню та відобразити його лише утримуючи ESC, додайте:

GRUB_TIMEOUT_STYLE='countdown'
GRUB_TIMEOUT=1

Зразок /etc/default/grub

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
#GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=1
GRUB_TIMEOUT_STYLE=countdown
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""

'GRUB_TIMEOUT_STYLE' : Якщо для цього параметра встановлено значення "зворотний відлік" або "приховано", GRUB_TIMEOUT перед тим , як відобразити меню, очікує закінчення часу, встановленого "GRUB_TIMEOUT". Якщо протягом цього часу натиснути ESC , воно відобразить меню та чекає введення.


це повинно , але все, що він робить, це показувати стандартне меню на 1 секунду. Принаймні, на абсолютно новий 16.04
22:00

1

Я міг би вирішити цю проблему, додавши наступний рядок до /etc/default/grub

GRUB_DISABLE_OS_PROBER=true

... а потім біг sudo update-grub.

Пояснення: файл /boot/grub/grub.cfgгенерується за update-grubдопомогою запуску з використанням файлів у /etc/grub.dта /etc/default/grub. Тому не слід редагувати grub.cfg, але може бути корисно з’ясувати, чому встановлено тайм-аут. Шукайте рядки, що починаються з, set timeout=а потім шукайте наступний рядок, починаючи з ### END /etc/grub.d/ .... Це може дати вам підказки, який сценарій встановлює час очікування. У моєму випадку сценарій os-prober відповідав за тайм-аут. Виявляється, існує 10-ти часовий тайм-аут, /etc/grup.d/30_os-proberякий не встановлений GRUB_TIMEOUT. Ви можете відключити os-prober GRUB_DISABLE_OS_PROBER=trueабо відредагувати /etc/grup.d/30_os-proberабо використовувати GRUB_OS_PROBER_SKIP_LISTдля пропуску деяких ваших розділів жорсткого диска (30_os-prober використовується, коли десь знайдена інша ОС). Докладніше див. У цьому питанні. Як зазначають інші, ще однією причиною може бути запис справ у цьому випадку GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT.


0

У мене виникла проблема, що меню grub з'являлося завжди після того, як я використовував AUFS (unionfs) для того, щоб поставити кореневу файлову систему наново. Мені довелося фізологічно натискати клавішу введення на сервері після кожного завантаження. Я дотримувався тут інструкцій: вимкнути меню Grub 2 . Оскільки у мене взагалі не було проблем.

Відредагуйте /boot/grub/grub.cfg та змініть:

if [ ${recordfail} = 1 ]; then
  set timeout=-1
else
  set timeout=10
fi

До

if [ ${recordfail} = 1 ]; then
  set timeout=1
else
  set timeout=10
fi

До і після у вашому рішенні абсолютно однакові.
RawwrBag

set timeout=-1не те саме, що set timeout=1. Перший - «чекай вічно», а останній - «чекай одну секунду».
Джефф МакДжункін

0

У мого Ubuntu завжди був час очікування 30 секунд, я б встановив значення чи ні. Ось після, як я з'ясував, що рейтинг запису був відсутнім значенням .

1. Перевірте фактичний скрипт grub /boot/grub/grub.cfg

ІМХО, найкращий спосіб перевірити, що буде робити Груб, - це відкрити /boot/grub/grub.cfg. Це сценарій, що автоматично генерується за grub-mkconfigдопомогою шаблонів /etc/grub.dта налаштувань від /etc/default/grub.

Навколо лінії 109 ви ​​побачите щось на зразок:

108 if [ "${recordfail}" = 1 ] ; then
109   set timeout=30 # Note here this value
110 else
111   if [ x$feature_timeout_style = xy ] ; then
112     set timeout_style=hidden
113     set timeout=3
114   # Fallback hidden-timeout code in case the timeout_style feature is
115   # unavailable.
116   elif sleep --interruptible 3 ; then
117     set timeout=0
118   fi
119 fi

У моєму випадку за допомогою створеного сценарію я міг з’ясувати, що recordfailзмінна не була встановлена.

2. Якщо recordfailзмінна не встановлена, встановіть її

Відкрийте /etc/default/grubулюблений текстовий редактор (наприклад, vim), а потім встановіть змінну GRUB_RECORDFAIL_TIMEOUTзаданому значенню, наприклад, 5 секунд.

Ваш конфігураційний файл повинен виглядати так:

GRUB_DEFAULT=0
GRUB_TIMEOUT=3
GRUB_TIMEOUT_STYLE=hidden
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
GRUB_RECORDFAIL_TIMEOUT=5

3. Оновіть конфігурацію для запуску update-grub

Останній крок, оновіть конфігурацію, з якою слід запустити update-grub. На даний момент GRUB2 використовуватиме встановлений тайм-аут. Ця команда відновить /boot/grub.cfgфайл.

4. Перевірте створений результат сценарію

Знову відкрийте /boot/grub.cfgі перевірте результат у рядку 109:

108 if [ "${recordfail}" = 1 ] ; then
109   set timeout=5 # Note here this value
110 else
111   if [ x$feature_timeout_style = xy ] ; then
112     set timeout_style=hidden
113     set timeout=3
114   # Fallback hidden-timeout code in case the timeout_style feature is
115   # unavailable.
116   elif sleep --interruptible 3 ; then
117     set timeout=0
118   fi
119 fi

Зауважте, що значення у рядку 109 зараз становить 5 замість 30, як раніше.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.