Nie można uzyskać menu GRUB-a po przekroczeniu limitu czasu (lub odejść)


18

Używam Ubuntu 12.04.

Nie mogę przez całe życie sprawić, by menu GRUB (z opcjami) zniknęło.

Chciałbym, aby automatycznie uruchomił się w pierwszej opcji. Edytowałem / etc / default / grub, aby wyglądało to tak:

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

Następnie uruchomiłem sudo update-grub . Potem zdałem sobie sprawę, że mam grub 2, więc uruchomiłem sudo update-grub2 (oba wyglądają, jakby pomyślnie utworzyły plik grub.cfg .

Ponownie uruchamiam komputer, a on wraca do menu grub i po prostu siedzi tam, aż dokonuję wyboru. Nie jest to pożądane, jeśli nastąpi zanik zasilania ... :-)

Próbowałem również ponownie zainstalować grub przy użyciu sudo grub-install / dev / sda - również nie powiodło się


Czy przypadkiem masz inną partycję, na którą zainstalowałeś Ubuntu po skonfigurowaniu bieżącej partycji, na której chcesz teraz automatycznie uruchamiać się?
— fabricator4

Nie jestem pewien, co masz na myśli, jestem trochę nowy w Linuksie. Zainstalowałem wcześniejszą instalację Ubuntu, ale nie zaktualizowałem. Czysta instalacja. Mogłem zepsuć coś partycjonalnie ... to możliwe, jakieś pomysły na to naprawić?
— Eric

sudo update-grubi sudo update-grub2uruchamia to samo polecenie. Więc nie martw się o tę część.
— saji89 18.10.12

Proszę opublikować wyniki za cat /boot/grub/grub.cfg pośrednictwem pastebin i udostępnić link tutaj. Ma to na celu wyświetlenie faktycznego grub.cfgwygenerowania.
— saji89

Oto pastebin: pastebin.com/xxe2rLhg z grub.cfg. Dzięki za wszelką pomoc!
— Eric

Odpowiedzi:


23

Jak wskazują inne odpowiedzi, możesz być ofiarą sytuacji braku zapisu . /boot/grub/grub.cfgRęczna edycja powinna być wykluczona, ponieważ jest generowana automatycznie. Inną sugerowaną opcją jest edycja pliku, /etc/grub.d/00_headerale może on poprosić użytkownika o interwencję w sprawie aktualizacji.

Najłatwiejszym rozwiązaniem jest zdefiniowanie nieudokumentowanej GRUB_RECORDFAIL_TIMEOUT zmiennej w /etc/default/grub. Na przykład:

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

Edytować

Zobacz tę odpowiedź, aby uzyskać więcej informacji.


1
Dziękuję bardzo, właśnie tego szukałem!
— Avio

1
Po wprowadzeniu zmiany uruchom także, update-grubaby wygenerować zaktualizowany /boot/grub/grub.cfgplik
— Colt

Nie zabijaj funkcjonalności recordfail! Chcesz wydłużyć limit czasu, jeśli wystąpił błąd uruchamiania. Aby ręcznie jasne, wszystko czego potrzebujesz to użytkownika @ sniffski odpowiedź: grub-editenv create. Jednak może być jakiś inny powód, dla którego warto recordfailsię ustawić ...
— Cameron Tacklind,

6

Posługiwać się:

grub-editenv create

Spowoduje to wyczyszczenie pliku środowiska grub i powinno zostać uruchomione wyraźnie następnym razem.


Dziękuję bardzo za udostępnienie. To działało przez SSH, co sprawiło, że mój dzień utknął na grubym serwerze bezgłowym.
— Geppettvs D'Constanzo

1
grub-editenv - unset recordfaildziała również i nie wpływa na inne środowiska, które mogą być ustawione
— Cameron Tacklind,

2

zmień na GRUB_TIMEOUT=10zero

To jest mój plik konfiguracyjny:

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

