Bagaimana saya bisa membuat menu GRUB saya disembunyikan, DAN memiliki tombol shift atau esc menunjukkan menu GRUB tersembunyi saat boot

10

Saya menjalankan Ubuntu 16.10, dan saya mencoba menyembunyikan menu GRUB saya saat power on / boot, dan berharap menu muncul hanya ketika saya menekan tombol Shiftatau Esc.

Saya mengubah opsi yang sesuai /etc/default/grubdan masih tidak akan menyembunyikan menu.

Dalam meneliti ini, saya menemukan posting ini dari 2013 menu tersembunyi GRUB tidak berfungsi yang menunjukkan bahwa masalah telah ada untuk sementara waktu, dan menyarankan perubahan /etc/grub.d/30_os-proberyang saya lebih suka tidak melakukannya. Kode itu menunjukkan bahwa sejak ditemukan beberapa OS, itu akan GRUB_TIMEOUT=10tetap mengaturnya .

Berikut cuplikan dari apa yang saya miliki sekarang di /etc/default/grub... menu dengan hitungan mundur 10 detik ...

GRUB_DEFAULT = disimpan
GRUB_SAVEDEFAULT = true
GRUB_HIDDEN_TIMEOUT_QUIET = true
# GRUB_HIDDEN_TIMEOUT = 0
GRUB_TIMEOUT = 10
GRUB_DISTRIBUTOR = `lsb_release -i -s 2> / dev / null || gema Debian`
GRUB_CMDLINE_LINUX_DEFAULT = "quiet splash"

Jika saya membatalkan komentar #GRUB_HIDDEN_TIMEOUT=0, maka sudo update-grubbersikeras bahwa saya juga mengatur GRUB_TIMEOUT=10untuk GRUB_TIMEOUT=0. Saya melakukan itu, dan saya masih melihat menu GRUB.

Di terminal, mengetik info -f grub -n 'Simple configuration'menggambarkan berbagai opsi, dan di bagian paling akhir dari info, itu menunjukkan bahwa beberapa perintah saat ini telah didepresiasi, dan menunjukkan bahwa penggantian yang lebih baru lebih baik.

Apakah ada yang tahu bagaimana saya bisa mendapatkan menu GRUB saya untuk bersembunyi di 16.10 DAN memilikinya mengenali Shiftatau Esckunci pada saat boot?

heynnema
sumber
Saya senang Anda menanyakan hal ini. Saya tidak bisa mendapatkan milik saya untuk bekerja, dan ini menegaskan bahwa itu karena kotak menjadi dual booter.
Marmer Organik
1
@OrganicMarble Masalahnya memang ada hubungannya dengan beberapa OS. Untuk menguji, saya memodifikasi bagian kode itu di /etc/grub.d/30_os-prober, dan meskipun saya tidak punya menu, saya tidak dapat memaksa menu dengan shift atau esc saat boot. Masih mengerjakannya.
heynnema
Saya menambahkan beberapa info lebih lanjut tentang bug yang terkait dengan Anda dalam jawaban saya, mereka dapat membantu Anda memahami sifat masalah secara lebih menyeluruh. Saya juga melihat kode Grub2 - mencoba membantu :)
xtrchessreal
Coba gunakan Grub Customizer jika belum, Tab Pengaturan Umum dalam urutan ini - 1 Hapus centang pada kotak "cari sistem operasi lain" dan 2 Hapus centang "tampilkan menu" kemudian simpan. Uji itu dan lihat apakah "Shift" akan memunculkan menu dan kemudian juga apa yang terjadi jika tidak ada yang ditekan.
xtrchessreal
Saya dapat mengerti bahwa Anda lebih suka tidak memodifikasi /etc/grub.d/30_os-probertetapi saya benar-benar tidak melihat bahayanya. Anda dapat menyimpan salinan yang didukung atau #Comment perubahan Anda sehingga Anda dapat membalikkannya jika perlu. The solusi Anda menemukan tampaknya solusi yang masuk akal paling saat ini.
Penatua Geek

Jawaban:

7

OK teman-teman, inilah jawabannya ... untuk mendapatkan menu GRUB tersembunyi dalam konfigurasi dual-boot ... dua suntingan ... dan sudo update-grub...

Edit # 1

Untuk mendapatkan menu GRUB yang tersembunyi dalam konfigurasi multi-boot, pertama-tama kita perlu mengedit /etc/default/grub. Buka file ini menggunakan perintah di bawah ini:

sudo editor /etc/default/grub

Setelah file terbuka, ganti baris-baris ini

GRUB_HIDDEN_TIMEOUT_QUIET=true
#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=10

