Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 06/06/2023, à 15:09

mdxlp

[Résolu] Script de chaînage des grubs (grub2)

Bonjour,
Je suis actuellement en stage pour valider ma première année de BTS SIO et j'ai une mission particulière à effectuer pour un professeur de l'établissement.
L'objectif final du projet étant une interface multiboot présentant un grub et plusieurs partitions bootable en Legacy/UEFI. On peut capturer ou déployer des partitions sur un emplacement dédié grâce à un serveur FOG.
Je suis rendu à un point-clé du projet consistant à chaîner les grubs contenus sur les OS de mes partitions dans un autre grub indépendant qui permet de les gérer.
Mes faibles compétences sur ce qui touche à la distribution Linux ainsi que les informations aléatoires trouvées à ce sujet ne me permettent pas de réussir le chaînage.
Voici où j'en suis dans le chaînage :

Fichier /etc/grub.d/40_custom

menuentry 'Gpr1 Debian 11' {
  insmod chain
  insmod ext2
  set root=(hd0,2)
  chainloader (hd0,2)/boot/efi/EFI/debian/grubx64.efi
  boot
}
menuentry 'Gpr2 Linux Mint 21.1'{
  insmod chain
  insmod ext2
  set root=(hd0,3)
  chainloader (hd0,3)/boot/efi/EFI/mint/grubx64.efi
  boot
}
menuentry 'Gpr3 Ubuntu 22.04' {
  insmod chain
  insmod ext2
  set root=(hd0,4)
  chainloader (hd0,4)/boot/efi/EFI/ubuntu/grubx64.efi
  boot
}
menuentry 'Gpr4 Kali Rolling' {
  insmod chain
  insmod ext2
  set root=(hd0,5)
  chainloader (hd0,5)/boot/efi/EFI/kali/grubx64.efi
  boot
}

Les erreurs qui s'affichent dans le grub quand je veux exécuter ces lignes sont :

erreur : fichier "/boot/efi/EFI/xxxxx/grubx64.efi" non disponible.
erreur : le noyau doit d'abord être chargé.

Cette fois-ci je pensais vraiment avoir un script à peu près correct avec toutes les recherches effectuées mais ce n'est pas le cas et je me sens désemparé.
J'espère avoir été assez clair dans l'énonciation de mon propos. Si vous avez besoin d'autres informations pour m'aider à avancer, n'hésitez pas à me solliciter.

Dernière modification par mdxlp (Le 08/06/2023, à 08:28)

Hors ligne

#2 Le 06/06/2023, à 15:39

Nasman

Re : [Résolu] Script de chaînage des grubs (grub2)

Une chose à vérifier : l'appellation des partitions des disques durs qui sont sur un disque avec une table des partitions gpt (en général associés à un système efi). Il me semble que ce n'est hdx,y mais un truc comme gptx,y (à vérifier)


PC fixe sous Bionic 64 bits et portable avec Focal 64 bits

Hors ligne

#3 Le 06/06/2023, à 16:20

jplemoine

Re : [Résolu] Script de chaînage des grubs (grub2)

Je viens de regarder sur mon poste suite au poste de @Nasman
Il semblerait que la syntaxe à utiliser soit :

set root='hd0,gpt2'

(pour partition /dev/sda2)

Donc pour 'Gpr1 Debian 11'

set root=(hd0,2)
  chainloader (hd0,2)/boot/efi/EFI/debian/grubx64.efi

je testerais

set root=(hd0,gpt2)
  chainloader (hd0,gpt2)/boot/efi/EFI/debian/grubx64.efi

Sans aucune certitude.


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#4 Le 06/06/2023, à 16:22

jplemoine

Re : [Résolu] Script de chaînage des grubs (grub2)

Si ça continue à mettre une erreur, il faudrait modifier les lignes pour avoir des ' et/ou des parenthèses.
Ca fait 4 possibilités.


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#5 Le 06/06/2023, à 16:58

nany

Re : [Résolu] Script de chaînage des grubs (grub2)

Bonjour,



mdxlp a écrit :
erreur : fichier "/boot/efi/EFI/xxxxx/grubx64.efi" non disponible.

/boot/efi n’est qu’un point de montage, or il me semble que le montage (de la partition ESP) n’est pas encore effectif à ce moment.
Je pense qu’il vaudrait mieux taper dans la partition ESP directement :

