16 votes

Comment démarrer un fichier ISO depuis mon disque en utilisant grub2 sur des machines UEFI ?

J'ai un tas de fichiers ISO vivants comme GParted , CloneZilla , Réparation des bottes , Ubuntu 14.04 32 bit ... téléchargé dans /opt et sur mon ancienne machine BIOS, je pouvais simplement les ajouter au menu Grub et les démarrer. :-)

J'ai maintenant une machine UEFI et toutes les informations que je peux trouver sont pour des machines BIOS.

Quelles sont les étapes pour démarrer ces fichiers ISO à partir de Grub ?

C'est juste que j'en ai marre de les "graver" sur une clé USB tout le temps car je ne trouve jamais la clé dont j'ai besoin alors que mon ordinateur lui-même est beaucoup plus difficile à perdre dans le chaos total qui m'entoure ici...). :-(

17voto

Fabby Points 33498

Il existe un bug dans Grub 2.04 assurez-vous donc d'avoir une version antérieure ou ultérieure.

Eh bien, les bases pour ajouter un fichier ISO à Grub sont les mêmes pour une machine UEFI que pour une machine BIOS : modifier /etc/grub.d/40_custom et ajouter un menuentry (GParted est utilisé dans cet exemple) au bas du fichier :

menuentry "GParted Live ISO" {
}

Maintenant, nous allons ajouter une variable contenant le répertoire où nous avons stocké l'ISO (jusqu'ici, tout va bien : pas de différences avec les machines BIOS) :

menuentry "GParted Live ISO" {
  set GPartedISOFile="/opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso"
}

J'utilise /opt pour les stocker, car je n'aime pas créer des répertoires à la racine de ma machine et, selon la directive de l Hiérarchie du système de fichiers Linux c'est là que les logiciels optionnels devraient résider de toute façon.

Avant d'ajouter le loopback nous avons besoin de savoir sur quel disque dur le fichier est stocké, donc nous faisons un : df --output=source /opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso | tail -1 et la sortie sur ma machine est : /dev/sdb2 .

Cependant Grub utilise ( hdX,Y ) et la notation こん C'est là qu'intervient la différence entre les machines UEFI et BIOS ! Maintenant, redémarrez votre machine, Allez dans le menu Grub. et appuyez sur C : Ceci vous amènera à l'invite de commande Grub avec des commandes différentes de celles auxquelles vous êtes habitué mais le seul dont vous avez besoin est : ls .

Sur ma machine, la sortie est la suivante :

(hd0) (hd1) (hd1,gpt3) (hd1,gpt2) (hd1,gpt1) (hd2) ... (hd3) ...

Hein ? 4 disques durs ? J'en ai seulement 3 ! Et ce n'est pas (hd1,4) sur un BIOS mais (hd1,gpt3) dans l'UEFI et (hd0) n'a pas de partitions du tout !

Eh bien, apparemment, quand une partie de la NVRAM est utilisée comme stockage et apparaît comme (hd0) vous devez commencer à numéroter vos disques à 1 !   Alors que toutes les informations que vous trouvez sur le démarrage des fichiers ISO disent que vous devez commencer à numéroter à partir de 0 (sur les machines BIOS, c'est toujours vrai mais ce n'est pas nécessairement le cas sur certaines machines UEFI ! )

Ainsi, la valeur de loopback devient (hd2,gpt2)$GPartedISOFile car le fichier ISO sur ma machine était /dev/sdb2 (deuxième lecteur hd2 , la deuxième partition gpt2 ):

menuentry "GParted Live ISO" {
  set GPartedISOFile="/opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso"
  loopback loop (hd2,gpt2)$GPartedISOFile
}

Une autre différence est que le linux y initrd sur les machines BIOS sont appelés linuxefi y initrdefi sur les machines UEFI, ce qui nous donne notre résultat final :

