Impossible d'extraire le menu grub (ou de s'en aller)

18

J'utilise Ubuntu 12.04.

Je ne peux pas pour la vie de moi faire disparaître le menu grub (avec options).

Je voudrais qu'il démarre automatiquement dans la première option. J'ai édité / etc / default / grub pour qu'il ressemble à ceci:

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

Après cela, j'ai exécuté sudo update-grub . Ensuite, j'ai réalisé que j'avais grub 2, j'ai donc exécuté sudo update-grub2 (les deux donnent l'impression de créer le fichier grub.cfg avec succès.

Je redémarre mon ordinateur et il revient au menu grub et reste assis jusqu'à ce que je fasse un choix. Ce n'est pas souhaitable en cas de coupure de courant ... :-)

J'ai également essayé de réinstaller grub en utilisant sudo grub-install / dev / sda - également sans succès

Eric
la source
Avez-vous par hasard une autre partition sur laquelle vous avez installé Ubuntu après avoir configuré la partition actuelle dans laquelle vous souhaitez maintenant démarrer automatiquement?
fabricator4
Je ne sais pas ce que tu veux dire, je suis un peu nouveau pour Linux. J'ai installé sur une installation précédente d'Ubuntu, mais je n'ai pas mis à niveau. Installation propre. J'ai peut-être foutu quelque chose au niveau de la partition ... c'est possible, des idées pour le réparer?
Eric
sudo update-grubet sudo update-grub2exécute la même commande. Alors, ne vous inquiétez pas pour cette partie.
saji89
Veuillez poster la sortie de cat /boot/grub/grub.cfg via pastebin et partager le lien ici. C'est pour voir le réel grub.cfggénéré.
saji89
Voici le pastebin: pastebin.com/xxe2rLhg de grub.cfg. Merci pour votre aide!
Eric

Réponses:

23

Comme d'autres réponses le soulignent, vous pouvez être victime de la situation d' échec d'enregistrement . L'édition /boot/grub/grub.cfgmanuelle devrait être hors de question car elle est générée automatiquement. Une autre suggestion vue est de modifier le, /etc/grub.d/00_headermais cela pourrait inciter l'utilisateur à intervenir sur les mises à jour.

La solution la plus simple consiste à définir la variable non documentée GRUB_RECORDFAIL_TIMEOUT dans /etc/default/grub. Par exemple:

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

Éditer

Voir cette réponse pour plus de détails.

C2H5OH
la source
1
Merci beaucoup, c'est exactement ce que je cherchais!
Avio
1
Après avoir effectué la modification, exécutez également update-grubpour générer le /boot/grub/grub.cfgfichier mis à jour
Colt
Ne tuez pas la fonctionnalité de recordfail! Vous souhaitez un délai plus long en cas d'échec du démarrage. Pour effacer manuellement, tout ce que vous avez besoin est la réponse de @ sniffski: grub-editenv create. Cependant, il pourrait y avoir une autre raison de recordfailse préparer ...
Cameron Tacklind
6

Utilisation:

grub-editenv create

Cela effacera le fichier d'environnement grub et devrait démarrer clairement la prochaine fois.

sniffski
la source
Merci beaucoup pour le partage. Cela a fonctionné via SSH, ce qui a fait ma journée pour un serveur sans tête blub.
Geppettvs D'Constanzo
1
grub-editenv - unset recordfailfonctionne aussi bien et n'affecte pas les autres envs qui pourraient être définis
Cameron Tacklind
2

changer le GRUB_TIMEOUT=10à zéro

Voici mon fichier de configuration:

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

Commencez par écrire le nom du système d'exploitation sur lequel vous souhaitez démarrer directement. Le mien est Ubuntu. Vous allez donc l'écrire comme dans leGRUB_DEFAULT="Ubuntu, with Linux x.x.x-xx-generic-pae"

