Définir le noyau «plus ancien» comme entrée de groupe par défaut

94

J'ai installé un noyau principal à des fins de test. Je voudrais configurer grub pour démarrer à partir de l’ancien noyau par défaut.

Je sais que je peux définir les GRUB_DEFAULT=0paramètres de la première page de grub, mais comment puis-je le configurer pour qu'il démarre par défaut à partir d'un noyau de la deuxième page (page Advanced)?

Je préférerais le faire sans installer d’autres logiciels (ex. Grub-customizer).

Questions connexes:
Comment définir Windows pour démarrer par défaut dans le chargeur de démarrage?
Comment changer l'ordre de démarrage de grub?

Faire
la source
3
@belacqua: Ce n'est pas un doublon. Cette question concerne la définition par défaut d'un noyau plus ancien qui n'est pas présent dans la première page d'options de grub.
À faire
Il semble que ce cas devrait être traité dans les questions précédentes, même si la méthode doit être mise à jour pour 12.10, les noyaux plus anciens, etc.
belacqua
3
Le cas d'utilisation de la question est différent, et la réponse est très spécifique et ne s'applique pas aux autres doublons revendiqués. Je suis venu ici pour résoudre ce problème particulier; ne pas changer l'ordre de démarrage; ni pour démarrer Windows. +1 pour "pas un doublon".
Robie Basak

Réponses:

128

Tout d’abord, faites une copie de sauvegarde de /etc/default/grub. Si quelque chose ne va pas, vous pouvez facilement revenir à la copie en bon état.

sudo cp /etc/default/grub /etc/default/grub.bak

Ensuite, éditez le fichier en utilisant l'éditeur de texte de votre choix (par exemple, gedit, etc.).

sudo -H gedit /etc/default/grub

Trouvez la ligne qui contient GRUB_DEFAULT- voici ce que vous voudrez éditer pour définir la valeur par défaut. Vous devez connaître le nom complet du noyau souhaité - par exemple Ubuntu, with Linux 3.13.0-53-generic- ainsi que le nom complet du "menu avancé" - par exemple Advanced options for Ubuntu.

Vous combinez ensuite ces deux chaînes avec >et les définissez GRUB_DEFAULTcomme suit: GRUB_DEFAULT="Advanced options for Ubuntu>Ubuntu, with Linux 3.13.0-53-generic"(y compris les guillemets).

Enregistrez-le, puis construisez le menu grub mis à jour.

sudo update-grub

Voir aussi: GNU GRUB Manuel 2.02 ou plus précisément la section 15.1.0 sur la définition des paramètres par défaut .


Remarque: Il existe une méthode utilisant des nombres pour accéder aux noyaux et aux menus, mais cela n’est pas recommandé, car elle n’est pas fiable lors des mises à jour du noyau.

DaimyoKirby
la source
24
L'utilisation d'une valeur numérique peut être problématique lorsque des mises à jour sont effectuées. Il est préférable d'utiliser un texte par défaut, c'est-à-dire: GRUB_DEFAULT = "Versions précédentes de Linux> Ubuntu, avec Linux 3.2.0-18-generic"
Bealer le
27
On peut utiliser sudo grub-mkconfig | lesspour voir toutes les options possibles
Nitz
9
C’est une bonne solution, mais le mieux est d’ouvrir un /boot/grub/grub.cfget vous y verrez manuentrytout le submenus. Si vous les modifiez, vous pouvez facilement définir les valeurs par défaut, voire modifier les titres des options de la liste de contrôle lors du redémarrage d’un ordinateur.
Aleks
7
Il est certainement utile d'examiner /boot/grub/grub.cfgpour déterminer les noms exacts à utiliser. Mais ne changez pas ce fichier car il sera automatiquement régénéré par update-grub, y compris lors de la mise à jour des packages.
Robie Basak
18
La mise en forme de GRUB_DEFAULT est légèrement obsolète (depuis au moins Ubuntu 14.04.2). update-grubJ'ai rencontré un avertissement en cours d'exécution : n'utilisez pas l'ancien titre Previous Linux versions>Ubuntu, with Linux 3.13.0-53-genericpour GRUB_DEFAULT, utilisez Advanced options for Ubuntu>Ubuntu, with Linux 3.13.0-53-generic(pour les versions antérieures à 2.00) ou gnulinux-advanced-b0ce60c3-184c-453b-af59-419b56a2584f>gnulinux-3.13.0-53-generic-advanced-b0ce60c3-184c-453b-af59-419b56a2584f(pour 2.00 ou ultérieur)
Wumms le
22

