Installation echouée " installation du systeme"

Tags: #<Tag:0x00007fb41aa19250>

Non, le menu de GRUB n’affiche pas les entrées EFI mais seulement ses propres entrées définies dans grub.cfg créé par update-grub.

C’est précisément cela, les entrées d’amorçage EFI. grub-install est censé en créer une ou la mettre à jour lors de l’installation. Tu peux créer celle de Debian en exécutant grub-install depuis Debian, mais cela risque de modifier l’ordre de priorité de l’amorçage UEFI et mettre le GRUB de Debian par défaut.

Non, pas forcément. Je préfère que chaque OS utilise une partition EFI située sur le même disque que lui-même pour ne pas dépendre du disque d’un autre système, mais si plusieurs OS sont installés sur le même disque ils peuvent très bien utiliser la même partition EFI.

Tu l’as ajoutée après l’installation ? Cela explique pourquoi le chargeur GRUB n’a pas pu être mis en place lors de l’installation.

L’installation d’un nouveau noyau aurait du regénérer un fichier /boot/grub/grub.cfg. Par contre cela ne réinstalle pas le chargeur GRUB lui-même.

Même pas besoin de déplacer, ajouter ou supprimer un disque pour avoir un problème : l’ordre de détection des disques n’est pas garanti stable et le disque peut spontanément être reconnu comme sdb, sdc… au lieu de sda à chaque démarrage.
D’autre part les paramètres de la ligne de commande du noyau définis dans /etc/defaut/grub ne sont pas pris en compte. Ceux par défaut « ro quiet » ne sont pas indispensables mais parfois un paramètre spécifique peut être nécessaire pour contourner un bug.

Oui. Ainsi il n’est pas nécessaire d’exécuter update-grub dans l’Ubuntu principal pour prendre en compte une modification de noyau dans un autre OS.

Donc si je comprends bien , le fait d’ ajouter cette section dans le ubuntu " principal " dis qu il faut aller lire le fichier /boot/grub/grub.cfg sur la partition ayant pour UUID eb4da8d1-c3ea-4788-9692-e9e23690066e et de la passer root , qui lui est evidemment mis a jour par debian a chaque mise a jour de noyau ?

a quoi faut il faire attention ou modifier si je veux proceder de la meme maniere pour les autres OS present sur mon systeme , dans :

menuentry 'Debian GNU/Linux' --class gnu-linux --class gnu --class os --id 'debian' {
        insmod part_gpt
        insmod part_msdos
        insmod ext2
        search --no-floppy --fs-uuid --set=root eb4da8d1-c3ea-4788-9692-e9e23690066e
        configfile /boot/grub/grub.cfg
}

Oui, sauf qu’il n’y a pas de « passer root ». « root » est simplement le nom de la variable d’environnement de GRUB qui contient le périphérique (disque, partition, volume logique…) par défaut. On pourrait aussi bien utiliser une variable quelconque :

search --no-floppy --fs-uuid --set=debian eb4da8d1-c3ea-4788-9692-e9e23690066e
        configfile ($debian)/boot/grub/grub.cfg

Il faut s’assurer de l’existence et de la localisation précise du fichier grub.cfg, et adapter l’UUID et le chemin du fichier en conséquence. Par exemple si l’OS a une partition /boot séparée il faudra spécifier l’UUID de cette partition et ne pas mettre /boot dans le chemin de grub.cfg. On peut s’inspirer de l’entrée d’un noyau de cet OS et remplacer les lignes linux et initrd par une ligne configfile. C’est d’ailleurs ce que j’ai fait sur ma machine.

OK , alors :
j ’ ai remis le bit d’ execution pour tous les fichiers des OS " secondaires " du fichier /etc/grub.d/30_os-prober .
j ’ ai edité tous les fichiers /etc/default/grub des OS " secondaires " et ajouter les lignes suivantes :

# uncomment line below to disable search others OS , useful for multi-OS EFI 
GRUB_DISABLE_OS_PROBER=true

j ’ ai edité le fichier /etc/grub.d/40_custom de l ’ OS " principal " de la sorte :