Najpierw wpisz nazwę systemu operacyjnego, który chcesz uruchomić bezpośrednio. Mój to Ubuntu. Więc napiszesz to jak wGRUB_DEFAULT="Ubuntu, with Linux x.x.x-xx-generic-pae"

następnie użyłem 1 sekundy w, GRUB_TIMEOUT=aby dać mi 1 sekundę przed wybraniem domyślnego systemu operacyjnego (jeśli muszę uruchomić system operacyjny na inny system operacyjny, na przykład Xubuntu)

jak GRUB_CMDLINE_LINUX_DEFAULT=""po wyjęciu quite splashpokaże Ci teksty zamiast logo Ubuntu podczas procesu uruchamiania (I jak to w ten sposób: P)


Istnieje inne rozwiązanie:

Istnieje program o nazwie boot-repair, który pomaga w konfiguracji z GUI.

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

jak widać z obrazka. jest pole o nazwie Unhide boot menu. Po prostu odznacz pole i naciśnij appy. Możesz uzyskać do niego dostęp, klikając strzałkę opcji zaawansowanych.

zainstalować naprawę rozruchu

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

sudo apt-get update

sudo apt-get install -y boot-repair

a następnie uruchom boot-reapiralbo z terminala, albo z deski rozdzielczej.


Trzecie rozwiązanie:

możesz użyć łatwej w obsłudze aplikacji GUI o nazwie grub-customizer, aby ułatwić sobie życie. Jak sama nazwa wskazuje, możesz zrobić znacznie więcej niż tylko zmieniać kolejność pozycji menu Grub.

Możesz go zainstalować:

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

wprowadź opis zdjęcia tutaj

jak widać z menu, istnieje show menuopcja. Odczep i sprawdź, czy to działa


Brak zmiany. : - / Myślałem, że GRUB_DEFAULT powinien być numerem # zgodnie z listą w menu? Zmiana GRUB_TIMEOUT na 0 nie pomogła.
— Eric

@Eric możesz użyć 2 sposobów: jeśli znasz miejsce swojego systemu operacyjnego na liście grub, możesz użyć numeru. Ale dla mnie mam 4 dystrybucje Linuksa i 1 Windows plus memTest i odzyskiwanie. Więc trudno mi zapamiętać ich miejsca :) tylko dla pewności (wiem, że mogłeś to zrobić, ale dla pewności: P). Czy uruchomiłeś grub-updatepo zmianie wartości?
— Suhaib,

Uruchomiłem grub-update po zmianie wartości. : - /
— Eric,

Zainstalowałem i użyłem podanej przez ciebie aplikacji do naprawy rozruchu, działa ona przy pierwszym ponownym uruchomieniu. Następnie menu GRUB powraca i pozostaje tam, dopóki nie nacisnę żadnego klawisza. Dziękuję za całą pomoc, naprawdę to doceniam. Nie jestem pewien, dokąd się stąd udać ...
— Eric,

@Eric ok Znalazłem trzecie rozwiązanie, sprawdź to
— Suhaib,

2

GRUB_HIDDEN_TIMEOUTi GRUB_HIDDEN_TIMEOUT_QUIETopcje są przestarzałe. Skomentuj to.

Aby pominąć menu i pokazać je tylko podczas trzymania ESC, dodaj:

GRUB_TIMEOUT_STYLE='countdown'
GRUB_TIMEOUT=1

Próba /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” : Jeśli ta opcja jest ustawiona na „odliczanie” lub „ukryta”, to przed wyświetleniem menu GRUB będzie czekać na upływ czasu ustawionego przez „GRUB_TIMEOUT”. Jeśli ESC zostanie naciśnięty w tym czasie, to wyświetlenie menu i czekać na wejście.


to powinien , ale robi to pokazuje standardowe menu na 1 sekundę. Przynajmniej na zupełnie nowym 16.04
— frnhr

1

