Як я можу змусити моє меню GRUB бути прихованим, І чи клавіші shift або esc показують приховане меню GRUB під час завантаження


10

Я запускаю Ubuntu 16.10, і я намагаюся приховати своє меню GRUB під час включення / завантаження, і бажаю, щоб меню з’являлося лише при натисканні клавіш Shiftабо Esc.

Я змінюю відповідні параметри, /etc/default/grubі це все ще не приховає меню.

Досліджуючи це, я виявив, що цей пост з 2013 року GRUB приховане меню не працює, що вказує на те, що проблема існує вже деякий час, і пропонує зміни, /etc/grub.d/30_os-proberякі я б краще не робив. Цей код говорить про те, що оскільки знайдено декілька ОС, все GRUB_TIMEOUT=10одно буде встановлено .

Ось фрагмент того, що я маю зараз у /etc/default/grub... меню з 10 секундним відліком ...

GRUB_DEFAULT = збережено
GRUB_SAVEDEFAULT = вірно
GRUB_HIDDEN_TIMEOUT_QUIET = вірно
# GRUB_HIDDEN_TIMEOUT = 0
GRUB_TIMEOUT = 10
GRUB_DISTRIBUTOR = `lsb_release -i -s 2> / dev / null || відлуння Debian`
GRUB_CMDLINE_LINUX_DEFAULT = "тихий сплеск"

Якщо я коментую #GRUB_HIDDEN_TIMEOUT=0, то sudo update-grubнаполягає на тому, що я також ставлюсь GRUB_TIMEOUT=10до цього GRUB_TIMEOUT=0. Я це роблю, і все ще бачу меню GRUB.

В terminal, набравши info -f grub -n 'Simple configuration'описують різні варіанти, і в самому кінці інформації, це показує , що деякі з нинішніх команд були знецінені, і передбачає , що нові заміни краще.

Хтось знає, як я можу змусити своє меню GRUB сховатися до 16.10 І чи розпізнає його Shiftчи Escклавіші під час завантаження?


Я радий, що ти це запитав. Я також не міг змусити мене працювати, і це підтверджує, що це тому, що коробка є подвійним завантажувачем.
Органічний мармур

1
@OrganicMarble Проблема стосується декількох ОС. Щоб перевірити, я змінив цю частину коду в /etc/grub.d/30_os-prober, і хоча у мене не було меню, я не зміг примусити меню змінити або esc під час завантаження. Ще над цим працюю.
heynnema

У свою відповідь я додав ще трохи інформації про помилки, пов’язані з вашими, вони можуть допомогти вам зрозуміти суть проблеми більш досконало. Я також переглядаю код Grub2 - намагаюся допомогти :)
xtrchessreal

Спробуйте скористатися Grub Customizer, якщо ви цього не зробили, вкладка Загальні налаштування в такому порядку - 1 Зніміть прапорець "Шукати інші операційні системи" та 2 Зніміть прапорець "Показати меню", а потім збережіть. Перевірте це і подивіться, чи відобразиться меню "Shift", а потім і те, що станеться, якщо нічого не натиснути.
xtrchessreal

Я можу зрозуміти, що ви краще не змінюєте, /etc/grub.d/30_os-proberале я справді не бачу шкоди. Ви можете зберігати резервну копію копії або # Доповнювати свої зміни, щоб ви могли їх змінити за потреби. Обхідний шлях ви знайшли , здається , найбільш розумне рішення на даний момент.
Старійшина Гік

Відповіді:


7

Добре люди, ось відповідь ... щоб отримати приховане меню GRUB в конфігураціях подвійного завантаження ... два редагування ... і sudo update-grub...

Редагувати №1

Щоб отримати приховане меню GRUB в конфігурації з кількома завантаженнями, спочатку нам потрібно відредагувати /etc/default/grub. Відкрийте цей файл за допомогою команди нижче:

sudo editor /etc/default/grub

Як тільки файл відкриється, замініть ці рядки

GRUB_HIDDEN_TIMEOUT_QUIET=true
#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=10

з цими:

GRUB_HIDDEN_TIMEOUT_QUIET=false
GRUB_TIMEOUT_STYLE=countdown
#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=3