puis j'ai utilisé 1 seconde dans le GRUB_TIMEOUT=pour me donner 1 seconde avant de sélectionner l'OS par défaut (si j'ai besoin de démarrer sur un autre OS par exemple Xubuntu)

comme GRUB_CMDLINE_LINUX_DEFAULT=""si vous supprimez, quite splashil vous montrera des textes au lieu du logo Ubuntu pendant le processus de démarrage (j'aime ça: P)


Il existe une autre solution:

Il existe un programme appelé boot-repair qui aide à la configuration avec une interface graphique.

entrez la description de l'image ici

entrez la description de l'image ici

comme vous pouvez le voir sur l'image. il y a une boîte appelée Unhide boot menu. Décochez la case et appuyez sur appy. Vous pouvez y accéder en cliquant sur la flèche des options avancées.

installer la réparation de démarrage

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

sudo apt-get update

sudo apt-get install -y boot-repair

puis exécutez boot-reapirà partir du terminal ou du tableau de bord.


3ème solution:

Vous pouvez utiliser une application graphique facile à utiliser appelée grub-customizer pour vous faciliter la vie. Comme son nom l'indique, vous pouvez faire bien plus que simplement réorganiser les entrées du menu Grub avec.

Vous pouvez l'installer en:

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

entrez la description de l'image ici

comme vous pouvez le voir dans le menu, il y a une show menuoption. Décochez et voyez si cela fonctionne

Suhaib
la source
Pas de changement. : - / Je pensais que GRUB_DEFAULT était censé être un # numérique selon la liste du menu? Changer GRUB_TIMEOUT en 0 n'a pas aidé.
Eric
@Eric vous pouvez utiliser 2 façons: si vous connaissez la place de votre OS dans la liste grub, vous pouvez utiliser un numéro. Mais pour moi, j'ai 4 distributions Linux et 1 Windows plus le memTest et la récupération. Donc c'est difficile pour moi de mémoriser leurs endroits :) juste pour être sûr (je sais que vous l'avez peut-être fait mais juste pour vous assurer: P). Avez-vous exécuté le grub-updateaprès avoir modifié les valeurs?
Suhaib
J'ai exécuté grub-update après avoir changé les valeurs. : - /
Eric
J'ai installé et utilisé l'application de réparation de démarrage que vous avez fournie, elle fonctionne au premier redémarrage. Après cela, le menu GRUB est de retour et il reste là jusqu'à ce que j'appuie sur une touche. Merci pour toute votre aide, je l'apprécie vraiment. Je ne sais pas où aller d'ici ...
Eric
@Eric ok j'ai trouvé une 3ème solution check it
Suhaib
2

GRUB_HIDDEN_TIMEOUTet les GRUB_HIDDEN_TIMEOUT_QUIEToptions sont déconseillées. Alors commentez-les.

Pour ignorer le menu et l'afficher lorsque vous le maintenez enfoncé ESC, ajoutez:

GRUB_TIMEOUT_STYLE='countdown'
GRUB_TIMEOUT=1

Échantillon /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' : Si cette option est définie sur 'compte à rebours' ou 'caché', alors, avant d' afficher le menu, GRUB attendra que le délai défini par 'GRUB_TIMEOUT' expire. Si ESC est pressé pendant ce temps, il affichera le menu et attendra l'entrée.

Gayan Weerakutti
la source
cela devrait , mais tout ce qu'il fait est d'afficher le menu standard pendant 1 seconde. Au moins sur un tout nouveau 16.04
frnhr
1

Je pourrais résoudre ce problème en ajoutant la ligne suivante à /etc/default/grub

GRUB_DISABLE_OS_PROBER=true

... puis en cours d'exécution sudo update-grub.

Explication: Le fichier /boot/grub/grub.cfgest généré en exécutant update-grubà l'aide des fichiers dans /etc/grub.det /etc/default/grub. Par conséquent, vous ne devez pas modifier grub.cfg, mais il peut être utile de savoir pourquoi le délai est défini. Recherchez les lignes commençant par set timeout=puis recherchez la ligne suivante commençant par ### END /etc/grub.d/ .... Cela pourrait vous donner des indications sur le script qui définit le délai d'expiration. Dans mon cas, le script os-prober était responsable du délai d'expiration. Il s'avère qu'il y a un délai d'attente codé en dur de 10 secondes /etc/grup.d/30_os-proberqui n'est pas défini par GRUB_TIMEOUT. Vous pouvez désactiver os-prober par GRUB_DISABLE_OS_PROBER=trueou modifier /etc/grup.d/30_os-proberou utiliser GRUB_OS_PROBER_SKIP_LISTpour ignorer certaines de vos partitions de disque dur (30_os-prober est utilisé lorsqu'un autre système d'exploitation est trouvé quelque part). Voir ce Q & A pour plus de détails. Comme d'autres l'ont souligné, une autre raison pourrait être l' échec du record , dans ce cas-ci GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT.

lumbric
la source
0

J'ai eu le problème que le menu grub apparaissait toujours après avoir utilisé AUFS (unionfs) pour mettre le système de fichiers racine en lecture seule. J'ai dû physiquement appuyer sur la touche Entrée du serveur après chaque démarrage. J'ai suivi les instructions ici: désactiver le menu grub 2 . Depuis, je n'ai eu aucun problème.

Modifiez le fichier /boot/grub/grub.cfg et changez:

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

À

if [ ${recordfail} = 1 ]; then
  set timeout=1
else
  set timeout=10
fi
Fabio Vaz
la source
L'avant et l'après dans votre solution sont exactement les mêmes.
RawwrBag
set timeout=-1n'est pas le même que set timeout=1. Le premier est "attendre pour toujours" et le second est "attendre une seconde".
Jeff McJunkin
0

Mon Ubuntu avait toujours un délai d'expiration de 30 secondes, que j'aurais défini une valeur ou non. Voici comment j'ai découvert que recordfail était la valeur manquante .

1. Vérifiez le script grub réel /boot/grub/grub.cfg

À mon humble avis, la meilleure façon de vérifier ce que fera Grub est d'ouvrir /boot/grub/grub.cfg. Il s'agit du script généré automatiquement à l' grub-mkconfigaide de modèles /etc/grub.det de paramètres de /etc/default/grub.

Autour de la ligne 109, vous verrez voir quelque chose comme:

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

Dans mon cas, à l'aide de ce script généré, j'ai pu découvrir que la recordfailvariable n'était pas définie.

2. Si la recordfailvariable n'est pas définie, définissez-la

Ouvrez /etc/default/grubdans votre éditeur de texte préféré (par exemple vim), puis définissez la variable GRUB_RECORDFAIL_TIMEOUTsur une valeur donnée, par exemple 5 secondes.

Votre fichier de configuration devrait ressembler à:

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. Mettez à jour la configuration pour fonctionner avec update-grub

Dernière étape, mettez à jour la configuration avec laquelle exécuter update-grub. Pour l'instant, GRUB2 utilisera le délai défini. Cette commande régénérera le /boot/grub.cfgfichier.

4. Vérifiez le résultat du script généré

Encore une fois, ouvrez /boot/grub.cfget vérifiez le résultat autour de la ligne 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

Notez que la valeur à la ligne 109 est désormais 5 au lieu de 30 comme auparavant.

KeyMaker00
la source