chainloader ([PARTITION ESP])/EFI/xxxxx/grubx64.efi

Hors ligne

#6 Le 07/06/2023, à 08:11

mdxlp

Re : [Résolu] Script de chaînage des grubs (grub2)

Bonjour,
Tout d'abord, merci à tous pour vos réponses. J'ai essayé différentes combinaisons en modifiant mon script de chaînage et je fais maintenant face à une nouvelle erreur. Il est impossible pour moi de savoir si j'avance ou si je recule. Voici le contenu de mon fichier /etc/grub.d/40_custom :

menuentry 'Gpr1 Debian 11' {
  insmod chain
  insmod ext2
  set root=(hd0,gpt2)
  chainloader (/dev/nvme0n1p2)/EFI/debian/grubx64.efi
  boot
}
menuentry 'Gpr2 Linux Mint 21.1 Vera'{
  insmod chain
  insmod ext2
  set root=(hd0,gpt3)
  chainloader (/dev/nvme0n1p3)/EFI/mint/grubx64.efi
  boot
}
menuentry 'Gpr3 Ubuntu 22.04 LTS' {
  insmod chain
  insmod ext2
  set root=(hd0,gpt4)
  chainloader (/dev/nvme0n1p4)/EFI/ubuntu/grubx64.efi
  boot
}
menuentry 'Gpr4 Kali Rolling' {
  insmod chain
  insmod ext2
  set root=(hd0,gpt5)
  chainloader (/dev/nvme0n1p5)/EFI/kali/grubx64.efi
  boot
}

Et la nouvelle erreur associée à ce script :

erreur : aucun serveur n'est indiqué.
erreur : le noyau doit d'abord être chargé.

Pour ceux d'entre vous qui se poseraient la question, mes partitions sont bien nommées nvme0n1px et non sdx comme à l'accoutumée. Je pense que cela est lié à l'écrasage du disque avec Gparted ou au partitionnement automatique du logiciel Partclone qui se charge de restituer ou cloner les partitions lors de leur capture ou déploiement avec FOG.

root@partition6:~# sudo fdisk -l
Disque /dev/nvme0n1 : 953,87 GiB, 1024209543168 octets, 2000409264 secteurs
Modèle de disque : SAMSUNG MZVL21T0HCLR-00BL7
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : gpt
Identifiant de disque : E7053F86-E909-4259-B0F5-85E54267CF86

Périphérique        Début        Fin  Secteurs Taille Type
/dev/nvme0n1p1       2048    1050623   1048576   512M Système EFI
/dev/nvme0n1p2    1050624  400523263 399472640 190,5G Système de fichiers Linux
/dev/nvme0n1p3  799995904 1199468543 399472640 190,5G Système de fichiers Linux
/dev/nvme0n1p4  400523264  799995903 399472640 190,5G Système de fichiers Linux
/dev/nvme0n1p5 1199468544 1598941183 399472640 190,5G Système de fichiers Linux
/dev/nvme0n1p6 1598941184 1615325183  16384000   7,8G Système de fichiers Linux

Les entrées de la table de partitions ne sont pas dans l'ordre du disque.

Hors ligne

#7 Le 07/06/2023, à 08:46

jplemoine

Re : [Résolu] Script de chaînage des grubs (grub2)

Pour l'erreur, il faut prendre en compte la remarque de nany.

Pour le nom des disques (/dev/mve..) au lieu de /dev/sdx, cela vient du type de disque et/ou de la connectique. Je ne sais pas si tu y peut quelque chose mais il suffit d'adapter.
/dev/sda   --> /dev/nvme0n1
/dev/sda1 --> /dev/nvme0n1p1


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#8 Le 07/06/2023, à 11:02

nany

Re : [Résolu] Script de chaînage des grubs (grub2)

Bonjour,



Il semble établi que l’ESP soit (hd0,gpt1) donc, en rapport à mon message précédent, ce qui serait à tester est :

