Menu grub tidak dapat habis (atau pergi)

18

Saya menjalankan Ubuntu 12.04.

Saya tidak bisa seumur hidup saya mendapatkan menu grub (dengan opsi) untuk pergi.

Saya ingin boot otomatis ke opsi pertama. Saya telah mengedit / etc / default / grub sehingga terlihat seperti berikut:

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

Setelah ini, saya menjalankan sudo update-grub . Kemudian saya menyadari bahwa saya memiliki grub 2, jadi saya menjalankan sudo update-grub2 (keduanya membuatnya terlihat seperti mereka berhasil membuat file grub.cfg .

Saya me-restart komputer saya dan kembali ke menu grub dan hanya duduk di sana sampai saya membuat pilihan. Ini tidak diinginkan jika daya padam ... :-)

Saya juga mencoba menginstal ulang grub menggunakan sudo grub-install / dev / sda - juga tidak berhasil

Eric
sumber
Apakah Anda kebetulan memiliki partisi lain tempat Anda menginstal Ubuntu setelah mengatur partisi saat ini yang ingin Anda masuki secara otomatis?
fabricator4
Saya tidak yakin apa yang Anda maksud, saya agak baru di linux. Saya memang menginstal lebih dari instalasi Ubuntu sebelumnya, tetapi saya tidak memutakhirkan. Instal bersih. Saya mungkin telah membuat sesuatu dari partisi-bijaksana ... itu mungkin, ada ide untuk memperbaikinya?
Eric
sudo update-grubdan sudo update-grub2menjalankan perintah yang sama. Jadi, jangan khawatir tentang bagian itu.
saji89
Silakan Anda memposting output cat /boot/grub/grub.cfg via pastebin dan berbagi tautan di sini. Ini untuk melihat yang sebenarnya grub.cfgdihasilkan.
saji89
Inilah pastebin: pastebin.com/xxe2rLhg dari grub.cfg. Terima kasih atas seluruh bantuan Anda!
Eric

Jawaban:

22

Seperti jawaban lain tunjukkan, Anda mungkin menjadi korban dari situasi gagal catatan . Mengedit /boot/grub/grub.cfgsecara manual harus keluar dari pertanyaan karena dibuat secara otomatis. Saran lain yang terlihat adalah mengedit /etc/grub.d/00_headertetapi kemudian bisa meminta intervensi pengguna pada pembaruan.

Solusi termudah adalah mendefinisikan variabel tidak berdokumen GRUB_RECORDFAIL_TIMEOUT di /etc/default/grub. Sebagai contoh:

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

Edit

Lihat jawaban ini untuk lebih jelasnya.

C2H5OH
sumber
Terima kasih banyak, inilah tepatnya yang saya cari!
Avio
Setelah melakukan perubahan, jalankan juga update-grubuntuk menghasilkan /boot/grub/grub.cfgfile yang diperbarui
Colt
Jangan bunuh fungsionalitas recordfail! Anda ingin batas waktu lebih lama jika ada kegagalan booting. Untuk secara manual jelas, semua yang Anda butuhkan adalah jawaban @ sniffski ini: grub-editenv create. Namun, mungkin ada beberapa alasan lain yang recordfailsedang ditetapkan ...
Cameron Tacklind
6

Menggunakan:

grub-editenv create

Ini akan menghapus file lingkungan grub dan harus boot dengan jelas di lain waktu.

sniffski
sumber
Terima kasih banyak sudah berbagi. Ini bekerja melalui SSH yang membuat hari saya macet di server tanpa kepala grub.
Geppettvs D'Constanzo
grub-editenv - unset recordfailberfungsi juga dan tidak memengaruhi env lain yang mungkin ditetapkan
Cameron Tacklind
2

ubah GRUB_TIMEOUT=10ke nol

Ini adalah file Konfigurasi saya:

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

Pertama, tulis nama OS yang ingin Anda boot langsung. Milik saya adalah Ubuntu. Jadi Anda akan menuliskannya seperti diGRUB_DEFAULT="Ubuntu, with Linux x.x.x-xx-generic-pae"

