clé usb dans grub

bonjour.

Ma clé usb est partitionnée et formatée en ext4:

[quote]Disque /dev/sdg : 14,7 GiB, 15728640000 octets, 30720000 secteurs
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 : dos
Identifiant de disque : 0x34986317

Périphérique Amorçage Début Fin Secteurs Taille Id Type
/dev/sdg1 2048 30719999 30717952 14,7G 83 Linux
[/quote]

Ma partition debian stretch est sur sda5,dans grub le nom de sda5 est (hd0,msdos5)

ma partition jessie est sur sdb5,dans grub le nom de sdb5 est (hd1,msdos5)

comment la partition sdg1 de ma clé usb doit elle s’écrire dans grub? (hd?,msdos1) quoi mettre à la place de “?”

j’ai besoin de ce renseignement pour écrire dans 40_custom

Déjà, cela suppose que le BIOS gère la clé USB en tant que périphérique de stockage, ce qui n’est pas systématique. Certains BIOS ne gèrent une clé USB que si l’amorçage s’est fait avec celle-ci (qui sera donc hd0).

Dans le menu de GRUB, appuie sur la touche ‘c’ pour entrer dans le shell de GRUB et tape la commande [mono]ls[/mono]. Cela affichera tous les volumes gérés par le BIOS et GRUB (disques, partitions, ensembles RAID, volumes logiques). A partir du nombre de partitions de chaque disque, tu pourras reconnaître ta clé si elle est présente. Si elle n’y est pas, c’est mort.

Mais comme dans Linux, il est recommandé d’utiliser dans GRUB des identifiants de volumes (UUID) persistants plutôt que des noms de périphériques. L’UUID de la partition ext4 de la clé est visible depuis le système Linux avec la commande [mono]blkid[/mono]. Regarde la structure du fichier /boot/grub/grub.cfg pour voir comment utiliser cet UUID afin d’identifier la partition.

merci Pascal,j’ai fait la commande “ls” dans grub et ma clé est absente,donc pas de boot possible depuis une clé usb,fin des opérations.Je “boote” déjà quelques isos depuis grub avec les isos installées sur hda ou hdb,je voulais essayer depuis l’usb mais bon ça ne marchera pas.Ma prochaine carte mère sera plus moderne pour booter sur usb.

Tu m’as mal compris.
Le résultat de [mono]ls[/mono] dans le shell du GRUB installé sur un disque dur ne montre que les périphériques qui sont utilisables par ce même GRUB lancé à partir d’un disque dur. Cela n’est pas lié à la “modernité” de la carte mère et ne présume pas de la possibilité du BIOS de booter à partir d’une clé USB. N’importe quel BIOS sorti après 2003 (voire avant) devrait en être capable. Dans ce cas, si tu veux booter à partir de la clé USB, il te faut installer un chargeur d’amorçage sur celle-ci (GRUB, syslinux/extlinux…).

et comment je fais ça?je peux chrooter ma clé et installer grub dessus,et aprés comment je fais ,j’installe une iso bootable dessus?

Je précise les choses:

-actuellement le chargeur de boot grub est installé sur hda et boot/grub/grub.cfg qui gouverne est installé sur la partition sdb5 qui contient jessie/stable,mon fichier 40_custom est bien sûr lui aussi sur sdb5,ce que je voudrais faire c’est modifier ce fichier 40_custom pour booter sur une iso écrite sur la clé usb;je ne veux en aucun cas déménager mon grub,il doit rester sur hda tel que je viens de le décrire.

Mon fichier 40_custom:

[code]#!/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.

START /etc/grub.d/40_custom

menuentry “Clonezilla” {
set root=“hd1,msdos2"
set isofile=”/clonezilla.iso"
loopback loop (hd1,msdos2)$isofile
linux (loop)/live/vmlinuz boot=live live-config nolocales edd=on nomodeset ocs_live_run=“ocs-live-general” ocs_live_extra_param="" ocs_live_keymap="" ocs_live_batch=“no” ocs_lang="" vga=788 ip=frommedia nosplash toram=filesystem.squashfs findiso=$isofile
initrd (loop)/live/initrd.img
}

menuentry “knoppix7.2” {
set root=“hd1,msdos2"
set iso_path=”/knoppix7.2.iso"
loopback loop (hd1,msdos2)$iso_path
linux (loop)/boot/isolinux/linux knoppix fromhd=/dev/sdb2 lang=fr screen=1920x1080 tz=Europe/Paris
initrd (loop)/boot/isolinux/minirt.gz
}

menuentry “Gparted live” {
set root=“hd1,msdos2"
set isofile=”/gparted-live-686.iso"
loopback loop (hd1,2)$isofile
linux (loop)/live/vmlinuz boot=live config union=aufs noswap noprompt vga=788 ip=frommedia toram=filesystem.squashfs findiso=$isofile
initrd (loop)/live/initrd.img
}

#menuentry “handylinux” {
#set isofile="/opt/Iso/handy686.iso"
#loopback loop (hd1,msdos5)$isofile
#linux (loop)/live/vmlinuz boot=live config quiet splash toram=filesystem.squashfs findiso=$isofile noswap keyboard-#layouts=fr locales=fr-FR.UTF-8 lang=fr
#initrd (loop)/live/initrd.img
#}

menuentry “knoppix7.2” {
set root=“hd1,msdos2"
set iso_path=”/knoppix7.2.iso"
loopback loop (hd1,msdos2)$iso_path
linux (loop)/boot/isolinux/linux knoppix fromhd=/dev/sdg1 lang=fr screen=1920x1080 tz=Europe/Paris
initrd (loop)/boot/isolinux/minirt.gz
}

