Jak mogę ukryć moje menu GRUB, ORAZ aby klawisze Shift lub Esc pokazywały ukryte menu GRUB podczas uruchamiania

10

Korzystam z systemu Ubuntu 16.10 i próbuję ukryć moje menu GRUB przy włączaniu / uruchamianiu i chcę, aby menu było wyświetlane tylko po naciśnięciu klawisza Shiftlub Esc.

Zmieniam odpowiednie opcje /etc/default/grubi nadal nie ukryje menu.

Badając ten problem, zauważyłem, że ten post z ukrytego menu GRUB 2013 nie działa, co wskazuje, że problem istnieje już od jakiegoś czasu, i sugeruje zmianę, /etc/grub.d/30_os-proberktórej wolałbym nie robić. Ten kod sugeruje, że skoro znalazł wiele systemów operacyjnych, i tak to ustawi GRUB_TIMEOUT=10.

Oto fragment tego, co mam teraz w /etc/default/grub... menu z 10-sekundowym odliczaniem ...

GRUB_DEFAULT = zapisany
GRUB_SAVEDEFAULT = true
GRUB_HIDDEN_TIMEOUT_QUIET = true
# GRUB_HIDDEN_TIMEOUT = 0
GRUB_TIMEOUT = 10
GRUB_DISTRIBUTOR = `lsb_release -i -s 2> / dev / null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT = „cichy plusk”

Gdybym odkomentowaniu #GRUB_HIDDEN_TIMEOUT=0, a następnie sudo update-grubtwierdzi, że również ustawić GRUB_TIMEOUT=10na GRUB_TIMEOUT=0. Robię to i wciąż widzę menu GRUBA.

W terminal, wpisując info -f grub -n 'Simple configuration'opisuje różne opcje, a na samym końcu informacji, to pokazuje, że niektóre z obecnych poleceń zostały zamortyzowane, i sugeruje, że nowsze zamienniki są lepsze.

Czy ktoś wie, w jaki sposób mogę ukryć moje menu GRUB-a w 16.10 ORAZ sprawić, by rozpoznało Shiftlub Escklucze w czasie uruchamiania?

heynnema
źródło
Cieszę się, że o to pytałeś. Nie mogłem też zmusić mojego do pracy, a to potwierdza, że ​​dzieje się tak, ponieważ skrzynka jest podwójnym wzmacniaczem.
Marmur organiczny
1
@OrganicMarble Problem dotyczy wielu systemów operacyjnych. Aby przetestować, zmodyfikowałem tę część kodu w /etc/grub.d/30_os-prober i chociaż nie dostałem menu, nie byłem w stanie wymusić menu z shiftem lub esc podczas uruchamiania. Nadal nad tym pracuję.
heynnema
Dodałem więcej informacji o błędach związanych z twoimi w mojej odpowiedzi, mogą one pomóc ci dokładniej zrozumieć naturę problemu. Patrzę również na kod Grub2 - próbuję pomóc :)
xtrchessreal
Spróbuj użyć Grub Customizer, jeśli nie, Karta Ustawienia ogólne w tej kolejności - 1 Odznacz pole „szukaj innych systemów operacyjnych” i 2 Odznacz „pokaż menu”, a następnie zapisz. Sprawdź to i sprawdź, czy „Shift” wyświetli menu, a następnie, co się stanie, jeśli nic nie zostanie naciśnięty.
xtrchessreal
Rozumiem, że wolisz nie modyfikować, /etc/grub.d/30_os-proberale tak naprawdę nie widzę szkody. Możesz zachować kopię zapasową lub #Comment swoje zmiany, aby w razie potrzeby można je cofnąć. Obejście znalazłeś wydaje się najbardziej rozsądnym rozwiązaniem w tym momencie.
Elder Geek

Odpowiedzi:

7

OK, ludzie, oto odpowiedź ... aby uzyskać ukryte menu GRUB w konfiguracjach podwójnego rozruchu ... dwie zmiany ... i sudo update-grub...

Edytuj nr 1

Aby uzyskać ukryte menu GRUB-a w konfiguracji uruchamiania wielu systemów, musimy najpierw edytować /etc/default/grub. Otwórz ten plik za pomocą poniższego polecenia:

sudo editor /etc/default/grub

Po otwarciu pliku zastąp te linie

GRUB_HIDDEN_TIMEOUT_QUIET=true
#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=10

z nimi:

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

Spowoduje to, że GRUB wyświetli 3-sekundowy minutnik na ekranie. W ten sposób użytkownik może nacisnąć Escklawisz, aby wyświetlić menu domyślne. W przeciwnym razie uruchomi się domyślny system operacyjny.

Jeśli chcesz, aby domyślny system operacyjny był ustawiony na system ostatnio uruchamiany, dodaj poniższe dwa wiersze pod „GRUB_TIMEOUT = 3” pokazanym powyżej:

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

Edytuj # 2

Następnie należy zaktualizować sondę systemu operacyjnego, aby wyłączyć funkcję szybkiego uruchamiania. Aby to zrobić, należy otworzyć /etc/grub.d/30_os-proberw swoim ulubionym edytorze i zmień poniżej linii (linia 23 na 17.04) przez zastąpienie 1z 0:

quick_boot="1"

Po zakończeniu wiersz powinien brzmieć:

quick_boot="0"

Zapisz pliki, a następnie uruchom poniższe polecenie, aby ponownie skonfigurować bootloader i zastosować zmiany:

sudo update-grub
heynnema
źródło
To zrobiło! +1.
Marmur Organiczny
Wygląda na dobre rozwiązanie :) Teraz mam proste pytanie na ten temat. Jeśli zmienisz GRUB_TIMEOUT z „3” na „1” Czy uruchomisz się szybciej. Czy możesz podać linki, jeśli takie istnieją, gdzie można przeczytać, jak działa ten kod. Chcę zrozumieć, co robi ten kod i sekwencja wywołań funkcji itp. Bardzo doceniam. Fajnie jest, gdy możesz rozwiązać własne pytania - dobra robota.
xtrchessreal
@xtrchessreal tak, zmiana 3 na 1 powoduje, że jest o 2 sekundy krótszy. Doszedłem do wniosku, że 3 sekundy to wystarczający czas, aby podnieść rękę do klawisza Esc, jeśli chcę. Możesz uzyskać info -f grub -n 'Simple configuration'więcej informacji.
heynnema
+1 za Q i +1 za A. W ciągu ostatnich dwóch nocy przeglądałem to z wszelkiego rodzaju modyfikacjami mózgu na 30_os-właściwy, tworząc 31_blah_blah i tworząc 40_custom wszystko bezskutecznie. To jest w AU, ArchLinux, Fedorze i wielu innych miejscach. Jeśli chcesz więcej głosów, sugeruję wyśledzenie wszystkich błędnych odpowiedzi tutaj w AU (jest ich wiele) i głosowanie, aby je zamknąć jako duplikaty tego, a następnie ping do mnie ( @ me) w ogólnym czacie AU z linkiem do duplikatu, a ja też głosuję. Dzięki za to świetne rozwiązanie do badań i pracy! :)
WinEunuuchs2Unix 19.04.17
@ WinEunuuchs2Unix dzięki za miły komentarz i głosy! Sam przeprowadziłem wiele badań, zanim odkryłem, że nikt nie ma eleganckiego rozwiązania ani żadnego rozwiązania ... ale byłem zdeterminowany :-)
heynnema
3

Uważam, że ten problem może wynikać z wielu systemów operacyjnych, zgodnie z tym fragmentem z Wiki Grub2 :

Jeśli nie zostanie wykryty żaden inny system operacyjny, GRUB 2 uruchomi się bezpośrednio do domyślnego systemu operacyjnego i nie zostanie wyświetlone żadne menu. Jeśli zostanie wykryty inny system operacyjny menu GRUB 2 będą wyświetlane.

I

Zapisanie systemu operacyjnego można osiągnąć, uruchamiając sudo grub-set-default, jeśli GRUB_DEFAULT = zapisano w / etc / default / grub. Można go również zapisać, jeśli GRUB_SAVEDEFAULT = true jest również ustawiony w / etc / default / grub. W takim przypadku domyślny system operacyjny pozostaje do momentu ręcznego wybrania nowego systemu operacyjnego z menu GRUB 2 lub wykonania polecenia grub-set-default.

Grub2 Wiki stwierdza również: Uwaga: Od dawna potwierdzono błąd w funkcji ukrytego menu w GRUB 1.97 do GRUB 1.99. Menu może nie zostać ukryte, jak określono w opisie na tej stronie. Chociaż edytowanie skryptu 30_os-prober może rozwiązać ten problem, wykracza to poza zakres tej strony.

Aby obejść ten problem, możesz ustawić, GRUB_TIMEOUT="1"a menu będzie widoczne tylko przez 1 sekundę. Jeśli muszę przełączyć się na inny system operacyjny, po prostu wciskam klawisz strzałki w dół w ciągu tej sekundy, a menu będzie się pojawiało, dopóki nie dokonam wyboru.

Może występować potencjalny problem ze składnią związany z błędem. Nie jestem ekspertem od Grub2, ale w moim pliku grub każdy wiersz poleceń kończy się na = „jakieś cytowane ustawienie”. Pamiętam z moich dni kodowania, że ​​„cudzysłowy” miały przekazywać ciąg, w którym jako cudzysłowy przesyłane były proste wartości liczbowe do zmiennych. Nie jestem NAJLEPSZY w nowych technikach kodowania. np. Oto niektóre z moich wyników grub:

# 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"

Patrzę na ten Grubbug :), aby uzyskać więcej informacji, a także ten błąd Oba są powiązane z Grub2 2 lata . Część tego może być związana z kodem MBR przed przekazaniem do Grub2

xtrchessreal
źródło
Dzięki za twoją odpowiedź. Już korzystam z metody SAVEDEFAULT. TIMEOUT = 1 z pewnością skraca czas wyświetlania menu. Problem dotyczy wielu systemów operacyjnych. Aby przetestować, zmodyfikowałem tę część kodu /etc/grub.d/30_os-proberi chociaż nie dostałem menu, nie byłem w stanie wymusić menu z shiftem lub esc w czasie uruchamiania.
heynnema
Te błędy, które podłączyłeś, nie wydają się istotne, czy coś brakuje?
Starszy Geek
@ElderGeek w odniesieniu do błędu # 1401318 osoba, do której błąd jest przypisany do TJ, wyjaśnia zachowanie od MBR do Gruba, gdy stwierdza: „sen - przerwa” $ timeout ”itd. Jeśli przeczytacie wszystkie jego wypowiedzi w komentarzach do błędu, myślę, że zobaczysz, co najmniej część problemu. Jest także przypisany do błędu # 425979, który ma podobne problemy. Oba błędy dotyczące przytrzymania klawisza Shift, aby menu Grub nie działało, gdy jest ustawione jako ukryte. To właśnie OP próbuje zrozumieć. Mam nadzieję, że to wyjaśnia, dlaczego linki znajdują się w mojej opublikowanej odpowiedzi.
xtrchessreal
Przepraszam za zamieszanie. Przeczytałem pytanie jako „jak mogę ukryć moje menu GRUB-a” Dziękuję za wyjaśnienie. Musiałem przegapić ten komentarz.
Starszy Geek,
@ElderGeek tak naprawdę pytanie brzmi: „jak mogę ukryć moje menu GRUB, ORAZ aby klawisze shift lub esc pokazywały ukryte menu GRUB podczas uruchamiania”. Mam to do ukrycia. Nie dostałem klawiszy Shift ani Esc do pracy. Najwyraźniej ten problem sięga 2013 roku lub wcześniej i dotyczy tylko konfiguracji uruchamiania wielu systemów operacyjnych.
heynnema
3
  1. Chyba chcesz wypróbować „wszystko” dostępne za pośrednictwem /etc/default/grub. Czy przeczytałeś ten link,

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

  2. Sugeruję, aby spróbować usunąć następujące wiersze /boot/grub/grub.cfg,

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

    Tak, wiem, musiałbyś to robić przy każdym update-gruburuchomieniu, ale możesz zrobić skrypt.

sudodus
źródło
Dzięki za twoją odpowiedź. Rzucę okiem na ten link. Znalazłem również sposób na modyfikację /etc/grub.d/30_os-prober, aby nie musiałem za każdym razem edytować grub.cfg.
heynnema
Ma to dla mnie sens, ponieważ w systemie z wieloma uruchomieniami wygląda na to, że ten kod zmienia limit czasu z powrotem na 10 z 0, co wydaje się pokonać HIDDEN_TIMEOUT ....
Elder Geek
@heynnema czy możesz opublikować swoje zmiany w os-prober? Kiedy spojrzałem na link w twoim pytaniu i porównałem go z kodem w mojej os-proberze, numery linii nie miały sensu, więc zakładam, że os-prober zmienił się od tego czasu i bałem się z tym popsuć.
Marmur Organiczny
1
@OrganicMarble zobacz aktualizację mojego pytania. Może możesz wypróbować niektóre / wszystkie moje mody i zobaczyć, co wymyślisz.
heynnema
@sudodus proszę zobaczyć moją odpowiedź
heynnema