web-dev-qa-db-fra.com

Comment démarrer un fichier ISO à partir de mon lecteur à l'aide de grub2 sur des machines UEFI?

J'ai un tas de fichiers ISO en direct comme GParted , CloneZilla , Boot-Repair , buntu 14.04 32 bits , ... téléchargé dans /opt et sur mon ancien ordinateur BIOS, je pouvais 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 les machines BIOS.

Quelles sont les étapes à suivre pour amorcer ces fichiers ISO à partir de grub?

J'en ai juste marre de "graver" tout le temps sur une clé USB, car je ne trouve jamais le bâton dont j'ai besoin alors que mon ordinateur lui-même est beaucoup plus difficile à perdre dans le chaos total qui règne autour de moi ici ... ) : - (

11
Fabby

Bien, les bases pour ajouter un fichier ISO à grub sont les mêmes pour un UEFI et pour une machine BIOS: éditez /etc/grub.d/40_custom et ajoutez un élément menuentry(GParted est utilisé dans cet exemple) au bas du fichier:

menuentry "GParted Live ISO" {
}

Nous allons maintenant ajouter une variable contenant le répertoire dans lequel nous avons stocké l'ISO (jusqu'ici, tout va bien: pas de différence 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 de répertoires à la racine de ma machine et conformément à la hiérarchie du système de fichiers Linux c'est là que les logiciels facultatifs doivent résider de toute façon.

Avant d'ajouter la variable loopbackname__, nous devons savoir sur quel disque dur le fichier est stocké. Nous effectuons donc 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 la notation (hdX, Y) et this est la différence entre les machines UEFI et BIOS! Redémarrez maintenant votre machine, allez dans le menu grub et appuyez sur C: Ceci vous amènera à la commande grub Invite avec commandes différentes de celles auxquelles vous êtes habitué mais la seule dont nous avons besoin, vous la connaissez déjà: lsname__.

Sur ma machine, la sortie est:

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

Hein? 4 lecteurs? Je n'en ai que 3! Et ce n'est pas la ligne (hd1,4) sur un BIOS, mais (hd1,gpt3) dans UEFI et (hd0) n'a pas de partition!

Eh bien, apparemment, lorsqu'une partie de la NVRAM est utilisée comme stockage et apparaît sous la forme (hd0), vous devez commencer à numéroter vos lecteurs à 1! . vous devez commencer à numéroter à partir de 0 (sur les machines BIOS, ceci est toujours vrai , ce n'est pas nécessairement le cas sur certaines machines UEFI !)

Ainsi, la valeur de loopbackdevient (hd2,gpt2)$GPartedISOFile car le fichier ISO de ma machine était /dev/sdb2 (deuxième lecteur hd2, 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 linuxet initrdsur les machines BIOS sont appelés linuxefiet linuxefisur 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
}

Enregistrez maintenant 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 pourrez désormais démarrer facilement votre ISO sans avoir à chercher une clé USB!

:-)

Exemple de CloneZilla Live (pour cette question )

menuentry "CloneZilla ISO (Works)" {
  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
}
13
Fabby

Une alternative consiste simplement à 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 comme lorsque je mets à jour une image ISO, j'oublie invariablement d'exécuter Sudo update-grub. Les entrées ci-dessus ne doivent jamais changer et je peux simplement éditer livecdimage.cfg qui a le même format que n'importe quel fichier 40_custom mais sans lignes d'en-tête, et se trouve dans le dossier/ISO de ma partition ISO.

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

Impossible de démonter isodevice unmount ISO https://bugs.launchpad.net/ubuntu/+source/ubiquity/+bug/1155216

Sudo umount -l -r -f /isodevice

Et cela fait 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
}
6
oldfred

mkusb MULTIBOOT HACK

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

Ce hack démarre plusieurs fichiers ISO, y compris le programme d'installation de Windows, et dispose d'un menu grub2.

