Ordre d'amorçage changé

bonjour,
ayant deux OS , ubuntu et debian , il arrive , rarement mais ça arrive , que suite à une mise à jour l’ordre normal d’amorçage change et je me retrouve sur ubuntu car je laisse souvent le programme se dérouler automatiquement sans vérifier. Je redémarre alors et sélectionne debian puis je réinstalle grub-efi .
« papy-tux » me propose une méthode (valable pour debian ) plus rapide et je voudrais votre avis avant de l’utiliser à partir de « ubuntu » au cas où : https://papy-tux.legtux.org/doc1251/index.html

  1. situation actuelle (normale) de mon grub-efi :
    sudo efibootmgr
    BootCurrent: 0001
    Timeout: 0 seconds
    BootOrder: 0001,0000,2001,2002,2003
    Boot0000* ubuntu
    Boot0001* debian

  2. solution proposée à utiliser directement à partir de « ubuntu » au cas où …
    $ sudo efibootmgr -O
    $ sudo efibootmgr -o 1,0 | grep BootOrder

Bonjour,
Normal, car à chaque fois que tu fait une mise à jour qui touche le noyau, il refait un grub-update.
Et donc il lance os-prober, et par défaut il utilise le système courant comme le système par défaut.

Il suffit d’aller dans le grub manager, et de réarranger l’ordre des démarrage. pas de fichier à manipuler.
je ne connais plus le nom du paquet par contre.
Je m’en sert sur mon PC qui a 4 OS.

Correction, j’ai trouvé: c’est grub-customizer le paquet :slight_smile:

je ne connaissais pas ce paquet et je viens de l’installer . Si j’atterris sur ubuntu je pourrai aussi l’utiliser .
Ok … merci .

Est-ce que tu parles de l’ordre de démarrage UEFI, de l’odre des systèmes dans le menu de GRUB ou du système sélectionné par défaut dans le menu de GRUB ?

L’ordre de démarrage UEFI détermine si c’est le GRUB de Debian ou celui d’Ubuntu qui est lancé, et affiche le menu qui va avec. La solution que tu évoques avec efibootmgr modifie cet ordre. Il peut aussi être modifié par grub-install qui est exécuté lors d’une mise à jour des paquets grub* pour installer la nouvelle version du chargeur d’amorçage.

Par défaut, l’ordre des systèmes dans le menu de GRUB dépend à quel système il appartient : si c’est le GRUB de Debian, alors Debian est en premier et les autre systèmes suivent. Si c’est celui d’Ubuntu, alors Ubuntu est en premier et les autres systèmes suivent. On ne peut changer cela qu’en renommant les scripts présents dans le répertoire /etc/grub.d/ pour modifier l’ordre d’exécution des scripts.

Le système sélectionné par défaut dans le menu de GRUB est déterminé par la valeur de la variable GRUB_DEFAULT dans le fichier /etc/default/grub lorsque le fichier de configuration de GRUB a été généré en exécutant update-grub. La valeur par défaut est GRUB_DEFAULT=0, qui désigne la première entrée du menu. Pour sélectionner le second système (donc la troisème entrée de menu, sachant qu’il y a deux entrées par système), il faut spécifier GRUB_DEFAULT=2.

Loin de moi l’intention de dénigrer grub-customizer, mais par le passé j’ai eu des échos négatifs disant que ça avait perturbé les scripts qui génèrent le fichier de configuration de GRUB. Ceci dit ça date un peu, donc il y a peut-être eu des progrès.

Sur mon Cinnamon, c’est ce que grub-customizer a fait.

Oui ca peut encore arriver quand on utilise les focntions/paramètre/options un peu plus exotique.
mais pour l’ordre du menu, ça marche assez bien.

normalement , sur mon écran de sélection du système qui démarre j’ai debian en 1er et ubuntu ensuite , mais après certaines mises à jour ubuntu apparaît en 1er et c’est à ce moment que je me retrouve sur ubuntu n’ayant pas assisté à la phase de démarrage pour sélectionner le bon OS . D’où le redémarrage contrôlé ( où je vois bien ubuntu en 1er , que je désélectionne alors ) puis je réinstalle grub-efi à partir de debian et tout rentre dans l’ordre jusqu’à une en général assez lointaine prochaine fois .
N’y aurait-il pas moyen de changer l’ordre une bonne fois pour toutes ?
note : sur mon SSD le 1er système installé a été ubuntu ( pour , je pensais , maximiser les chances d’une bonne prise en compte de mon matériel qui était alors très récent et donc avoir un système opérationnel rapidement ).

