web-dev-qa-db-fra.com

changer GRUB ordre du chargeur de démarrage dans GRUB

Dans notre système, deux systèmes d'exploitation Ubuntu sont installés.

Au démarrage, GRUB demande à quelle Ubuntu démarrer, mais je dois maintenant ajouter un nouvel élément de menu dans GRUB et cet élément de menu permettra à l'utilisateur de modifier le démarrage par défaut de Linux.

enter image description here

Dans l'image ci-dessus, je dois ajouter un troisième élément de menu. Ce menu permet à l'utilisateur de sélectionner le nouveau système d'exploitation par défaut. Si l'utilisateur sélectionne "Définir Linux 2 comme valeur par défaut", la prochaine fois, lors de l'ordre de redémarrage, sera comme dans l'image ci-dessous.

enter image description here

J'ai trouvé des documentations sur la modification de l'ordre de démarrage mais ces documents décrivent le processus sous Ubuntu. Je souhaite y parvenir au sein de GRUB lui-même. Comment puis je faire ça?

1
zenprogrammer

Nous pouvons y parvenir en utilisant Environment-block de Grub. Le bloc d'environnement est stocké dans /boot/grub/grubenv et ce fichier est un peu spécial. Il a une taille préallouée de 1024 octets. Nous ne devrions pas éditer ce fichier avec un éditeur de texte, même si vous pouvez l'ouvrir avec un éditeur de texte pour en afficher le contenu.

Nous pouvons éditer /boot/grub/grubenv avec différents outils:

Commande de terminal Sudo grub-editenv [OPTION...] FILENAME COMMAND, voir aussi man grub-editenv

Commande de saisie de menu save_env [-f file] var, voir les détails dans GNU Manuel Grub

Si le fichier /boot/grub/grubenv ne se ferme pas, vous pouvez le créer avec

Sudo grub-editenv/boot/grub/grubenv crée

Nous devrons créer des entrées de menu personnalisées, https://help.ubuntu.com/community/Grub2/CustomMenus fournit des informations utiles sur la procédure à suivre. Éditez /etc/grub.d/40_custom pour qu'il ressemble à ceci:

#!/bin/sh 
 exec tail -n +3 $ 0 
 # Ce fichier permet d'ajouter facilement des entrées de menu personnalisées. Tapez simplement les entrées de menu 
 # Que vous souhaitez ajouter après ce commentaire. Veillez à ne pas modifier 
 # Le sous-menu "Exécuter par défaut" au-dessus du sous-menu 
 # 
 "Définir les valeurs par défaut d'amorçage" {
 "Définir la première entrée par défaut" {
 set saved_entry = 0 
 save_env saved_entry 
 redémarrez 
} 
 menuentry 'Définit la deuxième entrée comme valeur par défaut' {
 set Saved_entry = 1 
 Save_env saved_entry 
 Redémarrez 
} 
}

Si nous avons déjà des entrées de menu personnalisées dans le fichier, nous ajoutons simplement les lignes après les lignes de commentaires à notre fichier. Les commandes dans les entrées de menu agissent comme suit:

set saved_entry définit la variable d'environnement saved_entry sur la valeur spécifiée. 
 Save_env saved_entry enregistre la variable saved_entry dans /boot/grub/grubenv.
reboot redémarre l'ordinateur.

De plus, nous devrons éditer /etc/default/grub qui contient la configuration de base Grub. Encore une fois, dans le GNU Grub Manual, nous trouverons informations détaillées .

Dans /etc/default/grub nous devons changer la valeur de GRUB_DEFAULT en GRUB_DEFAULT=saved. Cela forcera Grub à charger l'entrée de menu par défaut à partir de /boot/grub/grubenv lors du démarrage. Si vous trouvez une ligne avec GRUB_SAVEDEFAULT=true, supprimez cette ligne.

Pour appliquer les modifications apportées au fichier de configuration principal de Grub /boot/grub/grub.cfg, nous devons exécuter Sudo update-grub.

La prochaine étape consiste à exécuter Sudo grub-editenv - set saved_entry=0 dans un terminal. Nous faisons cela pour éviter les conflits, lorsque Grub démarrera la prochaine fois, Grub recherchera saved-entry dans /boot/grub/grubenv et pourra le trouver.

Maintenant, nous pouvons redémarrer, lorsque le menu Grub apparaît, nous verrons le sous-menu ajouté dans la liste, nous l'ouvrirons et sélectionnerons l'une des entrées. Grub définira save_entry sur la valeur spécifiée, l'enregistrera sur /boot/grub/grubenv, puis redémarrera. Le menu Grub apparaît à nouveau et nous verrons que la nouvelle valeur par défaut est sélectionnée automatiquement.

Une dernière chose à considérer

Dans quel système d'exploitation devons-nous apporter ces modifications? Nous avons deux distributions Linux installées et les deux sont livrées avec Grub. Avec les informations provenant d'un Résumé d'informations de démarrage et de la commande de terminal findmnt, nous devrions être en mesure d'identifier la distribution qui contient et contrôle les fichiers de configuration. Dans cette distribution, nous devons alors effectuer les étapes ci-dessus. Dans l'autre distribution, Grub n'est pas nécessaire et doit être supprimé ou même purgé, afin d'éviter tout type de conflit.

Informations complémentaires:

Testé cela sur mon système avec la version Grub 2.02~beta2-36ubuntu3.8.

3
mook765

cd/etc/default /

vim Grub

remplacez GRUB_DEFAULT = par celui que vous souhaitez.

OR

cd/boot/grub

vim grub.cfg

ici, soyez prudent lors de l'édition

Réorganisez les fonctions des menus et vous pourrez le voir sur le chargeur de démarrage.

0
Prawin