Cara mengatur batas waktu GRUB ke 0 pada Ubuntu 18.04

11

Saya mencoba memperbarui file konfigurasi grub saya ke batas waktu ke nilai 0, jadi OS mulai dengan cepat. Saya memodifikasi /etc/default/grubfile konfigurasi pada Ubuntu 18.04 saya dan kemudian berlari:

sudo update-grub

dan itu tidak berhasil. Saya juga berlari:

sudo grub-mkconfig
sudo update-grub

tetapi mereka tidak bekerja.

Saya mencari banyak di web untuk menyelesaikan masalah ini, tetapi semua panduan mengatakan untuk menjalankan perintah update-grub untuk memperbarui grub dengan /etc/default/grubfile konfigurasi. Saya tidak tahu apakah Ubuntu 18.04 yang menangani file grub dengan cara yang berbeda, tetapi saya tidak dapat memperbarui grub saya dengan parameter saya.

Ini /etc/default/grubfile saya :

# 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=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
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"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
Bob91
sumber
3
Harap edit pertanyaan Anda dan sertakan file konfigurasi grub Anda yang dimodifikasi. Kalau tidak, kami hanya mencoba menebak apa yang Anda lakukan.
Marmer Organik
Apakah Anda memiliki distribusi lain yang diinstal (dual boot)?
mook765
tidak berhasil berarti batas waktu grub saya masih disetel ke 10 detik sebagai default @Melebius
Bob91
Saya memiliki windows di SSD yang sama dan distro lain yang diinstal pada hdd lain, tetapi bulan lalu saya telah fedora 27 (bukan ubuntu 18) dan itu bekerja ketika saya mengubah file konfigurasi grub, jadi saya pikir distro lain bukan penyebab dari perilaku ini @ mook765
Bob91
1
Bisakah Anda menjalankan Boot-Info dan mengedit pertanyaan Anda untuk memasukkan tautan ke info log yang dihasilkannya? Terima kasih.
David Foerster

Jawaban:

12

Dalam /boot/grub/grub.cfgfile ada kondisi, hampir di akhir file, yang menetapkan batas waktu ke 10 jika batas waktu diatur ke 0. Dengan kata lain, jika Anda menetapkan batas waktu ke 0 di Anda /etc/default/grubdan kemudian memperbarui grub, kondisi di atas atur ulang ke 10 detik.

if [ "${timeout}" = 0 ]; then
     set timeout=10
fi

Namun, /boot/grub/grub.cfgadalah file read-only dan saya tidak dapat menghapus kondisi itu. Saya membuat beberapa tes dengan nilai timeout yang berbeda /etc/default/grub. Saya mencoba dengan 1ms (0,001), 0,1s dan 1s dan saya menemukan bahwa nilai di bawah 1 (seperti 0,1 dan 0,001) bekerja dengan cara yang sama dan hampir seperti batas waktu diatur ke 0.

Bob91
sumber
work in the same way and almost like timeoutitu karena matematika di bash hanya mendukung bilangan bulat. Batas waktu terpendek yang akan membuat perbedaan adalah 1.
Marcin Orlowski
5

Dalam kasus saya, masalahnya adalah bahwa sistem saya tidak mendukung "recordfail" yang menyebabkan blok terpisah untuk ditambahkan ke grub.cfg yang secara default menjadi batas waktu 30 detik. Kode yang relevan di /etc/grub.d/00_header:

if [ "$recordfail_broken" = 1 ]; then
  cat << EOF
if lsefi; then
  set timeout=${GRUB_RECORDFAIL_TIMEOUT:-30}
  if [ x\$feature_timeout_style = xy ] ; then
    set timeout_style=menu
  fi
fi
EOF

Cara mengatasinya adalah dengan menambahkan nilai untuk GRUB_RECORDFAIL_TIMEOUTmasuk /etc/default/grubdan berjalan update-grubkembali. Sebagai contoh:

GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""

# Adjusted timeout for system which doesn't support recordfail
GRUB_RECORDFAIL_TIMEOUT=2

# 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"
Alex Malinovich
sumber
3

Seperti jawaban lain katakan, batalkan komentar GRUB_HIDDEN_TIMEOUTdan jalankan update-grub. Kemudian berikan komentar

if [ "${timeout}" = 0 ]; then
  set timeout=10
fi

bagian dalam /boot/grub/grub.cfg. Dalam vim Anda bisa mengganti properti read-only dengan tanda seru :x!. Atau Anda bisa lari

sudo chmod +w /boot/grub/grub.cfg
sudo vim /boot/grub/grub.cfg
sudo chmod -w /boot/grub/grub.cfg

untuk sementara memiliki izin menulis saat mengedit file.

asantas93
sumber
3
Anda benar, tetapi saya pikir setiap kali Anda memperbarui grub (secara manual atau ketika ada upgrade os) /boot/grub/grub.cfgakan dibuat kembali dengan kondisi di atas.
Bob91
2
Itu benar, file ditimpa saat pembaruan, seperti yang saya alami baru-baru ini.
asantas93
1

Anda dapat mengatur GRUB_TIMEOUTke 0.

Nilai batas waktu menimpa bagian ditulis dalam ajust_timeoutfungsi di bagian atas /etc/grub.d/30_os-prober.

ajust_timeout () {
...
if [ "\${timeout}" = 0]; then
  set timeout=10
fi
...
}

Jadi, Anda dapat mengatur nilainya dengan mengedit file dan mengomentari if-block.

tamu
sumber
1

Anda dapat mengatur GRUB_TIMEOUTke -1.

Ex:GRUB_TIMEOUT="-1"

Giceu Cassiano
sumber
'GRUB_TIMEOUT' Boot entri default ini beberapa detik setelah menu ditampilkan, kecuali tombol ditekan. Standarnya adalah '5'. Setel ke '0' untuk boot segera tanpa menampilkan menu, atau ke '-1' untuk menunggu tanpa batas. from commandinfo -f grub -n 'Simple configuration
Vijay
1

Hapus komentar GRUB_HIDDEN_TIMEOUT=0dan jalankan update-grublagi.

hiigaran
sumber
tidak berfungsi
Bob91
GRUB_HIDDEN_TIMEOUT = -1
kuhajeyan
1
GRUB_HIDDEN_TIMEOUT=-1bekerja di Ubuntu 18.10.
Manish Raj
0

Kami cukup menambahkan baris

set timeout=0

untuk /etc/grub.d/40_custom, membuat file dapat dieksekusi dengan

chmod +x /etc/grub.d/40_custom

dan lari

sudo update-grub

untuk menghasilkan file /boot/grub/grub.cfg-file baru . Perintah- set timeoutkita tambahkan adalah set timeoutperintah- terakhir di /boot/grub/grub.cfgsaat ini, itulah yang terpenting.

mook765
sumber
-1

Solusinya adalah menambahkan

GRUB_RECORDFAIL_TIMEOUT=0

untuk /etc/default/grub.

Semua solusi lain akan diatur ulang pada pembaruan grub.

Pilot6
sumber