Grub menüsü zaman aşımına uğramıyor (veya gidemiyor)


18

Ubuntu 12.04 kullanıyorum.

Hayatım için grub menü (seçenekleri ile) almak için gidemem.

İlk seçeneğe otomatik önyükleme yapmasını istiyorum. / Etc / default / grub'u aşağıdaki gibi görünecek şekilde düzenledim :

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

Bundan sonra sudo update-grub'u çalıştırdım . Sonra ben grub 2 vardı, bu yüzden sudo update-grub2 koştu fark (her ikisi de başarıyla grub.cfg dosyası oluşturmak gibi görünmesi .

Bilgisayarımı yeniden başlatıyorum ve grub menüsüne geri dönüyor ve bir seçim yapana kadar sadece orada oturuyor. Güç kesilirse bu arzu edilmez ... :-)

Ayrıca sudo grub-install / dev / sda kullanarak grub yeniden yüklemeyi denedim - ayrıca başarısız


Şimdilik otomatik olarak önyüklemek istediğiniz geçerli bölümü kurduktan sonra Ubuntu'yu yüklediğiniz başka bir bölümünüz var mı?
fabrikatör4

Ne demek istediğinden emin değilim, linux için biraz yeniyim. Önceki bir Ubuntu yüklemesi üzerine yükledim, ancak yükseltmedim. Temiz kurulum. Bölünme açısından bir şeyleri batırmış olabilirim ... bu mümkün, düzeltmek için herhangi bir fikir var mı?
Eric

sudo update-grubve sudo update-grub2aynı komutu çalıştırır. Yani, bu kısım için endişelenme.
saji89

Lütfen cat /boot/grub/grub.cfg pastebin çıktısını gönderin ve bağlantıyı burada paylaşın. Bu grub.cfgüretilen gerçek görmek içindir .
saji89

İşte macbinbin: grub.cfg'nin pastebin.com/xxe2rLhg . Yardımların için teşekkür ederim!
Eric

Yanıtlar:


23

Diğer cevapların işaret ettiği gibi, kayıt başarısızlık durumunun kurbanı olabilirsiniz . Düzenleme /boot/grub/grub.cfgelle, otomatik olarak oluşturulur söz konusu olmalıdır. Etrafında görülen bir başka öneri de düzenlemektir, /etc/grub.d/00_headerancak daha sonra güncellemelere kullanıcı müdahalesi isteyebilir.

En kolay çözüm, belgesiz GRUB_RECORDFAIL_TIMEOUT değişkeni tanımlamaktır /etc/default/grub. Örneğin:

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

Düzenle

Daha fazla ayrıntı için bu cevaba bakınız.


1
Çok teşekkür ederim, tam da aradığım şey bu!
Avio

1
Değişikliği yaptıktan sonra update-grub, güncellenmiş /boot/grub/grub.cfgdosyayı oluşturmak için de çalıştırın
Colt

İşlevselliğini öldürmeyin recordfail! Önyükleme başarısız olursa daha uzun bir zaman aşımı istiyorsunuz. El ile net için tek ihtiyacınız @ sniffski yanıtıdır: grub-editenv create. Ancak, recordfailayarlamak için başka bir neden olabilir ...
Cameron Tacklind

6

kullanın:

grub-editenv create

Bu grub ortam dosyasını temizler ve bir dahaki sefere net bir şekilde önyükleme yapmalıdır.


Paylaştığınız için çok teşekkür ederim. Bu grub başsız sunucuda sıkışmış benim gün yapılan SSH ile çalıştı.
Geppettvs D'Constanzo

1
grub-editenv - unset recordfailiyi çalışıyor ve ayarlanmış diğer envsleri etkilemez
Cameron Tacklind

2

GRUB_TIMEOUT=10sıfıra değiştir

Bu benim Yapılandırma dosyam:

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

İlk olarak, doğrudan önyüklemek istediğiniz işletim sisteminin adını yazın. Benimki Ubuntu. Yani onu olduğu gibi yazacaksınızGRUB_DEFAULT="Ubuntu, with Linux x.x.x-xx-generic-pae"