maka saya menggunakan 1 detik GRUB_TIMEOUT=untuk memberi saya 1 detik sebelum memilih OS default (jika saya perlu boot ke OS lain misalnya Xubuntu)

seolah- GRUB_CMDLINE_LINUX_DEFAULT=""olah jika Anda menghapusnya quite splashakan menampilkan teks bukan logo Ubuntu selama proses booting (saya suka seperti ini: P)


Ada solusi lain:

Ada sebuah program bernama boot-repair yang membantu dalam mengkonfigurasi dengan GUI.

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

seperti yang Anda lihat dari gambar. ada kotak yang disebut Unhide boot menu. Hapus centang pada kotak dan tekan appy. Anda dapat mengakses ini dengan mengeklik panah opsi lanjutan.

untuk menginstal perbaikan boot

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

sudo apt-get update

sudo apt-get install -y boot-repair

dan kemudian jalankan boot-reapirdari terminal atau dari dash.


Solusi 3:

Anda dapat menggunakan aplikasi GUI yang mudah digunakan yang disebut grub-customizer untuk membuat hidup Anda sedikit mudah. Seperti namanya, Anda dapat melakukan lebih dari sekadar mengatur ulang entri menu Grub dengannya.

Anda dapat menginstalnya dengan:

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

masukkan deskripsi gambar di sini

seperti yang Anda lihat dari menu ada show menupilihan. Hapus centang dan lihat apakah itu berfungsi

Suhaib
sumber
Tidak ada perubahan. : - / Saya pikir GRUB_DEFAULT seharusnya menjadi angka # menurut daftar di menu? Mengubah GRUB_TIMEOUT ke 0 tidak membantu.
Eric
@Eric Anda dapat menggunakan 2 cara: jika Anda mengetahui tempat OS Anda di daftar grub Anda dapat menggunakan nomor. Tetapi bagi saya, saya memiliki 4 distro Linux dan 1 Windows plus memTest dan pemulihan. Jadi sulit bagi saya untuk mengingat tempat mereka :) hanya untuk memastikan (saya tahu Anda mungkin telah melakukannya tetapi hanya untuk memastikan: P). Apakah Anda menjalankan grub-updatesetelah mengubah nilai?
Suhaib
Saya menjalankan pembaruan grub setelah mengubah nilainya. : - /
Eric
Saya menginstal dan menggunakan aplikasi boot-perbaikan yang Anda berikan, ini berfungsi pada reboot pertama . Setelah itu, menu GRUB kembali dan duduk di sana sampai saya menekan tombol. Terima kasih atas semua bantuannya, saya sangat menghargainya. Tidak yakin ke mana harus pergi dari sini ...
Eric
@ Eric ok saya menemukan solusi ke 3 check it
Suhaib
2

GRUB_HIDDEN_TIMEOUTdan GRUB_HIDDEN_TIMEOUT_QUIETopsi sudah usang. Jadi komentari itu.

Untuk melewati menu dan menunjukkannya saat hanya menahan ESC, tambahkan:

GRUB_TIMEOUT_STYLE='countdown'
GRUB_TIMEOUT=1

Sampel /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' : Jika opsi ini disetel ke 'hitung mundur' atau 'disembunyikan', maka, sebelum menampilkan menu, GRUB akan menunggu batas waktu yang ditetapkan oleh 'GRUB_TIMEOUT' untuk kedaluwarsa. Jika ESC ditekan selama waktu itu, itu akan menampilkan menu dan menunggu input.

Gayan Weerakutti
sumber
itu harus , tapi semua hal ini adalah menunjukkan menu standar selama 1 detik. Setidaknya pada merek baru 16,04
frnhr
1

Saya bisa mengatasi masalah itu dengan menambahkan baris berikut ke /etc/default/grub

GRUB_DISABLE_OS_PROBER=true

... lalu berlari sudo update-grub.