iznobe@iznobe-PC:~$ cat /etc/grub.d/40_custom
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries.  Simply type the
# menu entries you want to add after this comment.  Be careful not to change
# the 'exec tail' line above.
menuentry 'Debian GNU/Linux' --class gnu-linux --class gnu --class os --id 'debian' {
        insmod part_gpt
        insmod part_msdos
        insmod ext2
        search --no-floppy --fs-uuid --set=root eb4da8d1-c3ea-4788-9692-e9e23690066e
        configfile /boot/grub/grub.cfg
}

menuentry 'Linux Mint' --class linuxmint --class gnu-linux --class gnu --class os --id 'linux-mint' {
        insmod part_gpt
        insmod part_msdos
        insmod ext2
        search --no-floppy --fs-uuid --set=root eb18366b-2ac9-4a7e-8f93-ba2caa30e90e
        configfile /boot/grub/grub.cfg
}

menuentry 'Ubuntu 18.04.6 LTS' --class ubuntu --class gnu-linux --class gnu --class os --id 'Ubuntu 18' {
        insmod part_gpt
        insmod part_msdos
        insmod ext2
        search --no-floppy --fs-uuid --set=root 06bc0f51-50e8-4ed4-8090-903acdb7df3f
        configfile /boot/grub/grub.cfg
}

menuentry 'Ubuntu 21.04' --class ubuntu --class gnu-linux --class gnu --class os --id 'Ubuntu 21' {
        insmod part_gpt
        insmod part_msdos
        insmod ext2
        search --no-floppy --fs-uuid --set=root 89f71135-b459-4c74-bfa3-e9d27df4369d
        configfile /boot/grub/grub.cfg
}
iznobe@iznobe-PC:~$

Puis , j ’ ai finalement passé la commande sudo update-grub a partir de l ’ OS " principal "

cela vous semble correct ?
je vais tester les entrées une a une , ca m’ etonnerait que je n ’ ai pas fait de betises des la 1ere tentative .

EDIT : il faut redemarrer dans chaque OS secondaire et faire un sudo update-grub pour mettre a jour la bonne config seule et prendre en compte l ’ option GRUB_DISABLE_OS_PROBER=true.
il faut aussi dire a l’ OS " principal " de ne pas faire de recherche pour les autres OS afin d’ epurer le menu GRUB principal , mais ca inhibe la prise en charge du fichier /etc/grub.d/40_custom

y a t il un moyen de prendre en compte ce fichier sans pour autant se retrouver avec des entrées en double du coup ?

A première vue oui. Il n’y a plus qu’à tester.

Je ne vois pas pourquoi ce serait nécessaire. L’ancien grub.cfg avait été produit avec le script 30_os_prober non exécutable, le résultat ne devrait pas être différent avec GRUB_DISABLE_OS_PROBER=true.

Sur ma machine GRUB_DISABLE_OS_PROBER=true n’inhibe pas l’inclusion du contenu de /etc/grub.d/40_custom et je ne vois aucune raison que ce soit le cas, les deux n’ont rien à voir.

ce sont les sous grub qui n ’ etaient pas bon , je ne sais pas pourquoi , mais apres avoir passé la commande sudo update-grub dans chaque OS " secondaire " c ’ est rentré dans l’ordre .
comme si il y avait une ancienne config non desirée rester quelquepart .

Par contre si je remet l’ option GRUB_DISABLE_OS_PROBER=true dans le fichier /etc/default/grub j ’ ai comme un grub , en fait y a le fond d ’ ecran uni , mais aucun texte , puis ca revient sur le logo de boot de la carte mere puis ca demarre l’ os principal .

il y a peut etre un truc qui ne va pas dans mon fichier :

iznobe@iznobe-PC:~$ cat /etc/default/grub
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
# uncomment line below to disable search others OS , useful for multi-OS EFI 
GRUB_DISABLE_OS_PROBER=true

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true

# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"

# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
iznobe@iznobe-PC:~$

ou bien j ’ ai fait une erreur dans mon fichier /etc/grub.d/40_custom ?

Qu’est-ce qui n’allait pas ?