sonra GRUB_TIMEOUT=varsayılan işletim sistemini seçmeden önce bana 1 saniye vermek için 1 saniye kullandım (başka bir işletim sistemine önyükleme yapmam gerekirse, örneğin Xubuntu)

gelince GRUB_CMDLINE_LINUX_DEFAULT=""kaldırmak eğer quite splashsen (Hiç böyle bu şekilde: P) yerine önyükleme işlemi sırasında Ubuntu logosu metinler gösterecektir


Başka bir çözüm daha var:

GUI ile yapılandırmaya yardımcı olan boot-repair adlı bir program var .

resim açıklamasını buraya girin

resim açıklamasını buraya girin

görüntüden de görebileceğiniz gibi. adında bir kutu var Unhide boot menu. Sadece kutunun işaretini kaldırın ve appy tuşuna basın. Buna, gelişmiş seçenekler okunu tıklayarak erişebilirsiniz.

önyükleme onarımını yüklemek için

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

sudo apt-get update

sudo apt-get install -y boot-repair

ve sonra boot-reapirterminalden veya kısa çizgiden çalıştırın.


3. çözüm:

ou hayatınızı biraz kolaylaştırmak için grub-customizer adlı kullanımı kolay bir GUI uygulamasını kullanabilirsiniz. Adından da anlaşılacağı gibi, Grub menü girişlerini yeniden sıralamaktan çok daha fazlasını yapabilirsiniz.

Yükleyebilirsiniz:

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

resim açıklamasını buraya girin

menüden de görebileceğiniz gibi bir show menuseçenek var. İşaretini kaldırın ve çalışıp çalışmadığını görün


Değişiklik yok. : - / GRUB_DEFAULT menüdeki listeye göre sayısal bir # olması gerektiğini düşündüm? GRUB_TIMEOUT değerini 0 olarak değiştirmek yardımcı olmadı.
Eric

@Eric 2 yol kullanabilirsiniz: OS'nizin grub listesindeki yerini biliyorsanız, bir numara kullanabilirsiniz. Ama benim için 4 Linux dağıtımı ve 1 Windows artı memTest ve kurtarma var. Bu yüzden benim yerlerini ezberlemek benim için zor :) sadece emin olmak için (biliyorum yapmış olabilir ama sadece emin olmak için: P). grub-updateDeğerleri değiştirdikten sonra çalıştırdınız mı?
Suhaib

Değerleri değiştirdikten sonra grub-update çalıştırdım. : - /
Eric

Sağladığınız önyükleme onarım uygulamasını yükledim ve kullandım, ilk yeniden başlatmada çalışıyor. Bundan sonra, GRUB menüsü geri döndü ve bir tuşa basana kadar orada oturuyor. Tüm yardımlarınız için teşekkür ederim, gerçekten minnettarım. Buradan nereye gideceğinden emin değilim ...
Eric

@Eric ok 3. bir çözüm buldum
Suhaib

2

GRUB_HIDDEN_TIMEOUTve GRUB_HIDDEN_TIMEOUT_QUIETseçenekler kullanımdan kaldırıldı. Bunları yorumla.

Menüyü atlamak ve yalnızca basılı tutarken göstermek için şunu ESCekleyin:

GRUB_TIMEOUT_STYLE='countdown'
GRUB_TIMEOUT=1

Örneklem /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' : Bu seçenek 'geri sayım' veya 'gizli' olarak ayarlanmışsa , menüyü görüntülemeden önce GRUB 'GRUB_TIMEOUT' tarafından ayarlanan zaman aşımının süresinin dolmasını bekler. Bu süre zarfında ESC tuşuna basılırsa, menü görüntülenir ve giriş beklenir.


o gerektiği , ama öyle her yakalanan görünen 1 saniye boyunca standart menüdür. En azından yepyeni bir 16.04
frnhr

1

Bu sorunu aşağıdaki satırı ekleyerek çözebilirim /etc/default/grub