Penjelasan: File /boot/grub/grub.cfgini dihasilkan dengan menjalankan update-grubmenggunakan file di /etc/grub.ddan /etc/default/grub. Karena itu Anda tidak boleh mengedit grub.cfg, tetapi dapat membantu untuk mengetahui mengapa batas waktu diatur. Cari baris yang dimulai dengan set timeout=dan kemudian cari baris berikutnya yang dimulai dengan ### END /etc/grub.d/ .... Ini mungkin memberi Anda petunjuk skrip mana yang mengatur batas waktu. Dalam kasus saya, skrip os-prober bertanggung jawab atas batas waktu. Ternyata ada batas waktu 10 detik hardcoded /etc/grup.d/30_os-proberyang tidak ditetapkan oleh GRUB_TIMEOUT. Anda dapat menonaktifkan os-prober dengan GRUB_DISABLE_OS_PROBER=trueatau mengedit /etc/grup.d/30_os-proberatau menggunakan GRUB_OS_PROBER_SKIP_LISTuntuk melewati beberapa partisi harddisk Anda (30_os-prober digunakan ketika OS lain ditemukan di suatu tempat). Lihat T&J ini untuk perincian. Seperti orang lain menunjukkan alasan lain mungkin kegagalan catatan , dalam set kasus ini GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT.

lumbric
sumber
0

Saya punya masalah bahwa menu grub selalu muncul setelah saya menggunakan AUFS (unionfs) untuk meletakkan sistem file root hanya baca. Saya secara fisik harus menekan tombol enter di server setelah setiap boot. Saya mengikuti petunjuk di sini: nonaktifkan menu grub 2 . Karena saya tidak punya masalah sama sekali.

Edit /boot/grub/grub.cfg dan ubah:

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

Untuk

if [ ${recordfail} = 1 ]; then
  set timeout=1
else
  set timeout=10
fi
Fabio Vaz
sumber
Sebelum dan sesudah dalam solusi Anda persis sama.
RawwrBag
set timeout=-1tidak sama dengan set timeout=1. Yang pertama adalah "tunggu selamanya", dan yang terakhir adalah "tunggu sebentar".
Jeff McJunkin
0

Ubuntu saya selalu memiliki batas waktu 30 detik baik saya akan menetapkan nilai atau tidak. Berikut ini adalah bagaimana saya menemukan bahwa recordfail adalah nilai yang hilang .

1. Verifikasi skrip grub yang sebenarnya /boot/grub/grub.cfg

IMHO, cara terbaik untuk memverifikasi apa yang akan dilakukan Grub, adalah membuka /boot/grub/grub.cfg. Ini adalah skrip yang dihasilkan secara otomatis dengan grub-mkconfigmenggunakan templat dari /etc/grub.ddan pengaturan dari /etc/default/grub.

Di sekitar garis 109, Anda akan melihat sesuatu seperti:

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

Dalam kasus saya dengan bantuan skrip yang dihasilkan, saya bisa mengetahui bahwa recordfailvariabel tidak disetel.

2. Jika recordfailvariabel tidak disetel, atur

Buka /etc/default/grubdi editor teks favorit Anda (misalnya vim) dan kemudian atur variabel GRUB_RECORDFAIL_TIMEOUTke nilai yang diberikan, misalnya 5 detik.

File konfigurasi Anda akan terlihat seperti:

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. Perbarui konfigurasi yang akan dijalankan update-grub

Langkah terakhir, perbarui konfigurasi yang akan dijalankan update-grub. Untuk saat ini, GRUB2 akan menggunakan batas waktu yang ditetapkan. Perintah ini akan membuat ulang /boot/grub.cfgfile.

4. Verifikasi hasil skrip yang dihasilkan

Sekali lagi, buka /boot/grub.cfgdan periksa hasilnya di sekitar baris 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

Perhatikan bahwa nilai pada baris 109 sekarang 5 bukannya 30 seperti sebelumnya.

Pembuat Kunci00
sumber