Це призведе до того, що GRUB відобразить на екрані 3-секундний таймер зворотного відліку. Роблячи це, користувач може натиснути Escклавішу, щоб відкрити меню за замовчуванням. В іншому випадку ОС за замовчуванням завантажиться.

Якщо ви хочете, щоб ОС за замовчуванням була встановлена ​​в ОС, що завантажилася останньою системою, додайте нижче два рядки під "GRUB_TIMEOUT = 3", показаний вище:

GRUB_DEFAULT=saved    # change an existing line to this
GRUB_SAVEDEFAULT=true # add this line

Редагувати №2

Далі, сонник ОС повинен бути оновлений, щоб відключити функцію quick_boot. Для цього відкрийте /etc/grub.d/30_os-proberв вашому улюбленому редакторі і змініть наступний рядок (рядок 23 в 17.04), замінивши 1з 0:

quick_boot="1"

Коли ви закінчите, рядок повинен читати так:

quick_boot="0"

Збережіть файли та запустіть команду нижче, щоб перенастроїти завантажувач і застосувати зміни:

sudo update-grub

Це зробили! +1.
Органічний мармур

Це виглядає як хороше рішення :) Зараз у мене просте запитання щодо цього. Якщо ви зміните GRUB_TIMEOUT з "3" на "1", ви швидше завантажуєтесь. Чи можете ви надати посилання, якщо такі є, де можна прочитати, як працює цей код. Я хочу зрозуміти, що робить цей код і його послідовність викликів функцій тощо. Багато вдячного. Приємно, коли ти можеш вирішувати власні запитання - хороша робота над цим.
xtrchessreal

@xtrchessreal так, зміна 3 на 1 робить її на 2 секунди коротшою. Я подумав, що 3 секунди мені вистачає часу, щоб передати руку на клавішу Esc, якщо я цього хочу. Ви можете подивитися info -f grub -n 'Simple configuration'для отримання додаткової інформації.
гейннема

+1 для Q та +1 для А. Останні дві ночі я гуглю за цим способом, використовуючи всі види модифікацій для волосся на 30_os-власних, створюючи 31_blah_blah і створюючи 40_custom все безрезультатно. Це в AU, ArchLinux, Fedora та багатьох інших місцях. Якщо ви хочете отримати більше голосів, я б запропонував відстежувати всі неправильні відповіді тут в АС (є багато) та голосуючи, щоб закрити їх як дублікати цього, потім пінг мені ( @ me) в загальній кімнаті для спілкування з посиланням на дублікат, і я також проголосую за нього. Дякуємо за це чудове дослідження та роботи! :)
WinEunuuchs2Unix

@ WinEunuuchs2Unix дякую за приємний коментар та голоси! Я сам робив багато досліджень, перш ніж з'ясував, що ні в кого не було елегантного рішення чи взагалі будь-якого рішення ... але я був рішучим :-)
heynnema

3

Я вважаю, що ця проблема може бути пов'язана з декількома ОС згідно з цим уривком із вікі Grub2 :

Якщо жодна інша операційна система не виявлена, GRUB 2 завантажиться прямо в операційну систему за замовчуванням, і меню не відображатиметься. Якщо буде виявлена ​​інша операційна система , відобразиться меню GRUB 2 .

І

Збереження ОС можна досягти, запустивши sudo grub-set-default, якщо GRUB_DEFAULT = збережений встановлено в / etc / default / grub. Він також може бути збережений, якщо GRUB_SAVEDEFAULT = true також встановлено в / etc / default / grub. У цьому випадку ОС за замовчуванням залишається, поки в меню GRUB 2 не буде вибрано нову ОС або не буде виконана команда grub-set-default.

У Grub2 Wiki також зазначено: Примітка. Існує давно підтверджена помилка прихованої функції меню в GRUB 1.97 до GRUB 1.99. Меню може не ховатися, як зазначено в описі на цій сторінці. Хоча редагування сценарію 30_os-prober може виправити цю проблему, вона виходить за межі цієї сторінки.