La meilleure solution pour moi a été de mettre (dans /etc/default/grub):

 GRUB_DEFAULT=saved
 GRUB_SAVEDEFAULT=true

Avec ces paramètres, la dernière valeur sélectionnée est conservée pour le prochain démarrage. Si vous avez un nouveau noyau, vous n'avez pas besoin de modifier votre configuration.

N'oubliez pas de recommencer sudo update-grub

La solution est de lire: info grub-mkconfig

Martin T.
la source
4
C'est génial
Mephisto
Êtes-vous sûr du point-virgule ( ;) au bout des lignes?!?
DJCrashdummy
Je ne peux pas regarder dans mon ordinateur où je l'ai utilisé en ce moment, mais vous avez raison ";" semble être faux ou inutile!
Martin T.
21

Maintenant qu’un Advancedmenu est par défaut dans Ubuntu, vous devez le sélectionner avant le noyau que vous souhaitez utiliser avec le >caractère.

Par exemple:

GRUB_DEFAULT="1>7"

dans /etc/default/grubet re-courir sudo update-grub.

Il est important de noter que pour le menu GRUB, la numérotation commence par 0. Par conséquent, ce qui 1précède pointe vers le Advancedmenu. Par précaution, vous souhaiterez peut-être définir initialement GRUB_TIMEOUT=5. Certains risquent de ne pas pouvoir accéder à GRUB en appuyant sur une touche au démarrage. C'est un filet de sécurité au cas où vous indiqueriez accidentellement quelque chose comme Memory test. Il est également nécessaire d'inclure les nombres ci-dessus entre guillemets. Cela ne fonctionnera pas autrement.

J'ai testé sur 16.04 LTS.

sarnold
la source
Fonctionne aussi dans Debian.
Lawrence D'Oliveiro
Je trouve cette réponse très utile car, après une mise à jour du noyau, elle pointe toujours vers le noyau le plus récent. dans ma configuration, par exemple, il s'agit de 1> 0, ce qui signifie: liste avancée en premier (est toujours le noyau le plus récent). mon système s’est parfois arrêté de mettre à jour automatiquement l’entrée 0 de grub avec le noyau le plus récent, j’utilise donc cette méthode.
Peter Fleix
9

Pour pouvoir définir l'option de démarrage à utiliser par défaut, vous devez savoir ce qu'il y a ... donc:

Pour afficher les entrées de menu sans réellement démarrer , essayez l'une des solutions suivantes:

$ lsb_release -s -rdc
Ubuntu 16.04.4 LTS
16.04
xénial

$ update-grub --version
grub-mkconfig (GRUB) 2.02 ~ beta2-36ubuntu3.17

$ grep -Ei 'sous-menu | menuentry' /boot/grub/grub.cfg | sed -re "s / (.?) '([^'] +) '. * / \ 1 \ 2 /"
menuentry Ubuntu
sous-menu Options avancées pour Ubuntu
    menuentry Ubuntu, avec Linux 4.4.0-34-generic
    menuentry Ubuntu, avec Linux 4.4.0-34-generic (mise à jour)
    menuentry Ubuntu, avec Linux 4.4.0-34-generic (mode de récupération)
Menuentry Configuration du système

Hannu
la source