Come posso nascondere il mio menu di GRUB E far sì che i tasti shift o esc mostrino il menu di GRUB nascosto all'avvio


10

Sto eseguendo Ubuntu 16.10 e sto cercando di nascondere il mio menu GRUB al momento dell'accensione / avvio e desidero che il menu appaia solo quando premo i tasti Shifto Esc.

Cambio le opzioni appropriate /etc/default/grube non nasconde ancora il menu.

Nella ricerca di questo, ho trovato questo post dal menu nascosto di GRUB del 2013 che non funziona che indica che il problema esiste da un po 'di tempo e suggerisce una modifica a /etc/grub.d/30_os-probercui preferirei non fare. Tale codice suggerisce che, poiché ha trovato più sistemi operativi, imposterà GRUB_TIMEOUT=10comunque.

Ecco un frammento di quello che ho ora in /etc/default/grub... un menu con un conto alla rovescia di 10 secondi ...

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

Se io rimuovere il commento #GRUB_HIDDEN_TIMEOUT=0, poi sudo update-grubinsiste sul fatto che ho anche messo GRUB_TIMEOUT=10a GRUB_TIMEOUT=0. Lo faccio e vedo ancora il menu di GRUB.

In terminal, la digitazione info -f grub -n 'Simple configuration'descrive le varie opzioni e, alla fine delle informazioni, mostra che alcuni dei comandi correnti sono stati ammortizzati e suggerisce che le sostituzioni più recenti sono migliori.

Qualcuno sa come posso nascondere il mio menu di GRUB in 16.10 E farlo riconoscere Shifto Escchiavi all'avvio?


Sono contento che tu l'abbia chiesto. Nemmeno io ho potuto far funzionare la mia, e questo conferma che è perché la scatola è un dual booter.
Marmo organico

1
@OrganicMarble Il problema ha a che fare con più SO. Per provare, ho modificato quella parte di codice in /etc/grub.d/30_os-prober, e sebbene non avessi alcun menu, non ero in grado di forzare un menu con shift o esc al momento dell'avvio. Ci sto ancora lavorando.
heynnema

Ho aggiunto alcune informazioni in più sui bug relativi ai tuoi nella mia risposta, che potrebbero aiutarti a capire più a fondo la natura del problema. Sto anche guardando il codice Grub2 - cercando di aiutare :)
xtrchessreal

Prova a utilizzare Grub Customizer, in caso contrario, scheda Impostazioni generali in questo ordine: 1 Deseleziona la casella "Cerca altri sistemi operativi" e 2 Deseleziona "Mostra menu", quindi salva. Prova questo e vedi se "Shift" farà apparire il menu e poi anche cosa succede se non viene premuto nulla.
xtrchessreal,

Posso capire che preferiresti non modificare /etc/grub.d/30_os-proberma davvero non vedo il danno. È possibile mantenere una copia di backup o #Commentare le modifiche in modo da poterle invertire, se necessario. La soluzione alternativa che hai trovato sembra la soluzione più ragionevole al momento.
Elder Geek,

Risposte:


7

OK gente, ecco la risposta ... per ottenere un menu GRUB nascosto nelle configurazioni a doppio avvio ... due modifiche ... e un sudo update-grub...

Modifica n. 1

Per ottenere un menu GRUB nascosto in una configurazione multi-boot, dobbiamo prima modificare /etc/default/grub. Apri questo file usando il comando seguente:

sudo editor /etc/default/grub

Una volta aperto il file, sostituire queste righe

GRUB_HIDDEN_TIMEOUT_QUIET=true
#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=10

con questi:

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

Questo farà sì che GRUB visualizzi sullo schermo un timer per il conto alla rovescia di 3 secondi. In questo modo, un utente può Escpremere il tasto per visualizzare il menu predefinito. In caso contrario, verrà avviato il sistema operativo predefinito.