menuentry 'Gpr1 Debian 11' {
  insmod chain
  insmod ext2
  set root=(hd0,gpt1)
  chainloader (hd0,gpt1)/EFI/debian/grubx64.efi
  boot
}
menuentry 'Gpr2 Linux Mint 21.1 Vera'{
  insmod chain
  insmod ext2
  set root=(hd0,gpt1)
  chainloader (hd0,gpt1)/EFI/mint/grubx64.efi
  boot
}
menuentry 'Gpr3 Ubuntu 22.04 LTS' {
  insmod chain
  insmod ext2
  set root=(hd0,gpt1)
  chainloader (hd0,gpt1)/EFI/ubuntu/grubx64.efi
  boot
}
menuentry 'Gpr4 Kali Rolling' {
  insmod chain
  insmod ext2
  set root=(hd0,gpt1)
  chainloader (hd0,gpt1)/EFI/kali/grubx64.efi
  boot
}

Hors ligne

#9 Le 07/06/2023, à 14:38

geole

Re : [Résolu] Script de chaînage des grubs (grub2)

Bonjour.
Je pense que tu devras ajouter

insmod part_gpt

afin d'accéder aux partitions GPT

Je n'ai pas tout compris de ton projet.
Si l'ordinateur a déjà mis en route  avec un grub EFI, tu peux directement te brancher sur le grub non efi directement dans les partititions.  /Boot/grub
Si l'ordinateur a déja mis en route en LEGACY , ce que je soupçonne, il faut ajouter une option noefi afin que les O.S. installés en EFI ne s'en servent pas vu que le bios EFI n'est pas initialisé.

Dernière modification par geole (Le 07/06/2023, à 14:39)


Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit,  utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir  https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

Hors ligne

#10 Le 08/06/2023, à 08:26

mdxlp

Re : [Résolu] Script de chaînage des grubs (grub2)

Bonjour,
Merci à tous pour votre aide et vos conseils. Le problème est résolu grâce à la solution de nany et je peux maintenant booter le grub de l'OS désiré avec ce script de chaînage qui fonctionne dans mon cas :

menuentry 'Gpr1 Debian 11' {
  insmod chain
  insmod part_gpt
  insmod ext2
  set root=(hd0,gpt1)
  chainloader (hd0,gpt1)/EFI/debian/grubx64.efi
  boot
}
menuentry 'Gpr2 Linux Mint 21.1 Vera'{
  insmod chain
  insmod part_gpt
  insmod ext2
  set root=(hd0,gpt1)
  chainloader (hd0,gpt1)/EFI/mint/grubx64.efi
  boot
}
menuentry 'Gpr3 Ubuntu 22.04 LTS' {
  insmod chain
  insmod part_gpt
  insmod ext2
  set root=(hd0,gpt1)
  chainloader (hd0,gpt1)/EFI/ubuntu/grubx64.efi
  boot
}
menuentry 'Gpr4 Kali Rolling' {
  insmod chain
  insmod part_gpt
  insmod ext2
  set root=(hd0,gpt1)
  chainloader (hd0,gpt1)/EFI/kali/grubx64.efi
  boot
}

J'espère que la résolution de mon problème pourra en aider d'autres malgré le fait que j'étais sur un cas assez particulier.

Hors ligne

#11 Le 08/06/2023, à 08:43

geole

Re : [Résolu] Script de chaînage des grubs (grub2)

Bonjour.
Merci de ton retour. Comme j'avais noté que c'était un exercice....
Mais dans la réalité, on ne se complique pas la vie.
   Soit on installe refind

sudo apt install refind

Soit on demande à grub de générer

sudo update-grub

Soit on utilise le bios EFI pour faire le choix.

Dernière modification par geole (Le 08/06/2023, à 08:44)


Les grilles de l'installateur https://doc.ubuntu-fr.org/tutoriel/inst … _subiquity
"gedit admin:///etc/fstab" est proscrit,  utilisez "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY xdg-open /etc/fstab" Voir  https://doc.ubuntu-fr.org/gedit
Les partitions EXT4 des disques externes => https://forum.ubuntu-fr.org/viewtopic.p … #p22697248

Hors ligne

#12 Le 08/06/2023, à 09:01

jplemoine

Re : [Résolu] Script de chaînage des grubs (grub2)

Une solution est peut être de mettre un OS sur une machine physique (un peu costaude) et les autres OS en VM (1VM / OS).
En plus en kvm au lieu de virtualbox, tu peux faire des VM arm sur une machine physique en amd64...


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne