Comment puis-je choisir quel noyau GRUB2 doit charger par défaut? J'ai récemment installé un noyau Linux en temps réel et maintenant il se charge par défaut. Je voudrais charger celui normal par défaut.
Jusqu'à présent, je n'ai réussi qu'à choisir le système d'exploitation par défaut .. et pour une raison quelconque, le /boot/grub.cfg
suppose déjà que je veux charger le rt-kernel et le mettre dans l'entrée générique du menu linux (dans mon cas Arch Linux).
jkt123 fonctionnera pour la plupart des distributions, je suppose. Cependant, pour Arch Linux, cela n'a pas fonctionné, du moins pas avec les packages dont je dispose.
Les indices que vous pouvez définir avec grub-set-default
ne correspond qu'aux entrées du menu principal. Les options du noyau sont cependant dans un sous-menu. Donc, soit vous déplacez l'entrée du noyau hors du sous-menu dans le menu principal, soit vous placez l'entrée en haut de la liste des sous-menus et sélectionnez le sous-menu.
Mon menu Grub
Pour pouvoir démarrer le noyau 2, vous devez soit l'échanger avec le noyau 1, soit le placer en dehors du sous-menu au même niveau qu'Arch Linux ou Windows. Et puis définissez le nombre par défaut sur l'un des index du menu principal. Par exemple, dans le menu ci-dessus, "0" démarre "Arch Linux" et "1" démarre le noyau 1.
Pour modifier la hiérarchie et permuter, ouvrez /boot/grub/grub.cfg
et déplacez l'entrée que vous souhaitez déplacer. Une entrée pourrait ressembler à ceci
menuentry 'ENTRY NAME'
... some code ...
}
Ensuite, vous devez appliquer vos modifications. Dans mon cas avec grub-mkconfig
. Mais cela peut varier d'un système à l'autre.
Je pense que la plupart des distributions ont déplacé des noyaux supplémentaires dans le sous-menu des options avancées à ce stade, comme TomTom a constaté que c'était le cas avec son Arch.
Je ne voulais pas modifier ma structure de menu de niveau supérieur afin de sélectionner un noyau précédent par défaut. J'ai trouvé la réponse ici:
http://www.humans-enabled.com/2014/08/how-to-set-default-grub-kernel-boot.html
Résumer:
1) Trouvez le $menuentry_id_option
Pour le sous-menu:
$ grep submenu /boot/grub/grub.cfg
submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
2) Trouvez le $menuentry_id_option
Pour l'entrée de menu du noyau que vous souhaitez utiliser:
$ grep gnulinux /boot/grub/grub.cfg
menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
menuentry 'Debian GNU/Linux, with Linux 4.18.0-0.bpo.1-rt-AMD64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.18.0-0.bpo.1-rt-AMD64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
menuentry 'Debian GNU/Linux, with Linux 4.18.0-0.bpo.1-rt-AMD64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.18.0-0.bpo.1-rt-AMD64-recovery-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
menuentry 'Debian GNU/Linux, with Linux 4.18.0-0.bpo.1-AMD64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.18.0-0.bpo.1-AMD64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
menuentry 'Debian GNU/Linux, with Linux 4.18.0-0.bpo.1-AMD64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.18.0-0.bpo.1-AMD64-recovery-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
menuentry 'Debian GNU/Linux, with Linux 4.17.0-0.bpo.1-AMD64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.17.0-0.bpo.1-AMD64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
menuentry 'Debian GNU/Linux, with Linux 4.17.0-0.bpo.1-AMD64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.17.0-0.bpo.1-AMD64-recovery-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
menuentry 'Debian GNU/Linux, with Linux 4.9.0-8-AMD64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.9.0-8-AMD64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
menuentry 'Debian GNU/Linux, with Linux 4.9.0-8-AMD64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.9.0-8-AMD64-recovery-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc' {
3) Mettez en commentaire votre grub par défaut actuel dans /etc/default/grub
Et remplacez-le par le $menuentry_id_option
Du sous-menu de la première étape et le $menuentry_id_option
Du noyau sélectionné de la deuxième étape séparé par >
.
Dans mon cas, le GRUB_DEFAULT
Modifié est:
#GRUB_DEFAULT=0
GRUB_DEFAULT="gnulinux-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc>gnulinux-4.18.0-0.bpo.1-AMD64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc"
4) Mettez à jour grub pour apporter les modifications. Pour Debian, cela se fait comme suit:
$ Sudo update-grub
Terminé. Maintenant, lorsque vous démarrez, le menu avancé doit avoir un astérisque et vous devez démarrer dans le noyau sélectionné. Vous pouvez le confirmer avec uname
.
$ uname -a
Linux NAME 4.18.0-0.bpo.1-AMD64 #1 SMP Debian 4.18.0-0 (2018-09-13) x86_64 GNU/Linux
Changer cela pour le noyau le plus récent est aussi simple que de commenter la nouvelle ligne et de ne pas commenter #GRUB_DEFAULT=0
:
GRUB_DEFAULT=0
#GRUB_DEFAULT="gnulinux-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc>gnulinux-4.18.0-0.bpo.1-AMD64-advanced-38ea4a12-6cfe-4ed9-a8b5-036295e62ffc"
puis relancez update-grub
.
Après avoir lutté pendant 2 heures, j'ai trouvé un moyen beaucoup plus facile d'y parvenir. Je viens de RTFM. ;)
Ajoutez deux lignes à/etc/default/grub
GRUB_SAVEDEFAULT=true
GRUB_DEFAULT=saved
Faites le Sudo update-grub
, redémarrez, accédez à votre menu grub et sélectionnez le menu ou l'élément de sous-menu dont vous avez besoin. Le choix sera enregistré et la prochaine fois que votre ordinateur démarrera automatiquement.
Comme mentionné dans les commentaires, vous pouvez définir le noyau par défaut pour démarrer en utilisant le grub-set-default X
commande, où X est le numéro du noyau dans lequel vous souhaitez démarrer. Dans certaines distributions, vous pouvez également définir ce nombre en modifiant le /etc/default/grub
fichier et paramétrage GRUB_DEFAULT=X
, puis en exécutant update-grub
.
Le nombre est l'index d'un tableau de paramètres noyaux/noyau affiché dans le menu GRUB lors du démarrage, 0 étant la première entrée (la plus haute). Vous pouvez généralement trouver le bon nombre en recherche de menuentry
lignes dans /boot/grub/grub.cfg
, ainsi:
grep menuentry /boot/grub/grub.cfg
Vous verrez chaque noyau répertorié avec le nom qui apparaît dans le menu de démarrage GRUB. Le premier est 0, le second est 1, etc.).
Faire simplement grep 'menuentry' /boot/grub/grub.cfg
répertorie les entrées supplémentaires qui ne sont pas liées aux versions réelles du noyau ou du système d'exploitation. Par exemple, il répertorie
if [ x"${feature_menuentry_id}" = xy ]; then
menuentry_id_option="--id"
menuentry_id_option=""
export menuentry_id_option
Je voudrais proposer une petite amélioration à la méthode de recherche de ce fichier: utiliser awk
$ awk '/menuentry/ && /class/ {count++; print count-1"****"$0 }' /boot/grub/grub.cfg
0****menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-86df21bf-d95f-435c-9292-273bdbcba056' {
1**** menuentry 'Ubuntu, with Linux 3.19.0-26-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.19.0-26-generic-advanced-86df21bf-d95f-435c-9292-273bdbcba056' {
2**** menuentry 'Ubuntu, with Linux 3.19.0-26-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.19.0-26-generic-recovery-86df21bf-d95f-435c-9292-273bdbcba056' {
3**** menuentry 'Ubuntu, with Linux 3.13.0-62-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.13.0-62-generic-advanced-86df21bf-d95f-435c-9292-273bdbcba056' {
4**** menuentry 'Ubuntu, with Linux 3.13.0-62-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.13.0-62-generic-recovery-86df21bf-d95f-435c-9292-273bdbcba056' {
Avec la commande ci-dessous et sa sortie, vous pouvez voir le code awk
correspondre à la version réelle du système d'exploitation et vous donner le numéro que vous pourrez ensuite utiliser dans /etc/default/grub
fichier.
En plus de modifier le /etc/default/grub
fichier à la main, je suggère d'utiliser sed
. Dans la commande ci-dessous, remplacez X par le nombre approprié obtenu à partir de la commande awk ci-dessus:
Sudo sed -i 's/GRUB_DEFAULT=0/GRUB_DEFAULT=X/g' /etc/default/grub; Sudo update-grub
Aussi récemment que CentOS-6.6 grub.conf ressemblait, cela peut être modifié manuellement pour changer la sélection par défaut:
default=1
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
Étirement Debian:
Plutôt que de jouer avec les fichiers de configuration, créez un dossier dans /noot
(appelez-le comme vous voulez), laissez le noyau que vous voulez, ainsi que les fichiers de configuration et de système correspondants, dans /boot
et déplacez le reste dans ce nouveau dossier.
Courir update-grub
.
Vérifiez de nouveau le /boot
le dossier contenant votre version du noyau et les fichiers de configuration et système correspondants sont toujours là (au cas où vous auriez copié quelque chose que vous ne devriez pas avoir) et redémarrez.