dengan ini:

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

Ini akan menyebabkan GRUB menampilkan penghitung waktu mundur 3 detik di layar. Dengan melakukan ini, pengguna dapat menekan Esctombol untuk membuka menu default. Kalau tidak, OS default akan boot.

Jika Anda menginginkan OS default harus disetel ke OS yang terakhir-boot, tambahkan dua baris di bawah ini di bawah "GRUB_TIMEOUT = 3" yang ditunjukkan di atas:

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

Edit # 2

Selanjutnya, prober OS perlu diperbarui untuk menonaktifkan fitur quick_boot. Untuk melakukan ini, buka /etc/grub.d/30_os-proberdi editor favorit Anda dan ubah baris di bawah ini (baris 23 di 17.04) dengan mengganti 1dengan 0:

quick_boot="1"

Setelah selesai, baris seharusnya berbunyi seperti:

quick_boot="0"

Simpan file dan kemudian jalankan perintah di bawah ini untuk mengkonfigurasi ulang bootloader dan menerapkan perubahan Anda:

sudo update-grub
heynnema
sumber
Itu berhasil! +1.
Marmer Organik
Sepertinya solusi yang bagus :) Sekarang saya punya pertanyaan sederhana tentang itu. Jika Anda mengubah GRUB_TIMEOUT dari "3" menjadi "1" Apakah Anda akan boot lebih cepat. Dan dapatkah Anda memberikan tautan, jika ada, di mana orang dapat membaca cara kerja kode ini. Saya ingin memahami apa yang dilakukan kode ini dan urutan pemanggilan fungsinya, dll. Sangat saya hargai. Sangat menyenangkan ketika Anda bisa menyelesaikan pertanyaan Anda sendiri - pekerjaan bagus untuk itu.
xtrchessreal
@ xtrchessreal ya, mengubah 3 ke 1 membuatnya 2 detik lebih pendek. Saya pikir 3 detik adalah waktu yang cukup bagi saya untuk menyerahkan kunci Esc, jika saya mau. Anda dapat melihat info -f grub -n 'Simple configuration'info lebih lanjut.
heynnema
+1 untuk Q dan +1 untuk A. Dua malam terakhir saya telah googling ini dengan semua jenis modifikasi berotak rambut untuk 30_os-benar, membuat 31_blah_blah dan membuat 40_custom semua sia-sia. Ini di AU, ArchLinux, Fedora, dan banyak tempat lainnya. Jika Anda ingin lebih banyak suara, saya sarankan untuk melacak semua jawaban yang salah di sini di AU (ada banyak) dan Memilih untuk menutupnya sebagai duplikat dari yang ini kemudian ping saya ( @ saya) di ruang obrolan umum AU dengan tautan ke duplikat dan saya akan memilihnya juga. Terima kasih atas penelitian dan solusi yang bagus ini! :)
WinEunuuchs2Unix
@ WinEunuuchs2Unix terima kasih atas komentarnya yang bagus, dan suaranya! Saya sendiri melakukan banyak penelitian sebelum saya menemukan bahwa tidak ada yang punya solusi elegan, atau solusi apa pun ... tapi saya bertekad :-)
heynnema
3

Saya percaya masalah ini mungkin disebabkan oleh beberapa OS sesuai dengan kutipan dari wiki Grub2 ini :

Jika tidak ada sistem operasi lain yang terdeteksi, GRUB 2 akan mem-boot langsung ke sistem operasi default dan tidak ada menu yang akan ditampilkan. Jika sistem operasi lain terdeteksi, menu GRUB 2 akan ditampilkan.

DAN

Menyimpan OS dapat dicapai dengan menjalankan sudo grub-set-default jika GRUB_DEFAULT = disimpan diatur di / etc / default / grub. Ini juga dapat disimpan jika GRUB_SAVEDEFAULT = true juga diset di / etc / default / grub. Dalam hal ini, OS default tetap sampai OS baru dipilih secara manual dari menu GRUB 2 atau perintah grub-set-default dijalankan.

Wiki Grub2 juga menyatakan: Catatan: Ada bug yang sudah lama dikonfirmasi pada fitur menu tersembunyi di GRUB 1.97 hingga GRUB 1.99. Menu tidak dapat disembunyikan seperti yang ditentukan dalam deskripsi di halaman ini. Meskipun mengedit skrip 30_os-prober dapat memperbaiki masalah ini, itu berada di luar cakupan halaman ini.

Sebagai pekerjaan di sekitar Anda dapat mengatur GRUB_TIMEOUT="1"dan Anda hanya akan melihat menu selama 1 detik. Jika saya perlu beralih ke OS lain saya cukup menekan tombol panah ke bawah dalam detik itu dan menu akan muncul sampai saya membuat pilihan.