#!/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 "GParted Live ISO" {
  set GPartedISOFile="/opt/Live-ISOs/gparted-live-0.31.0-1-amd64.iso"
  loopback loop (hd2,gpt2)$GPartedISOFile
  linuxefi (loop)/live/vmlinuz boot=live components config findiso=$GPartedISOFile ip=frommedia toram=filesystem.squashfs union=overlay username=user
  initrdefi (loop)/live/initrd.img
}

Donc maintenant, enregistrez ce fichier, et mettez à jour Grub avec :

update-grub
Après tout ce qui précède, redémarrez, Allez dans le menu Grub. choisissez GParted Live ISO et vous pouvez maintenant facilement démarrer votre ISO sans avoir à chercher une clé USB !

-)

Exemple de CloneZilla Live (pour cette question )

menuentry "CloneZilla ISO" {
  set ISOFile="/opt/Live-ISOs/clonezilla-live-20170905-zesty-amd64.iso"
  loopback loop (hd2,gpt2)$ISOFile
  linuxefi (loop)/live/vmlinuz boot=live components config findiso=$ISOFile ip=frommedia toram=filesystem.squashfs union=overlay
  initrdefi (loop)/live/initrd.img
}

8voto

oldfred Points 10672

Une alternative est d'ajouter un fichier de configuration à 40_custom comme ceci :

menuentry 'Live ISOs on SSD' {
configfile (hd0,3)/ISO/livecdimage.cfg
} 

menuentry 'Live ISOs on HDD (boot on SSD)' {
configfile (hd1,3)/ISO/livecdimage.cfg
} 

Je fais cela car lorsque je mets à jour un ISO, j'oublie invariablement de lancer sudo update-grub . Les entrées ci-dessus ne doivent jamais être modifiées et je peux simplement éditer livecdimage.cfg qui a le même format que n'importe quel 40_custom mais sans lignes d'en-tête, et se trouve dans mon dossier /ISO dans ma partition ISO.

J'ajoute toram comme autre paramètre de démarrage et sur le système avec Nvidia j'ajoute le paramètre de démarrage nomodeset. Mais je dois encore souvent démonter le /isodevice.

Impossible de umount isodevice unmount ISO https://bugs.launchpad.net/ubuntu/+source/ubiquité/+bug/1155216

sudo umount -l -r -f /isodevice

Et voici une partie de mon fichier livecdimage.cfg

# livecdimage.cfg
# Add this to 40_custom to load this file:
# menuentry 'Live ISOs' {
# configfile (hd1,3)/iso/livecdimage.cfg
#} 
# Add iso names to livecdimage.cfg
#for i in `ls *.iso`;do echo "# "$i>>livecdimage.cfg; done;

menuentry "Ubuntu 16.04.4 xenial amd64" {
    set isofile="/ISO/ubuntu-16.04.4-desktop-amd64.iso"
    loopback loop (hd0,3)$isofile 
    linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile toram
    initrd (loop)/casper/initrd.lz
}

menuentry "Ubuntu 18.04 Bionic amd64" {
    set isofile="/ISO/bionic-desktop-amd64.iso"
    loopback loop (hd0,3)$isofile 
    linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile toram
    initrd (loop)/casper/initrd.lz
}

# spacer line
menuentry " " {
set root= 
}

menuentry "Reboot" {
    reboot
}

menuentry "Halt" {
    halt
}

5voto

C.S.Cameron Points 16079

mkusb MULTIBOOT HACK

Mkusb constitue une excellente base pour les projets de lecteurs de démarrage personnalisés en raison de ses capacités avec le BIOS et l'UEFI.

Ce hack permet de démarrer plusieurs fichiers ISO, y compris l'installateur Windows, et possède un menu grub2.

Les entrées de menu de Grub2 pour la plupart des systèmes d'exploitation sont disponibles en utilisant la recherche Google et sont au-delà de la portée de cette réponse.

mkusb defaults

Utilisez les valeurs par défaut de mkusb lors de la création du lecteur USB persistant.

mkusb use defaults again