Dans l’Ubuntu principal ?
Pas de texte du tout, même pas les entrées de menu de l’Ubuntu principal ?
Ou bien tu veux dire quand tu sélectionnes une des entrées ajoutées par 40_custom ?

Quel OS principal ?

il y a avait des entrées de debian dans le sous - menu grub de Linux-mint par exemple .
Alors que maintenant , chaque sous menu n ’ offre des selections uniquement pour l ’ OS selectionné .

exactement ca , oui . le fond d ’ ecran gris pale d ’ ubuntu impish , l ’ OS que j’ ai designé en principal auparavant et dans lequel j ’ ai ajouté les entrées au fichier 40_custom .

Mais bien sur comme aucun menu n’ apparait , impossible de selectionner quoi que ce soit .

celui que j ’ ai moimeme designé comme " principal " : ubuntu 21.10 pour la detection des grubs et les modifiactions des entrées .

EDIT : a priori il suffit de commenter la ligne:
#GRUB_TIMEOUT_STYLE=hidden dans le fichier /etc/default/grub , de sauvegarder et de passer sudo update-grub pour voir apparaître le menu complet apres redemarrage .

Un grand MERCI pour votre temps , votre aide , et vos explications claires :wink:

Maintenant que tu en parles, il me semble qu’Ubuntu a la détestable habitude d’afficher le menu de GRUB seulement s’il y a d’autres OS (à condition qu’ils soient ajoutés par os-prober apparemment). C’est peut-être plus « esthétique » mais c’est très pénible quand on a besoin de démarrer en mode dépannage ou avec un noyau antérieur (et apparemment pour le cas particulier où les OS sont ajoutés avec 40_custom) . Sur la machine où j’ai mis ce système en place l’OS principal est Debian, qui n’a pas cet inconvénient.

c ’ est effectivement ca , j ’ ai du aussi commenter la meme ligne dans les fichiers des OS secondaires ubuntu , car sinon j ’ avais le meme resultat avec les sous-menu des autres ubuntu …
meme la touche echapp pour revenir au menu principal reste sans effet .

Je mentionne un autre avantage de cette façon d’ajouter les OS au menu de GRUB : l’import par os-prober ne fonctionne pas toujours correctement avec certains distributions. J’ai deux exemples en mémoire :

  • Fedora qui utilise dans son grub.cfg la commande « linuxefi », qui n’est pas prise en compte par os-prober (du moins celui de Debian), pour charger le noyau au lieu de « linux ».
  • Arch Linux dont la commande « initrd » dans grub.cfg a deux fichiers en argument, le premier contenant les microcodes pour le CPU et le second l’initramfs classique, qui n’est pas géré correctement par os-prober (du moins celui de Debian) qui ne prend en compte que le premier.

En chargeant directement le fichier grub.cfg de la distribution, on évite ces problèmes.

Bonjour , je me permet de faire suite dans ce fil , a cause d’ un oubli .
j ’ utilise tellement windows , que je viens de me rendre compte qu ’ en fait suite aux changements , je n’ ai pas cree de menu personalisé pour celui-ci …

une idée de ce qu il faut mettre pour que j ’ ai aussi une entrée dans le grub qui s ’ affiche ?

Puisqu’il s’agit d’un amorçage UEFI, il faut faire un chainloader du chargeur de Windows dans la partition EFI avec quelque chose comme

menuentry "Windows" {
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=root C071-9050 # UUID de la partition EFI
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}

Pour ne pas se tromper, on peut commenter temporairement la désaction d’os-prober dans /etc/default/grub et générer un fichier dans lequel on pourra piocher la menuentry de Windows :

grub-mkconfig > fichier

Bonjour, j ’ ai bien fais rentrer la sortie de grub-mkconfig dans fichier.test dans mon /home .

Apres verification des UUIDs et chemins , il ne m’ a paru necessaire de faire des changements dans le bloc de commande que vous avez donné .

j ’ ai donc bien ajouté la section telle quelle au fichier 40_custom , et apres un update-grub et un reboot ca marche impec :smiley:

Merci encore .