Quand tu fait une mise à jour il y a reconfiguration du grub. et le système en cours considère toujours que c’est lui le premier.

Il faudrait que fasse en sorte que Ubuntu installe grub sur sa propre partition, et que Debian installe son grub sur la partition de démarrage par defaut.

Et gros si tu as:
/dev/sda:

  • /dev/sda1 = debian
  • /dev/sda2 = ubuntu

grub debian => /dev/sda
grub ubuntu => /dev/sda2

mais à voir si ca marche avec l’EFI

justement c’est ça que je ne pige pas car lors de la mise à jour le système en cours est toujours debian et pourtant je me retrouve parfois avec ubuntu en 1er .
une remarque : j’ai remarqué que ce changement de priorité n’est pas forcément lié à une mise à jour du noyau

en général le changement priorité du démarrage est causé pas une mises à jour de grub.

pour revenir à ton ordre de démarrage préférer, tu démarres avec ton OS désirer,
en console administrateur, tu fais ces trois commande.

# os-prober
# update-grub
# grub-install /dev/sda

pour sda pour le premier disque
sdb pour le second, etc …

  1. si j’en crois wiki ubuntu-fr os-prober devrait détecter tous les OS sur mon unique disque sda : " os-prober va chercher tous vos systèmes d’exploitation ". Or debian n’apparaît pas et j’obtiens
    sudo os-prober
    [sudo] Mot de passe de mm :
    /dev/sda2:Ubuntu 18.04.3 LTS (18.04):Ubuntu:linux
  • je viens de lire ceci : " os-prober is a command that lists other operating systems " sur ask-ubuntu . Donc pas d’anomalie ?
  1. grub est déjà installé sur sda
    sudo fdisk -l
    Disque /dev/sda : 223,6 GiB, 240057409536 octets, 468862128 secteurs

    /dev/sda1 2048 585727 583680 285M Système EFI

J’ai quatre Debian et lorsque je ne vérifie pas que grub est dans la mise à jour ou parfois j’aime plus une que l’autre, je fais cet commande.

tu démarres Ubuntu en console
sudo os-prober
sudo update-grub
sudo grub-install /dev/sda
et redémarre…
Ubuntu devrait être en premier

Quel écran de sélection ? Le menu d’amorçage UEFI (du « BIOS ») ou le menu de GRUB ? Tu n’as toujours pas répondu clairement à la question.

Le point important n’est pas qu’Ubuntu est en premier mais qu’il est sélectionné par défaut. Ce n’est pas la même chose.

On en revient à la question de départ : ça dépend de quel ordre tu parles.

Non applicable à l’amorçage UEFI. GRUB s’installe dans la partition EFI montée sur /boot/efi, pas le choix.

Tu veux dire qu’Ubuntu n’est jamais mis à jour ?

Même remarque que pour @Zargos, ceci n’est pas applicable avec l’amorçage UEFI.

le 1er écran qui apparaît avec les 2 systèmes listés et qui permet éventuellement de choisir celui qu’on veut utiliser . Normalement debian est sur la 1ère ligne et donc sélectionné automatiquement mais parfois c’est ubuntu qui se trouve sur la 1ère ligne et qui démarre automatiquement .

en voilà une image ( ce n’est pas le mien ) : https://www.malekal.com/wp-content/uploads/Demarrage-Debian-en-Dual-boot-Windows-10.jpg

exactement , ubuntu a été une phase transitoire et je le garde en secours au cas où … est-ce utile ou pas , je ne sais pas trop en fait … effet psychologique peut-être .

Ta question : Ordre d’amorçage changé
tu choisies de démarrer avec ton OS Debian ou Ubuntu que tu veux en premier et les trois commandes avec un redémarrage…

pour moi la discutions est terminer…

Cette description n’est pas assez précise, elle peut s’appliquer aussi bien au menu de boot UEFI qu’au menu de GRUB. Essaie de te mettre à la place des lecteurs.

Là on voit bien qu’il s’agit du menu de GRUB. C’est écrit dessus, comme le Port-Salut.

