Comment puis-je masquer mon menu GRUB ET faire en sorte que les touches Maj ou Echap affichent le menu GRUB masqué au démarrage

10

J'utilise Ubuntu 16.10 et j'essaie de masquer mon menu GRUB à la mise sous tension / au démarrage et je souhaite que le menu n'apparaisse que lorsque j'appuie sur les touches Shiftou Esc.

Je modifie les options appropriées dans /etc/default/grubet cela ne masquera toujours pas le menu.

En recherchant cela, j'ai trouvé que ce message du menu masqué GRUB 2013 ne fonctionne pas, ce qui indique que le problème existe depuis un certain temps et suggère un changement /etc/grub.d/30_os-proberauquel je préfère ne pas faire. Ce code suggère que depuis qu'il a trouvé plusieurs systèmes d'exploitation, il va de GRUB_TIMEOUT=10toute façon le définir .

Voici un extrait de ce que j'ai maintenant dans /etc/default/grub... un menu avec un compte à rebours de 10 secondes ...

GRUB_DEFAULT = enregistré
GRUB_SAVEDEFAULT = true
GRUB_HIDDEN_TIMEOUT_QUIET = true
# GRUB_HIDDEN_TIMEOUT = 0
GRUB_TIMEOUT = 10
GRUB_DISTRIBUTOR = `lsb_release -i -s 2> / dev / null || écho Debian`
GRUB_CMDLINE_LINUX_DEFAULT = "éclaboussure silencieuse"

Si je ne commente pas #GRUB_HIDDEN_TIMEOUT=0, sudo update-grubinsiste sur le fait que je me suis également mis GRUB_TIMEOUT=10à GRUB_TIMEOUT=0. Je le fais et je vois toujours le menu GRUB.

Dans terminal, la saisie info -f grub -n 'Simple configuration'décrit les différentes options et, à la toute fin des informations, elle montre que certaines des commandes actuelles ont été dépréciées et suggère que les remplacements les plus récents sont meilleurs.

Quelqu'un sait-il comment masquer mon menu GRUB en 16.10 ET le faire reconnaître Shiftou les Escclés au démarrage?

heynnema
la source
Je suis content que vous ayez posé cette question. Je n'ai pas pu faire fonctionner le mien non plus, et cela confirme que c'est à cause de la boîte étant un dual booter.
Organic Marble
1
@OrganicMarble Le problème a à voir avec plusieurs systèmes d'exploitation. Pour tester, j'ai modifié cette portion de code dans /etc/grub.d/30_os-prober, et bien que je n'ai pas eu de menu, je n'ai pas pu forcer un menu avec shift ou esc au démarrage. Travaille toujours dessus.
heynnema
J'ai ajouté plus d'informations sur les bogues liés aux vôtres dans ma réponse, ils peuvent vous aider à comprendre la nature du problème de manière plus approfondie. Je regarde également le code Grub2 - essayant d'aider :)
xtrchessreal
Essayez d'utiliser Grub Customizer si vous ne l'avez pas déjà fait, onglet General Setting dans cet ordre - 1 Décochez la case "chercher d'autres systèmes d'exploitation" et 2 Décochez "show menu" puis enregistrez. Testez cela et voyez si "Shift" fera apparaître le menu et ensuite ce qui se passe si rien n'est pressé.
xtrchessreal
Je peux comprendre que vous préférez ne pas modifier, /etc/grub.d/30_os-probermais je ne vois vraiment pas le mal. Vous pouvez conserver une copie sauvegardée ou #Commenter vos modifications afin de pouvoir les annuler si nécessaire. La solution de contournement que vous avez trouvée semble la solution la plus raisonnable pour le moment.
Elder Geek, le

Réponses:

7

OK les amis, voici la réponse ... pour obtenir un menu GRUB caché dans les configurations à double démarrage ... deux modifications ... et un sudo update-grub...

Éditer # 1

Pour obtenir un menu GRUB caché dans une configuration multi-boot, nous devons d'abord le modifier /etc/default/grub. Ouvrez ce fichier à l'aide de la commande ci-dessous:

sudo editor /etc/default/grub

Une fois le fichier ouvert, remplacez ces lignes