Mógłbym rozwiązać ten problem, dodając następujący wiersz /etc/default/grub

GRUB_DISABLE_OS_PROBER=true

... a następnie biegnie sudo update-grub.

Objaśnienie: Plik /boot/grub/grub.cfgjest generowany przez uruchomienie update-grubprzy użyciu plików w /etc/grub.di /etc/default/grub. Dlatego nie należy edytować grub.cfg, ale pomocne może być ustalenie, dlaczego ustawiony jest limit czasu. Wyszukaj linie zaczynające się od, set timeout=a następnie wyszukaj kolejną linię zaczynającą się od ### END /etc/grub.d/ .... Może to dać wskazówki, który skrypt ustawia limit czasu. W moim przypadku za przekroczenie limitu czasu odpowiedzialny był skrypt os-prober. Okazuje się, że istnieje ustalony na 10 sekund limit czasu, w /etc/grup.d/30_os-proberktórym nie jest ustawiony GRUB_TIMEOUT. Możesz albo wyłączyć os-prober, GRUB_DISABLE_OS_PROBER=truealbo edytować, /etc/grup.d/30_os-proberlub użyć, GRUB_OS_PROBER_SKIP_LISTaby pominąć niektóre partycje dysku twardego (30_os-prober jest używany, gdy gdzieś znajduje się inny system operacyjny). Zobacz szczegółowe pytania i odpowiedzi. Jak zauważyli inni, innym powodem może być brak zapisu w tym przypadku GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT.


0

Miałem problem z tym, że menu GRUB pojawiało się zawsze po tym, jak użyłem AUFS (unionfs) do odczytu systemu plików root. Musiałem fizycznie nacisnąć klawisz Enter na serwerze po każdym uruchomieniu. Postępowałem zgodnie z instrukcjami tutaj: wyłącz menu Grub 2 . Ponieważ nie miałem żadnych problemów.

Edytuj plik /boot/grub/grub.cfg i zmień:

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

Do

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

Przed i po w twoim rozwiązaniu są dokładnie takie same.
— RawwrBag,

set timeout=-1to nie to samo co set timeout=1. Pierwsza z nich to „poczekaj na zawsze”, a druga to „poczekaj jedną sekundę”.
— Jeff McJunkin

0

Moje Ubuntu zawsze miało limit czasu 30 sekund, albo ustawiłbym wartość, albo nie. Oto jak dowiedziałem się, że brak zapisu był brakujący .

1. Sprawdź rzeczywisty skrypt grub /boot/grub/grub.cfg

IMHO, najlepszym sposobem na sprawdzenie, co zrobi Grub, jest otwarcie /boot/grub/grub.cfg. Jest to skrypt generowany automatycznie przy grub-mkconfigużyciu szablonów /etc/grub.di ustawień z /etc/default/grub.

Wokół linii 109 zobaczysz coś takiego:

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

W moim przypadku przy pomocy tego wygenerowanego skryptu mogłem dowiedzieć się, że recordfailzmienna nie była ustawiona.

2. Jeśli recordfailzmienna nie jest ustawiona, ustaw ją

Otwórz /etc/default/grubw swoim ulubionym edytorze tekstu (np. Vim), a następnie ustaw zmienną GRUB_RECORDFAIL_TIMEOUTna podaną wartość, na przykład 5 sekund.

Twój plik konfiguracyjny powinien wyglądać następująco:

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. Zaktualizuj konfigurację do uruchomienia update-grub

Ostatnim krokiem jest aktualizacja konfiguracji do uruchomienia update-grub. Na razie GRUB2 użyje ustawionego limitu czasu. To polecenie zregeneruje /boot/grub.cfgplik.

4. Sprawdź wygenerowany wynik skryptu

Ponownie otwórz /boot/grub.cfgi sprawdź wynik wokół linii 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

Zauważ, że wartość w wierszu 109 wynosi teraz 5 zamiast 30 jak poprzednio.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.