GRUB_DISABLE_OS_PROBER=true

... ve sonra koşuyor sudo update-grub.

Açıklama: Dosya /boot/grub/grub.cfg, ve update-grubiçindeki dosyalar kullanılarak çalıştırılarak oluşturulur . Bu nedenle , düzenlememelisiniz , ancak zaman aşımının neden ayarlandığını bulmak yardımcı olabilir. İle başlayan satırları arayın ve ardından ile başlayan sonraki satırı arayın . Bu, hangi komut dosyasının zaman aşımını ayarladığına dair ipuçları verebilir. Benim durumumda os-prober betiği zaman aşımından sorumluydu. Tarafından ayarlanmayan bir 10s sabit kodlu zaman aşımı olduğu ortaya çıkıyor . Os-prober'ı devre dışı bırakabilir veya düzenleyebilir veya sabit disk bölümlerinizin bazılarını atlamak için kullanabilirsiniz (başka bir işletim sistemi başka bir yerde bulunduğunda 30_os-prober kullanılır). Ayrıntılar için bu Soru ve Cevaplara bakın/etc/grub.d/etc/default/grubgrub.cfgset timeout=### END /etc/grub.d/ .../etc/grup.d/30_os-proberGRUB_TIMEOUTGRUB_DISABLE_OS_PROBER=true/etc/grup.d/30_os-proberGRUB_OS_PROBER_SKIP_LIST. Diğerleri belirttiği gibi başka bir nedeni olabilir recordfail bu durumda sette, GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT.


0

Ben kök dosya sistemi salt okunur koymak için AUFS (unionfs) kullandıktan sonra grub menü her zaman ortaya sorun vardı. Fiziksel olarak her önyüklemeden sonra sunucuda enter tuşuna basmak zorunda kaldım. Buradaki talimatları izledim: grub 2 menüsünü devre dışı bırak . O zamandan beri hiç problem yaşamadım.

/Boot/grub/grub.cfg dosyasını düzenleyin ve değiştirin:

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

için

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

Çözümünüzde önce ve sonra tamamen aynı.
RawwrBag

set timeout=-1ile aynı değildir set timeout=1. Birincisi "sonsuza kadar bekle" ve ikincisi "bir saniye bekle" dir.
Jeff McJunkin

0

Benim Ubuntu her zaman 30 saniye bir zaman aşımı vardı ya ben bir değer ayarlamak ya da değil. İşte sonra nasıl kayıt hatası eksik değer olduğunu öğrendim .

1. Gerçek grub komut dosyasını doğrulayın /boot/grub/grub.cfg

Grub'un ne yapacağını doğrulamanın en iyi yolu IMHO açmaktır /boot/grub/grub.cfg. Tarafından otomatik olarak oluşturulan komut dosyasıdır.grub-mkconfig şablonlar /etc/grub.dve ayarları kullanılarak/etc/default/grub .

109 hattı çevresinde, şöyle bir şey göreceksiniz:

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

Benim durumumda bu oluşturulan komut dosyasının yardımıyla, recordfail değişkenin ayarlanmadığını .

2. Eğer recordfail Değişken ayarlanmamışsa, ayarlayın

Açık /etc/default/grubsonra (örneğin vim) favori metin editörü ve değişken set GRUB_RECORDFAIL_TIMEOUTörneğin 5 saniye, belirli bir değere.

Yapılandırma dosyanız aşağıdaki gibi görünmelidir:

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. Çalıştırılacak yapılandırmayı güncelleyin update-grub

Son adım, çalıştırılacak yapılandırmayı güncelleyin update-grub. Şimdilik GRUB2 ayarlanan zaman aşımını kullanacak. Bu komut /boot/grub.cfgdosyayı yeniden oluşturur .

4. Oluşturulan kod sonucunu doğrulayın

Yine, /boot/grub.cfg109 hattındaki sonucu açın ve kontrol edin:

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 satırındaki değerin, eskisi gibi 30 yerine 5 olduğuna dikkat edin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.