GRUB_HIDDEN_TIMEOUT_QUIET=true
#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=10

avec ces:

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

GRUB affichera alors un compte à rebours de 3 secondes à l'écran. Ce faisant, un utilisateur peut appuyer sur la Esctouche pour afficher le menu par défaut. Sinon, le système d'exploitation par défaut démarrera.

Si vous souhaitez que le système d'exploitation par défaut soit défini sur le dernier système d'exploitation démarré, ajoutez les deux lignes ci-dessous sous le "GRUB_TIMEOUT = 3" illustré ci-dessus:

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

Éditer # 2

Ensuite, le prober du système d'exploitation doit être mis à jour pour désactiver la fonction quick_boot. Pour ce faire, ouvrez /etc/grub.d/30_os-proberdans votre éditeur préféré et changez la ligne ci-dessous (ligne 23 en 17.04) en remplaçant le 1par un 0:

quick_boot="1"

Lorsque vous avez terminé, la ligne doit se lire comme suit:

quick_boot="0"

Enregistrez les fichiers, puis exécutez la commande ci-dessous pour reconfigurer le chargeur de démarrage et appliquer vos modifications:

sudo update-grub
heynnema
la source
Ça y est! +1.
Marbre organique
On dirait une bonne solution :) Maintenant, j'ai une question simple à ce sujet. Si vous changez le GRUB_TIMEOUT de "3" à "1" Allez-vous démarrer plus rapidement. Et pouvez-vous fournir des liens, le cas échéant, où l'on peut lire comment ce code fonctionne. Je veux comprendre ce que fait ce code et sa séquence d'appels de fonction, etc. Très apprécié. C'est bien quand vous pouvez résoudre vos propres questions - bon travail là-dessus.
xtrchessreal
@xtrchessreal yes, changer le 3 en 1 le raccourcit de 2 secondes. J'ai pensé que 3 secondes étaient suffisantes pour que je puisse mettre la main sur la touche Échap, si je le voulais. Vous pouvez consulter info -f grub -n 'Simple configuration'pour plus d'informations.
heynnema
+1 pour Q et +1 pour A. Ces deux dernières nuits, j'ai fait une recherche sur Google avec toutes sortes de modifications à 30_os-proper, créant 31_blah_blah et 40_custom tout en vain. C'est dans AU, ArchLinux, Fedora et bien d'autres endroits.Si vous voulez plus de votes, je vous suggère de rechercher toutes les mauvaises réponses ici en AU (il y en a beaucoup) et de voter pour les fermer en tant que doublons de celui-ci, puis de me cingler ( @ me) dans le chat général de l'UA avec un lien vers le doublon et je le voterai aussi. Merci pour cette excellente solution de recherche et de travail! :)
WinEunuuchs2Unix
@ WinEunuuchs2Unix merci pour le gentil commentaire et les votes! J'ai moi-même fait beaucoup de recherches avant de
découvrir
3

Je crois que ce problème peut être dû à plusieurs systèmes d'exploitation selon cet extrait du wiki Grub2 :

Si aucun autre système d'exploitation n'est détecté, GRUB 2 démarre directement dans le système d'exploitation par défaut et aucun menu ne s'affiche. Si un autre système d'exploitation est détecté dans le menu grub2 s'affiche.

ET

L'enregistrement d'un système d'exploitation peut être réalisé en exécutant sudo grub-set-default si GRUB_DEFAULT = saved est défini dans / etc / default / grub. Il peut également être enregistré si GRUB_SAVEDEFAULT = true est également défini dans / etc / default / grub. Dans ce cas, le système d'exploitation par défaut reste jusqu'à ce qu'un nouveau système d'exploitation soit sélectionné manuellement dans le menu GRUB 2 ou que la commande grub-set-default soit exécutée.

Le Wiki Grub2 déclare également: Remarque: Il existe un bogue confirmé de longue date sur la fonction de menu caché dans GRUB 1.97 à GRUB 1.99. Le menu peut ne pas se cacher comme spécifié dans la description de cette page. Bien que la modification du script 30_os-prober puisse résoudre ce problème, cela dépasse le cadre de cette page.

En guise de solution, vous pouvez définir le GRUB_TIMEOUT="1"et vous ne verrez le menu que pendant 1 seconde. Si j'ai besoin de passer à un autre système d'exploitation, je tape simplement la flèche vers le bas dans cette seconde et le menu apparaîtra jusqu'à ce que je fasse un choix.

Il peut y avoir un problème de syntaxe potentiel associé au bogue. Je ne suis pas un expert de Grub2 mais dans mon fichier grub, chaque ligne de commande se termine par = "un paramètre cité" . Je ne suis pas UP dans les nouvelles techniques de code. Par exemple, voici une partie de ma sortie 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"

Je suis à la recherche dans ce Grubbug :) pour plus d'informations ainsi que ce bug Les deux sont vieux de 2 ans liés à Grub2. Une partie de cela pourrait être liée au code MBR avant le transfert à Grub2

xtrchessreal
la source
Merci pour votre réponse. J'utilise déjà la méthode SAVEDEFAULT. TIMEOUT = 1 raccourcit certainement le temps d'apparition du menu. Le problème a à voir avec plusieurs systèmes d'exploitation. Pour tester, j'ai modifié cette portion de code dans /etc/grub.d/30_os-prober, et bien que je n'aie pas de menu, je n'ai pas pu forcer un menu avec shift ou esc au démarrage.
heynnema
Ces bugs que vous avez liés ne semblent pas pertinents ou manque-t-il quelque chose?
Elder Geek
@ElderGeek en ce qui concerne le bogue # 1401318, la personne à qui le bogue est assigné à TJ explique le comportement du MBR à Grub alors qu'il déclare "sleep --interruptable $ timeout" etc. Si vous lisez toutes ses déclarations dans les commentaires de bogue, je pense vous verrez quelle est au moins une partie du problème. Il est également affecté au bogue # 425979, qui est similaire dans les problèmes. Les deux bogues concernant le maintien de la touche Maj pour que le menu Grub ne fonctionne pas lorsqu'ils sont définis pour être masqués C'est ce que le PO essaie également de comprendre. J'espère que cela clarifie pourquoi les liens sont dans ma réponse postée.
xtrchessreal
Pardonnez ma confusion. J'ai lu la question comme disant "comment masquer mon menu GRUB" Merci d'avoir clarifié. J'ai dû manquer ce commentaire.
Elder Geek
@ElderGeek en fait, la question est: "comment puis-je masquer mon menu GRUB, et faire en sorte que les touches Maj ou Echap affichent le menu GRUB caché au démarrage". Je l'ai caché. Je n'ai pas réussi à faire fonctionner les touches Maj ou Echap. Apparemment, ce problème remonte à 2013 ou avant, et n'affecte que les configurations à démarrage multiple.
heynnema
3
  1. Je suppose que vous voulez essayer «tout» disponible via /etc/default/grub. Avez-vous lu ce lien,

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

  2. Je vous suggère d'essayer de supprimer les lignes suivantes de /boot/grub/grub.cfg,

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

    Oui, je sais, vous devriez le faire à chaque fois update-grubque vous avez exécuté, mais vous pouvez créer un script pour cela.

sudodus
la source
Merci pour votre réponse. Je vais jeter un œil à ce lien. J'avais également trouvé un moyen de modifier /etc/grub.d/30_os-prober pour ne pas avoir à modifier grub.cfg à chaque fois.
heynnema
Cela a du sens pour moi, car dans un système multiboot, il semble que ce code ramène le délai d'attente à 10 de 0, ce qui semble vaincre HIDDEN_TIMEOUT ....
Elder Geek
@heynnema pourriez-vous publier vos modifications dans os-prober? Lorsque j'ai regardé le lien dans votre question et que je l'ai comparé au code dans mon os-prober, les numéros de ligne n'avaient pas de sens, donc je suppose que os-prober a changé depuis lors, et j'avais peur de jouer avec.
Marbre organique du
1
@OrganicMarble voir la mise à jour de ma question. Peut-être que vous pouvez essayer certains / tous mes mods et voir ce que vous proposez.
heynnema
@sudodus s'il vous plaît voir ma réponse
heynnema