Mungkin ada masalah sintaksis potensial yang terkait dengan bug. Saya bukan ahli Grub2 tetapi dalam file grub saya setiap baris perintah diakhiri dengan = "beberapa pengaturan yang dikutip" Saya ingat dari hari-hari pengkodean saya bahwa "tanda kutip" harus melewati sebuah string di mana ketika tanda kutip yang bukan tanda kutip memberikan nilai numerik sederhana ke variabel. Saya tidak UP dalam teknik kode baru. mis. Berikut beberapa output grub 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="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"

Saya melihat ke dalam Grubbug ini :) untuk info lebih lanjut dan juga Bug Ini Kedua hal ini terkait dengan Grub2 yang berusia 2 tahun. Beberapa di antaranya mungkin terkait dengan kode MBR sebelum handoff ke Grub2

xtrchessreal
sumber
Terimakasih atas tanggapan Anda. Saya sudah menggunakan metode SAVEDEFAULT. TIMEOUT = 1 tentu saja mempersingkat waktu tampilan menu. Masalahnya memang ada hubungannya dengan beberapa OS. Untuk mengujinya, saya memang memodifikasi bagian kode itu /etc/grub.d/30_os-prober, dan meskipun saya tidak punya menu, saya tidak dapat memaksa menu dengan shift atau esc saat boot.
heynnema
Bug yang Anda tautkan sepertinya tidak relevan atau apakah saya melewatkan sesuatu?
Penatua Geek
@ElderGeek berkenaan dengan bug # 1401318 orang yang ditugasi bug kepada TJ menjelaskan perilaku dari MBR ke Grub saat ia menyatakan "sleep --interruptable $ timeout" dll. Jika Anda membaca semua pernyataannya di komentar bug, saya pikir Anda akan melihat apa yang paling tidak menjadi bagian dari masalahnya. Dia juga ditugaskan untuk bug # 425979 yang serupa dalam masalah. Kedua bug yang berurusan dengan menahan tombol shift untuk membawa menu Grub TIDAK bekerja ketika diatur untuk disembunyikan. Inilah yang OP coba cari tahu juga. Saya harap ini menjelaskan mengapa tautan ada dalam jawaban saya.
xtrchessreal
Maafkan kebingungan saya. Saya membaca pertanyaan dengan mengatakan "bagaimana saya bisa menyembunyikan menu GRUB saya" Terima kasih telah menjelaskan. Saya pasti ketinggalan komentar itu.
Penatua Geek
@ElderGeek sebenarnya, pertanyaannya adalah, "bagaimana saya bisa mendapatkan menu GRUB saya untuk disembunyikan, DAN memiliki tombol shift atau esc menampilkan menu GRUB tersembunyi pada saat boot". Saya sudah menyembunyikannya. Saya belum mendapatkan shift atau kunci esc untuk bekerja. Rupanya masalah ini berjalan kembali ke 2013 atau sebelumnya, dan hanya memengaruhi konfigurasi multi-boot.
heynnema
3
  1. Saya kira Anda ingin mencoba 'semuanya' yang tersedia via /etc/default/grub. Apakah Anda membaca tautan ini,

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

  2. Saya sarankan Anda mencoba menghapus baris berikut dari /boot/grub/grub.cfg,

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

    Ya, saya tahu, Anda harus melakukannya setiap kali update-grubberjalan, tetapi Anda dapat membuat skrip untuk itu.

sudodus
sumber
Terimakasih atas tanggapan Anda. Saya akan lihat tautan itu. Saya juga telah menemukan cara untuk memodifikasi /etc/grub.d/30_os-prober sehingga saya tidak perlu mengedit grub.cfg setiap kali.
heynnema
Ini masuk akal bagi saya, karena dalam sistem multiboot sepertinya kode ini mengubah batas waktu kembali ke 10 dari 0 Yang tampaknya mengalahkan HIDDEN_TIMEOUT ....
Penatua Geek
@heynnema dapatkah Anda mengirim perubahan ke os-prober? Ketika saya melihat tautan di pertanyaan Anda dan membandingkannya dengan kode di os-prober saya, nomor barisnya tidak masuk akal, jadi saya menganggap os-prober telah berubah sejak saat itu, dan saya takut mengacaukannya.
Marmer Organik
1
@OrganicMarble lihat pembaruan untuk pertanyaan saya. Mungkin Anda dapat mencoba beberapa mod saya dan melihat apa yang Anda hasilkan.
heynnema
@sudodus tolong lihat jawaban saya
heynnema