END /etc/grub.d/40_custom

[/code]

tout ça fonctionne.

Je n’ai pas de solution toute faite mais quelques pistes à explorer.

Tu peux installer le chargeur de GRUB sur la clé USB avec la commande suivante, en supposant que /dev/sdg est la clé USB, sa partition /dev/sdg1 est montée sur /media/sdg1 et contient un répertoire boot.

En bootant depuis la clé, le BIOS permettra à GRUB d’accéder à la fois à la clé USB et aux disques internes. Attention : la clé sera (hd0), les disques seront (hd1) et suivants. D’où l’importance d’utiliser les UUID ou autres identifiants persistants.

Pour la suite, je peux imaginer trois approches différentes à mettre en oeuvre dans le grub.cfg de la clé USB pour amorcer une ISO (ou autre chose) sur la clé USB :
a) chaîner le GRUB des disques avec [mono]chainloader[/mono] du disque sda (pas possible pour GRUB d’identifier un disque par UUID, donc il faut que son nom BIOS ne change pas) ou [mono]multiboot[/mono] du fichier core.img de sdb5 (identification de la partition par son UUID possible) ;
b) charger le grub.cfg de sdb5 avec [mono]configfile[/mono] ;
c) écrire un fichier grub.cfg sur la clé avec juste de quoi amorcer l’image ISO.

Dans les approches a) et b), le paragraphe pour amorcer l’image ISO doit être inclus dans le grub.cfg du disque, via 40_custom + update-grub.

oui mais alors il faudra que la clé soit toujours branchée pour pouvoir démarrer si grub n’est plus sur hda?Ca revient à déménager le chargeur de boot de sda vers sdg?

Non. Tu peux installer autant de chargeurs que tu veux sur autant de disques (ou assimilés) que tu veux.

J’ai le temps d’approfondir un peu.
Concernant l’installation multiple de chargeurs GRUB, il y a deux possibilités :

a) Chaque chargeur GRUB a son propre répertoire DIR/grub contenant grub.cfg, les modules, etc. Par défaut DIR=/boot, peut être spécifié avec l’option [mono]–boot-directory=DIR[/mono] de grub-install.
Avantage : chaque chargeur peut être totalement indépendant et autonome, si le répertoire se trouve sur une partition contenue dans le périphérique d’installation.

b) Tous les chargeurs partagent le même répertoire /boot/grub et donc le même fichier de configuration /boot/grub/grub.cfg. Dans ce cas l’amorçage depuis n’importe lequel des périphériques sur lesquels le chargeur GRUB est installé affichera le même menu. Par contre le nommage des périphériques changera, (hd0) désignant toujours le périphérique d’amorçage. Mais cela ne devrait pas être gênant pour la partie générée automatiquement par update-grub, qui utilise les UUID par défaut.
Note : cela peut ne pas fonctionner si grub-install refuse d’installer le chargeur sans l’option [mono]–force[/mono] à cause de l’utilisation des listes de blocs sur au moins un des périphériques.
Avantage : un seul fichier de configuration.
Inconvénient : le chargeur installé sur la clé USB ne fonctionnera pas sur une autre machine puisqu’il est lié au répertoire /boot/grub que se trouve sur un des disques internes.

Pour la suite je vais considérer l’option a).
Prenons une clé USB vue comme /dev/sdg, contenant une partition /dev/sdg1 contenant un système de fichiers de type quelconque lisible par GRUB (FAT, ext4…). On la monte sur /mnt.

On créé un répertoire “grub” à la racine de la clé.

On installe le chargeur GRUB sur la clé.

Selon la façon dont la clé est partitionnée, il peut être nécessaire d’ajouter l’option --force s’il n’y a pas d’espace suffisant pour “l’embarquage” de la core image.

Pour finir on crée un fichier de configuration /mnt/grub/grub.cfg. Pour amorcer une image ISO se trouvant sur la même partition que les fichiers de GRUB, ces lignes suffisent, la variable $root étant déjà initialisée avec le nom de cette partition.

set isofile=/chemin/vers/image.iso loopback loop $isofile set root=(loop) linux /chemin/vers/vmlinuz options initrd /chemin/vers/initrd.gz
Si le fichier ISO est dans une autre partition de la clé, il est possible de rechercher et d’identifier celle-ci grâce à la présence du fichier.

set isofile=/chemin/vers/image.iso search --file $isofile --set=rootiso loopback loop ($rootiso)$isofile set root=(loop) linux /chemin/vers/vmlinuz options initrd /chemin/vers/initrd.gz
Il est aussi possible d’identifier la partition par son UUID ou son label, récupérables par [mono]blkid[/mono].

search --fs-uuid <uuid> --set=rootiso search --label <label> --set=rootiso

bonjour Pascal.

merci d’avoir pris du temps pour examiner mon affaire,mais ce que je cherche à faire n’est pas d’installer un “os” sur ma clé mais simplement de booter un live cd directement sur la clé en passant par un menu de grub,ce que j’ai déjà fait en utilisant 40_custom,et ça fonctionne bien.C’était knoppix que je voulais mettre sur la clé mais après recherche je me suis aperçu que l’option de knoppix"(cheat codes)"tohd"ne fonctionne pas pour usb;d’autres ont essayé et sont tombés sur le même os,ça ne marche pas(encore)Pour contourner le problème l’astuce a donc consisté à écrire l’iso sur la partition data sdb2,à écrire 40_custom en conséquence et avec les bonnes options,à relancer update-grub et finalement knoppix roule depuis la clé sans avoir besoin de sdb2.C.Q.F.D

Dans mon dernier message il était juste question d’amorcer une image ISO quelle qu’elle soit, installateur ou système live.