Ça veut dire que ce n’est plus le même GRUB, c’est celui d’Ubuntu qui a démarré et non celui de Debian. La cause la plus courante est qu’Ubuntu a réinstallé son GRUB et l’a réenregistré dans les variables de boot EFI, ce qui a pour effet habituel de le mettre en première position dans l’ordre de boot EFI. Mais si cela se produit après une mise à jour de Debian, la cause est forcément différente et liée à une anomalie lors du réenregistrement du GRUB de Debian dans les variabes de boot EFI. Je vois plusieurs explications possibles :

  1. Le réenregistrement a mal fonctionné et supprimé l’entrée de boot EFI de Debian (ou sa présence dans l’ordre de boot), ne laissant que celle d’Ubuntu.

  2. Le réenregistrement a mal fonctionné et supprimé toutes les entrées de boot EFI (ou leur présence dans l’ordre de boot), ne laissant comme option que le chargeur d’amorçage de secours qui pourrait avoir été installé par Ubuntu (j’ignore si Ubuntu installe un chargeur de secours comme Windows le fait).

  3. Le réenregistrement a altéré l’ordre de boot EFI et mis Ubuntu en premier devant Debian.

Pour vérifier ces hypothèses, il aurait fallu examiner les variables de boot EFI après le démarrage avec la commande efibootmgr.

Pour éviter que cela se produise, il faudrait empêcher que la réinstallation de GRUB le réenregistre dans les variables de boot EFI. Mais le seul moyen d’y parvenir que je connais consiste à désinstaller le paquet grub-efi-amd64 pour empêcher la réinstallalation automatique de GRUB lors de la mise à jour des paquets grub*, et à réinstaller GRUB manuellement sans le réenregistrer avec la commande suivante (mais il faut y penser) :

grub-install --no-nvram --force-extra-removable

L’option --no-nvram évite de mettre à jour les variables de boot EFI et l’option --force-extra-removable installe une copie de GRUB en tant que chargeur de secours, qui peut fonctionner en l’absence d’entrée de boot EFI.

je vais laisser grub tel quel et la prochaine fois que je me retrouve sur ubuntu je contrôlerai les variables de boot EFI à partir de ubuntu afin d’en savoir un peu plus .

tant que je serai sur ubuntu y-a-t-il un moyen de savoir s’il a installé un chargeur de secours ?

en tout cas merci pour ces explications .

Tu peux déjà le faire maintenant depuis Debian pour avoir un point de comparaison avant/après. Et pas besoin de laisser Ubuntu démarrer, si tu vois que c’est le GRUB d’Ubuntu tu peux directement sélectionner Debian.

Tu peux deja vérifier le contenu de la partition EFI depuis Debian avec

find /boot/efi

Le chargeur de secours serait dans /boot/efi/EFI/Boot, à condition qu’Ubuntu et Debian utilisent la même partition EFI.

c’est bien le cas puisqu’il n’y a qu’une seule partition EFI sur sda1 . Voici le résultat ( désolé pour la présentation du texte dans un terminal mais je ne sais pas quelles balises utiliser avec ce nouveau système ) :

mm@ssd1:~$ sudo find /boot/efi
[sudo] Mot de passe de mm : 
/boot/efi
/boot/efi/EFI
/boot/efi/EFI/debian
/boot/efi/EFI/debian/grubx64.efi
/boot/efi/EFI/debian/shimx64.efi
/boot/efi/EFI/debian/mmx64.efi
/boot/efi/EFI/debian/fbx64.efi
/boot/efi/EFI/debian/BOOTX64.CSV
/boot/efi/EFI/debian/grub.cfg
/boot/efi/EFI/Boot
/boot/efi/EFI/Boot/fbx64.efi
/boot/efi/EFI/Boot/bootx64.efi
/boot/efi/EFI/ubuntu
/boot/efi/EFI/ubuntu/grubx64.efi
/boot/efi/EFI/ubuntu/shimx64.efi
/boot/efi/EFI/ubuntu/mmx64.efi
/boot/efi/EFI/ubuntu/BOOTX64.CSV
/boot/efi/EFI/ubuntu/grub.cfg
/boot/efi/EFI/ubuntu/fw
/boot/efi/EFI/ubuntu/fwupx64.efi

Il y a bien un chargeur de secours. Par contre ce n’est pas évident de voir s’il a été installé par Debian ou Ubuntu. Peut-être en comparant les dates des fichiers avec ceux dans /boot/efi/EFI/debian et /boot/efi/EFI/ubuntu.

Et la sortie de efibootmgr ?

sudo efibootmgr
[sudo] Mot de passe de mm : 
BootCurrent: 0001
Timeout: 0 seconds
BootOrder: 0001,0000,2001,2002,2003
Boot0000* ubuntu
Boot0001* debian
Boot2001* EFI USB Device
Boot2002* EFI DVD/CDROM
Boot2003* EFI Network