Documentation du Dr FRAPPE

Ce wiki regroupe les résultats de mes expériences en informatique accumulés au cours de mes recherches sur le net.

Dans la mesure du possible, j'ai cité mes sources ; il en manque certainement… :-)

Créer une partition avec GRUB2 contenant les cd d'installation et des isos

1. Pré-requis

1.1. Démarrage en boucle (loop)

GRUB peut lire à partir d'une image (que ce soit un CD ou un disque dur) stockée sur l'un de ses stockages accessibles (voir la commande loopback).

Cependant, l'OS lui-même devrait pouvoir trouver sa racine.

Cela implique généralement l'exécution d'un programme dans l'espace utilisateur en cours avant la découverte de la racine réelle.

Pour cela, GRUB charge une petite image spécialement faite et la passe au noyau en tant que disque virtuel.

C'est réalisé par les commandes kfreebsd_module, knetbsd_module_elf, kopenbsd_ramdisk, initrd (voir initrd), initrd16 (voir initrd), multiboot_module, multiboot2_module ou xnu_ramdisk selon le chargeur.

Notez que pour knetbsd, l'image doit être placée dans miniroot.kmod et le miniroot.kmod entier doit être chargé.

Dans kopenbsd, c'est désactivé par défaut.

En outre, le comportement du disque virtuel initial dépend des options de la ligne de commande.

Plusieurs distributeurs fournissent l'image à cet effet ou l'intègrent à leur disque mémoire standard et l'activent par une option spéciale. Consultez votre manuel de distribution et de votre noyau pour plus de détails.

D'autres chargeurs tels que appleloader, chainloader (BIOS, EFI, coreboot), freedos, ntldr et plan9 ne permettent pas de charger le disque virtuel initial et ne supportent pas le ramdisk initial de cette ; autrement dit ils ne sont pas amorçable de cette façon.

Envisager d'autres méthodes de démarrage comme la copie de tous les fichiers de l'image sur une partition réelle.

Consultez la documentation de votre système d'exploitation pour plus de détails

1.2. Créer un dossier unique

On créera un dossier unique pour tous les fichiers 'iso' :

  • créer un dossier isos 1):
    • sur la partition /
    • ou sur une partition de données (dans cet exemple, /dev/sda4, montée sur media/isoroot)
  • changer le propriétaire du dossier pour écrire dedans sans avoir besoin des droits super utilisateur
  • créer un lien symbolique dans le dossier Téléchargements pour y accéder facilement

Pour cela, saisir les commandes suivantes dans le terminal :<cli prompt='$ '> $ cd /media/isoroot sudo mkdir isos sudo chown $USER:$USER isos ln -f -s -r -t ~/Téléchargements isos </cli>

Désormais, les fichiers iso téléchargés pourront être déplacés dans ce dossier isos depuis le dossier ~/Téléchargements.

1.3. Créer un sous-menu

Pour éviter de devoir lancer la commande

sudo update-grub

Après chaque modification, on créera une bonne fois pour toutes une ligne de menu dans le fichier /etc/grub.d/40_custom une ligne de menu menant vers un fichier de configuration totalement indépendant.

Ce fichier de configuration sera mis au même endroit que les fichiers iso : il est ainsi facile à modifier et ne nécessite pas les droits super utilisateur.

On configure donc le fichier /etc/grub.d/40_custom ainsi :

/etc/grub.d/40_custom
menuentry "   " {
    true	# true permet d'afficher la ligne de titre (ici une ligne vide pour aérer le menu) sans rien faire d'autre
}
menuentry "===>> Distributions lancées depuis leur fichier iso" {
    set root=(hd0,4)
    configfile /isos/00_isoboot.cfg
   }

La commande

    set root=(hd0,4)

définit /dev/sda4 comme la partition où se trouve le dossier isos

Pour activer ce changement, il faut lancer la commande :<cli prompt='$ '> $ sudo update-grub </cli>

Le menu grub aura ainsi une ligne qui mène sur une page dédiée aux lancements de fichiers iso.

2. Première étape : partitionner

Passer en mode super-utilisateur et lancer parted:<cli> $ sudo su <cli prompt='# '> # parted GNU Parted 3.2 Utilisation de /dev/sda Bievenue sur GNU Parted ! Tapez 'help' pour voir la liste des commandes. (parted) </cli>

Repérer le disque sur lequel sera placée la partition des iso :<cli prompt='(parted) '> (parted) print all free Modèle: ATA HGST HTS541010A9 (scsi) Disque /dev/sda : 1000GB Taille des secteurs (logiques/physiques): 512B/4096B Table de partitions : msdos Disk Flags:

Numéro Début Fin Taille Type Système de fichiers Fanions

      32,3kB  1049kB  1016kB           Espace libre

1 1049kB 53,7GB 53,7GB primary ext4 démarrage 2 53,7GB 57,9GB 4193MB primary linux-swap(v1) 3 57,9GB 948GB 891GB primary ext4

      948GB   1000GB  51,7GB           Espace libre

Modèle: ATA ST1000LM024 HN-M (scsi) Disque /dev/sdb : 1000GB (…) (parted) quit </cli>

Nous allons créer notre partition d'installation dans la cinquantaine de Go libres à la fin du disque /dev/sda.

Créons donc une partition /dev/sda4 :<cli prompt='(parted) '> (parted) select /dev/sda (parted) mkpart primary NTFS 948GB 1000GB </cli> </cli>

Lancer le partitionnement de /dev/sda : <cli prompt='# '> # fdisk /dev/sda