Як обхід, ви можете встановити, GRUB_TIMEOUT="1"і ви побачите меню лише 1 секунду. Якщо мені потрібно перейти на іншу ОС, я просто натискаю клавішу зі стрілкою вниз протягом цієї секунди, і меню з’явиться, поки я не прийму рішення.

Можлива проблема з синтаксисом, пов’язаною з помилкою. Я не експерт Grub2, але в моєму файлі grub кожен командний рядок закінчується на = "деяка настройка цитувань" Я пам’ятаю, що з моїх днів кодування, що "лапки" повинні були передавати рядок, де як нецитати передавали прості числові значення змінним. Я не UP нових методів коду. Наприклад, ось деякі з моїх результатів:

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

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

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

Я переглядаю цього Grubbug :) для отримання додаткової інформації, а також про цей помилок Обидва вони пов'язані з Grub2 2-річними. Дещо з цього може бути пов'язане з кодом MBR перед передачею в Grub2


Дякую за Вашу відповідь. Я вже використовую метод SAVEDEFAULT. TIMEOUT = 1, безумовно, скорочує час появи меню. Проблема стосується декількох ОС. Щоб перевірити, я змінив цю частину коду в /etc/grub.d/30_os-prober, і хоча у мене не було меню, я не зміг примусити меню зі зрушенням або esc під час завантаження.
heynnema

Ці помилки, з якими ви пов’язані, не здаються релевантними чи я щось пропускаю?
Старійшина Гік

@ElderGeek щодо помилки №1401318 особа, яку помилка призначається TJ, пояснює поведінку від MBR до Grub, оскільки він заявляє, що "сон - непереривний $ timeout" і т. Д. Якщо ви читаєте всі його заяви в коментарях про помилку, я думаю ви побачите, в чому полягає хоча б частина проблеми. Він також призначений для помилки № 425979, яка схожа за проблемами. Обидва помилки, які стосуються утримування клавіші shift, щоб привести меню Grub, НЕ працює, коли його встановлено на прихований. Це намагається розібратися і в ОП. Я сподіваюся, що це пояснює, чому посилання є в моїй опублікованій відповіді.
xtrchessreal

Вибачте мою розгубленість. Я читав питання, як сказати "як я можу отримати своє меню GRUB, щоб приховати" Дякую за уточнення. Я, мабуть, пропустив цей коментар.
Старійшина Гік

@ElderGeek насправді, питання полягає в тому, "як я можу примусити моє меню GRUB бути прихованим, і чи клавіші shift або esc показують приховане меню GRUB під час завантаження". Я змусив його ховатися. Я не отримав роботу клавіш shift або esc. Мабуть, ця проблема починається ще з 2013 року або раніше, і впливає лише на конфігурації з кількома завантаженнями.
heynnema

3
  1. Я думаю, ви хочете спробувати "все", доступне через /etc/default/grub. Чи читали ви це посилання,

    help.ubuntu.com/community/Grub2/Setup#Configuring_GRUB_2

  2. Я пропоную вам спробувати видалити наступні рядки з /boot/grub/grub.cfg,

    ...
    set timeout_style=menu
    if [ "${timeout}" = 0 ]; then
      set timeout=10
    fi
    ### END /etc/grub.d/30_os-prober ###
    

    Так, я знаю, вам доведеться це робити кожного разу update-grub, але ви можете зробити сценарій для цього.


Дякую за Вашу відповідь. Я перегляну це посилання. Я також знайшов спосіб змінити /etc/grub.d/30_os-prober, щоб мені не довелося кожен раз редагувати grub.cfg.
heynnema

Це має сенс для мене, так як у багатозавантаженій системі виглядає, що цей код змінює тайм-аут назад на 10 з 0, що, здається, переможе HIDDEN_TIMEOUT ....
Старійшина Geek

@heynnema Ви можете розмістити свої зміни на os-prober? Коли я переглянув посилання у вашому запитанні та порівняв його з кодом у своєму os-prober, номери рядків не мали сенсу, тому я припускаю, що os-prober з того часу змінився, і я боявся зіпсувати його.
Органічний мармур

1
@OrganicMarble дивіться оновлення мого питання. Можливо, ви можете спробувати деякі / всі мої модники і подивитися, що ви придумали.
heynnema

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