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 ... ) : - (
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 loopback
name__, 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à: ls
name__.
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 loopback
devient (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 linux
et initrd
sur les machines BIOS sont appelés linuxefi
et linuxefi
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
}
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!
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
}
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
}
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.
Utilisez les valeurs par défaut de mkusb lors de la création du lecteur USB persistant.
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.
La console DUS après l’installation.
GParted avant la modification de la partition.
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.
Partition de persistance - Créez un dossier avec un nom unique pour chaque système d'exploitation (qui nécessite de la persistance)
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.
Créez un dossier pour les fichiers ISO sur la partition NTFS usbdata.
Ajoutez des ISO dans le dossier ISO.
emplacement 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 s'est séparé -ls/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),
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).
É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.
ajouter ISO au menu de base et démarrer à partir de celui-ci.
grml-rescueboot
Ouvrez un terminal et entrez:
Sudo apt install grml-rescueboot
/boot/grml/
Dans le même terminal, entrez:
Sudo mv ~/Downloads/<filename.iso> /boot/grml/
Dans le même terminal, entrez:
Sudo update-grub
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
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.
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
}