Welcome to fdisk (util-linux 2.27.1). Changes will remain in memory only, until you decide to write them. Be careful before using the write command.

Commande (m pour l'aide) : </cli>

Dans fdisk : <cli prompt=“Commande (m pour l'aide) : ”> Commande (m pour l'aide) : p Disque /dev/sda : 931,5 GiB, 1000204886016 octets, 1953525168 secteurs Unités : sectors of 1 * 512 = 512 octets Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disklabel type: dos Disk identifier: 0x0002de35

Périphérique Amorçage Start Fin Secteurs Size Id Type /dev/sda1 * 2048 104859647 104857600 50G 83 Linux /dev/sda2 104859648 113049599 8189952 3,9G 82 partition d'écha /dev/sda3 113049600 1852495871 1739446272 829,4G 83 Linux

Commande (m pour l'aide) : n Partition type

 p   primary (3 primary, 0 extended, 1 free)
 e   extended (container for logical partitions)

Select (default e): p

Selected partition 4 Premier secteur (1852495872-1953525167, 1852495872 par défaut) : Last sector, +sectors or +size{K,M,G,T,P} (1852495872-1953525167, 1953525167 par défaut) :

Created a new partition 4 of type 'Linux' and of size 48,2 GiB.

Commande (m pour l'aide) : t Numéro de partition (1-4, 4 par défaut) : Partition type (type L to list all types): 1c

Changed type of partition 'Linux' to 'Hidden W95 FAT32 (LBA)'.

Commande (m pour l'aide) : w The partition table has been altered. Calling ioctl() to re-read partition table. Re-reading the partition table failed.: Périphérique ou ressource occupé

The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).

# </cli>

Redémarrer pour utiliser la nouvelle table de partitions. Après le redémarrage, revenir en root :<cli prompt='$'> $ sudo su </cli>

et vérifier le partitionnement avec parted : <cli prompt='# '> # parted /dev/sda GNU Parted 3.2 Utilisation de /dev/sda Bievenue sur GNU Parted ! Tapez 'help' pour voir la liste des commandes. (parted) </cli>

Dans parted : <cli prompt='(parted) '> (parted) print free Modèle: ATA HGST HTS541010A9 (scsi) Disque /dev/sda : 1000GB Taille des secteurs (logiques/physiques): 512B/4096B Table de partitions : msdos Disk Flags:

Numéro Début Fin Taille Type Système de fichiers Fanions

      32,3kB  1049kB  1016kB           Espace libre

1 1049kB 53,7GB 53,7GB primary ext4 démarrage 2 53,7GB 57,9GB 4193MB primary linux-swap(v1) 3 57,9GB 948GB 891GB primary ext4 4 948GB 1000GB 51,7GB primary ntfs caché, lba

(parted) quit </cli>

Revenir en mode user :<cli prompt='# '> # exit $ </cli>

Repérer l'UUID de /dev/sd4 :<cli> $ sudo blkid (…) /dev/sda4: LABEL=“ISOS” UUID=“5BC9-AE1A” TYPE=“vfat” PARTUUID=“0002de35-04” </cli>

Éditer avec les droits d'administration le fichier /etc/fstab pour ajouter une ligne :

/etc/fstab
(...)
#	/dev/sda4 : ISOS (/isos)
UUID=5BC9-AE1A	/isos	vfat	defaults,user,uid=1000,gid=100	0	0

Démonter la partition, la formater, créer le répertoire /isos, changer son propriétaire pour y accéder sans droits de super-utilisateur et créer un lien symbolique dans le dossier Téléchargements pour y accéder facilement :<cli prompt='$ '> $ sudo umount /dev/sda4 umount: /dev/sda4: not mounted $ mkfs.vfat -F 32 -n ISOS /dev/sda4 mkfs.fat 3.0.28 (2015-05-16) $ cd / $ sudo mkdir /isos $ sudo mkdir /media/winsource $ sudo chown $USER:$USER /isos $ sudo ln -f -s -r -t ~/Téléchargements /isos </cli>

Repérer l'UUID de /dev/sd4 :<cli> $ sudo blkid (…) /dev/sda4: LABEL=“ISOS” UUID=“5BC9-AE1A” TYPE=“vfat” PARTUUID=“0002de35-04” </cli>

Éditer avec les droits d'administration le fichier /etc/fstab pour ajouter une ligne :

/etc/fstab
(...)
#	/dev/sda4 : ISOS (/isos)
UUID=5BC9-AE1A	/isos	vfat	defaults,user,uid=1000,gid=100	0	0

Monter cette partition :<cli> $ sudo mount /isos </cli>

3. Autres étapes

Supposons que les images soient dans le répertoire /isos-images et qu'il contienne :

  • ubuntu-16.04.3-desktop-amd64.iso
  • boot-repair-disk-64bit.iso
  • Windows10-32-64.iso
  • medicat.17.10.02.stable-004.iso

Aller dans ce répertoire des fichiers isos :<cli> $ cd /isos-images </cli>

Monter l'iso windows en loop :<cli> $ sudo mount -o loop -t udf /isos-images/Windows10-32-64.iso /media/winsource/ mount: /dev/loop0 is write-protected, mounting read-only nicolas@chateau:~$ </cli>

Copier les isos et le contenu de l'iso windows sur ISOS :

4. Conclusion

5. Problèmes connus

6. Voir aussi


Basé sur « Article » par Auteur.

1)
clic droit Ouvrir un terminal ici à l'endroit choisi dans le gestionnaire de fichiers

QR Code
QR Code tutoriel:linux:grub:partgrub2:start (generated for current page)