Se desideri che il sistema operativo predefinito sia impostato sul sistema operativo dell'ultimo avvio, aggiungi le due righe seguenti sotto "GRUB_TIMEOUT = 3" mostrato sopra:

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

Modifica n. 2

Successivamente, è necessario aggiornare Prober OS per disabilitare la funzione quick_boot. Per fare ciò, apri il /etc/grub.d/30_os-probertuo editor preferito e modifica la riga di seguito (riga 23 in 17.04) sostituendo 1con una 0:

quick_boot="1"

Al termine, la riga dovrebbe essere simile a:

quick_boot="0"

Salvare i file e quindi eseguire il comando seguente per riconfigurare il bootloader e applicare le modifiche:

sudo update-grub

Questo è stato fatto! +1.
Marmo organico

Sembra una buona soluzione :) Ora ho una semplice domanda a riguardo. Se cambi GRUB_TIMEOUT da "3" a "1" Avvierai più velocemente. E puoi fornire collegamenti, se presenti, dove puoi leggere come funziona questo codice. Voglio capire cosa sta facendo questo codice e la sua sequenza di chiamate di funzione ecc. Molto apprezzato. È bello quando puoi risolvere le tue domande - buon lavoro su questo.
xtrchessreal,

@xtrchessreal sì, cambiando il 3 in 1 si accorcia di 2 secondi. Ho pensato che 3 secondi erano abbastanza tempo per farmi passare la mano sul tasto Esc, se volevo. Puoi guardare info -f grub -n 'Simple configuration'per maggiori informazioni.
heynnema,

+1 per Q e +1 per A. Nelle ultime due notti ho cercato su Google questo con tutti i tipi di modifiche cerebrali su 30_os-appropriate, creando 31_blah_blah e creando 40_custom tutto inutilmente. Questo è in AU, ArchLinux, Fedora e in molti altri posti. Se vuoi più voti, ti suggerisco di rintracciare tutte le risposte sbagliate qui in AU (ce ne sono molte) e votare per chiuderle come duplicati di questo, quindi fare un ping ( @mi) nella chat room generale di UA con un link al duplicato e lo voterò anch'io. Grazie per questa grande soluzione di ricerca e lavoro! :)
WinEunuuchs2Unix

@ WinEunuuchs2Unix grazie per il bel commento e i voti! Io stesso ho fatto molte ricerche prima di scoprire che nessuno aveva una soluzione elegante, o qualsiasi soluzione ... ma ero determinato :-)
heynnema

3

Credo che questo problema possa essere dovuto a più sistemi operativi secondo questo estratto dal wiki di Grub2 :

Se non viene rilevato nessun altro sistema operativo, GRUB 2 si avvierà direttamente nel sistema operativo predefinito e non verrà visualizzato alcun menu. Se viene rilevato un altro sistema operativo, verrà visualizzato il menu GRUB 2 .

E

Il salvataggio di un sistema operativo può essere ottenuto eseguendo sudo grub-set-default se GRUB_DEFAULT = salvato è impostato in / etc / default / grub. Può anche essere salvato se GRUB_SAVEDEFAULT = true è impostato anche in / etc / default / grub. In questo caso, il sistema operativo predefinito rimane finché non viene selezionato manualmente un nuovo sistema operativo dal menu GRUB 2 o viene eseguito il comando grub-set-default.

Il Wiki Grub2 afferma inoltre: Nota: esiste un bug confermato di vecchia data sulla funzione di menu nascosta in GRUB da 1.97 a GRUB 1.99. Il menu potrebbe non nascondersi come specificato nella descrizione in questa pagina. La modifica dello script 30_os-prober può risolvere questo problema, ma va oltre lo scopo di questa pagina.

Per aggirare il problema, puoi impostare GRUB_TIMEOUT="1"e vedrai il menu solo per 1 secondo. Se devo passare a un altro sistema operativo, premo semplicemente il tasto freccia giù in quel secondo e il menu apparirà finché non faccio una scelta.