Les options de menu Grub2 pour la plupart des systèmes d’exploitation sont disponibles en utilisant Google Search et débordent le cadre 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 prend du temps.

DUS Console

La console DUS après l’installation.

GParted Before

GParted avant la modification de la partition.

Gparted after

Gparted after modification - Ecrasez sdb4, la partition du système d'exploitation ISO9660, 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 avec un nom unique pour chaque système d'exploitation (qui nécessite de la persistance)

Persistence folder

Dossier de persistance - Ajoutez un fichier casper-rw et un fichier home-rw facultatif à chaque dossier de persistance. Vous pouvez créer un fichier home-rw 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 les mises à niveau de version.

ISO folder

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

ISO folder contents

Ajoutez des ISO dans le dossier ISO.

GRUB location

emplacement grub.cfg

grub.cfg

Editez grub.cfg pour monter en boucle les fichiers ISO. Incluez: persistent persistent-path=/<persistent-folder-name>/ si vous voulez la persistance.

Sudo parted -ls /dev/sdb

Sudo s'est séparé -ls/dev/sdb

Sudo lsblk -f /dev/sdb

Sudo lsblk -f/dev/sdb

Si un programme d’installation Windows est requis, il est probablement plus facile de démarrer avec la fonction "extraire le programme d’installation Windows" de mkusb (je devais extraire manuellement le fichier ISO de Windows vers TAR),

mkusb Windows Installer

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

mkusb Windows grub

Éditez /boot/grub/grub.cfg pour monter en boucle les images ISO et spécifier les dossiers de persistance.

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

Si ce qui précède est utilisé comme clé USB, vous pouvez également démarrer les images ISO stockées sur un ordinateur uniquement Windows. Grub n'est pas requis sur le lecteur interne.

5
C.S.Cameron

Trois étapes faciles

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

Commencez par installer grml-rescueboot

Ouvrez un terminal et entrez:

Sudo apt install grml-rescueboot

Deuxièmement, 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 /boot/grml.

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

J'espère que cela t'aides

3
user68186

MultiBootUSB - QEMU

Si vous souhaitez démarrer les fichiers ISO avec le moins de tracas et que vous 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 d'image.

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

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

MultiBootUSB-QEMU

2
C.S.Cameron

SIMPLE Multibooter ISO mkusb

Si vous n'avez pas besoin de la multi-persistance, il est facile de procéder à une réinitialisation multiple des ISO du système d'exploitation sur un lecteur flash mkusb.

Utilisez mkusb pour créer un lecteur USB persistant à l'aide du système d'exploitation par défaut de votre choix, https://help.ubuntu.com/community/mkusb

Créez un dossier dans la partition usbdata sdx1, appelée ISO.

Ajoutez les images ISO à démarrer dans ce dossier.

Ajoutez des menus à /sdx3/boot/grub/grub.cfg pour monter en boucle les images ISO.

Échantillons:

menuentry "Ubuntu-18.04 64-bit ISO" {
    set root=(hd0,1)
    set isofile="/ISOs/ubuntu-18.04-desktop-AMD64.iso"
        loopback loop $isofile
        linux (loop)/casper/vmlinuz boot=casper iso-scan/filename=$isofile splash --
        initrd (loop)/casper/initrd.lz
}

menuentry "GParted 64-bit ISO" {
    set root=(hd0,1)
    set isofile="/ISOs/gparted-live-0.31.0-1-AMD64.iso"
    loopback loop $isofile
    linux (loop)/live/vmlinuz boot=live union=overlay username=user config components noswap noeject toram=filesystem.squashfs ip='' nosplash findiso=$isofile splash --
    initrd (loop)/live/initrd.img
}

menuentry "Clonezilla 64-bit ISO" {
    set root=(hd0,1)
    set isofile="/ISOs/clonezilla-live-2.5.5-38-AMD64.iso"
    loopback loop $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 splash --
    initrd (loop)/live/initrd.img
}
1
C.S.Cameron