Utilisez les valeurs par défaut de la persistance mkusb en cas de doute, la taille de la partition peut être ajustée ultérieurement mais cela prend du temps.

DUS Console

La console DHS après l'installation.

GParted Before

GParted avant la modification de la partition.

Gparted after

Gparted après modification - Écraser sdb4, la partition ISO9660 du système d'exploitation et sdb5, la partition ext2 casper-rw, avec une partition FAT32 pour les fichiers de persistance.

Persistence partition

Partition de persistance - Créez un dossier au nom unique pour chaque système d'exploitation (qui nécessite la persistance).

Persistence folder

Dossier de persistance - Ajoutez un fichier casper-rw et un fichier home-rw facultatif à chaque dossier de persistance. Un fichier home-rw peut être créé en renommant un fichier casper-rw. Un fichier home-rw est comme une partition home séparée sur une installation complète, il peut être réutilisé après des mises à jour de version.

ISO folder

Créez un dossier pour les fichiers ISO sur la partition NTFS usbdata.

ISO folder contents

Ajoutez quelques ISO dans le dossier ISO.

GRUB location

Grub.cfg emplacement

grub.cfg

Editez Grub.cfg pour monter en boucle les fichiers ISO. Inclure : persistent persistent-path=/<persistent-folder-name>/ si vous voulez de la persistance. Ajoutez rmmod tpm à Grub.cfg au-dessus de la première entrée de menu.

EDIT 18.04+ Dans Grub spécifiez vmlinuz pas vmlinuz.efi et initrd pas initrd pas initid.lz

sudo parted -ls  /dev/sdb

sudo parted -ls /dev/sdb

sudo lsblk -f  /dev/sdb

sudo lsblk -f /dev/sdb

Si un installateur Windows est nécessaire, il est peut-être plus facile de commencer avec la fonction "extraire l'installateur Windows" de mkusb, (j'ai dû extraire l'ISO Windows en TAR manuellement),

mkusb Windows Installer

Après l'installation, créez un dossier pour les ISO et, si nécessaire, des dossiers pour la persistance, (comme pour la procédure ci-dessus).

mkusb Windows grub

Editez /boot/Grub/Grub.cfg pour monter en boucle tout ISO et spécifier tout dossier de persistance.

(je n'ai pas trouvé de moyen de monter en boucle un fichier ISO Windows).

Si ce qui précède est utilisé comme une clé USB, il peut être utilisé pour démarrer les ISO stockés sur un ordinateur uniquement Windows. Grub n'est pas nécessaire sur le lecteur interne.

3voto

user68186 Points 25067

Trois étapes faciles

pour ajouter ISO au menu Grub et démarrer à partir de celui-ci.

Tout d'abord, installez grml-rescueboot

Ouvrez un terminal et entrez :

sudo apt install grml-rescueboot

Ensuite, déplacez les fichiers iso vers /boot/grml/

Dans le même terminal, entrez :

sudo mv ~/Downloads/<filename.iso> /boot/grml/

Troisièmement, mettre à jour Grub

Dans le même terminal, entrez :

sudo update-grub

Répétez les deuxième et troisième étapes si nécessaire.

N'oubliez pas de supprimer les fichiers ISO obsolètes de l'application /boot/grml .

Référence : Aide pour Ubuntu sur le démarrage ISO de Grub2

J'espère que cela vous aidera

2voto

C.S.Cameron Points 16079

MultiBootUSB - QEMU

Si vous voulez démarrer des fichiers ISO avec le moins de tracas possible et n'avez pas besoin de persistance, MultiBootUSB inclut une option QEMU :

  • Démarrez MultiBootUSB et sélectionnez l'onglet Boot ISO/USB.

  • Faites glisser et déposez l'ISO sur l'espace de sélection des images.

  • Sélectionnez la taille de la RAM et cliquez sur le bouton Boot ISO.

Vous n'avez pas besoin de modifier Grub.cfg ou même de vous déconnecter.

MultiBootUSB-QEMU

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X