Potrebbe esserci un potenziale problema di sintassi associato al bug. Non sono un esperto di Grub2 ma nel mio file grub ogni riga di comando termina con = "qualche impostazione tra virgolette" Ricordo dai miei giorni di programmazione che "virgolette" dovevano passare una stringa in cui come non virgolette passavano semplici valori numerici alle variabili. Non sono UP nelle nuove tecniche di codice. ad esempio Ecco alcuni dei miei risultati di GRUB:

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

Sto esaminando questo Grubbug :) per maggiori informazioni e per questo bug. Entrambi questi sono 2 anni correlati a Grub2 . Parte di questo potrebbe essere correlata al codice MBR prima del passaggio a Grub2


Grazie per la risposta. Sto già usando il metodo SAVEDEFAULT. TIMEOUT = 1 riduce sicuramente il tempo di comparsa del menu. Il problema ha a che fare con più sistemi operativi. Per provare, ho modificato quella parte di codice /etc/grub.d/30_os-probere, sebbene non avessi alcun menu, non ero in grado di forzare un menu con shift o esc al momento dell'avvio.
heynnema

Quei bug che hai collegato non sembrano rilevanti o mi sto perdendo qualcosa?
Anziano Geek,

@ElderGeek riguardo al bug # 1401318 la persona a cui è assegnato il bug a TJ spiega il comportamento dall'MBR a Grub mentre afferma "sleep --interruptable $ timeout" ecc. Se leggi tutte le sue dichiarazioni nei commenti sui bug penso vedrai qual è almeno una parte del problema. È anche assegnato al bug # 425979 che è simile nei problemi. Entrambi i bug hanno a che fare con il tasto Maiusc premuto per portare il menu Grub NON funziona quando impostato per essere nascosto. Questo è ciò che anche l'OP sta cercando di capire. Spero che questo chiarisca perché i collegamenti si trovano nella mia risposta postata.
xtrchessreal,

Perdonate la mia confusione. Ho letto la domanda dicendo "come posso nascondere il mio menu di GRUB" Grazie per il chiarimento. Devo aver perso quel commento.
Elder Geek,

@ElderGeek in realtà, la domanda è: "come posso nascondere il mio menu di GRUB E far sì che i tasti shift o esc mostrino il menu di GRUB nascosto all'avvio". Ho avuto da nascondere. Non ho ottenuto i tasti MAIUSC o ESC per funzionare. Apparentemente questo problema risale al 2013 o prima e ha effetto solo sulle configurazioni multi-boot.
heynnema,

3
  1. Immagino che tu voglia provare "tutto" disponibile via /etc/default/grub. Hai letto questo link,

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

  2. Ti suggerisco di provare a rimuovere le seguenti righe da /boot/grub/grub.cfg,

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

    Sì, lo so, dovresti farlo ogni volta che update-grubè stato eseguito, ma puoi creare uno script per questo.


Grazie per la risposta. Dò un'occhiata a quel link. Avevo anche trovato un modo per modificare /etc/grub.d/30_os-prober in modo da non dover modificare grub.cfg ogni volta.
heynnema

Questo ha senso per me, poiché in un sistema multiboot sembra che questo codice riporti il ​​timeout da 10 a 0, che sembra sconfiggere HIDDEN_TIMEOUT ....
Elder Geek,

@heynnema potresti pubblicare le tue modifiche su os-prober? Quando ho guardato il link nella tua domanda e l'ho confrontato con il codice nel mio os-prober, i numeri di riga non avevano senso, quindi presumo che os-prober sia cambiato da allora, e avevo paura di rovinarlo.
Marmo organico

1
@OrganicMarble vedi l'aggiornamento alla mia domanda. Forse puoi provare alcune / tutte le mie mod e vedere cosa ti viene in mente.
heynnema,

@sudodus, per favore, vedi la mia risposta
heynnema,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.