Recréer un live sur CD ou image USB de Archlinux, c'est possible en utilisant un programme nommé archiso.
Le paquet est présent sur le dépôt extra, mais à l'heure actuelle, il est périmé. Nous pouvons néanmoins utiliser la version git:
yaourt -S archiso-git
archiso fournit des exemples de configurations pour automatiser la création d'une image dans /usr/share/archiso/configs, mais selon l'architecture, le noyau, etc., il se peut qu'il y ait une erreur. Pour en être sûr, nous allons passer en revue les différentes étapes servant à créer une image.
Cette dernière est créé avec les deux commandes suivantes:
mkarchiso -p "paquets" create "répertoire de travail" #Un minimum d'action est nécessaire pour configurer le répertoire de travail. mkarchiso iso "répertoire de travail" "nom de l'image"
Les paquets sont à passer à la commande de la même façon qu'il sont passés à pacman, tout paquet pris en compte par pacman peut être utilisé, ce qui inclut également les groupes:
mkarchiso -p "base aufs2 aufs2-util" create traitement
créera un répertoire de travail traitement dans lequel seront installés tous les paquets du groupe base plus grub.
# mkarchiso -p "base aufs2 aufs2-util" create traitement
mkarchiso : Configuration Settings
working directory: traitement
image name: none
====> Creating working directory: traitement
====> Installing packages to 'traitement/root-image/'
Cleaning up what we can
# tree -L 2
.
`-- traitement
|-- README
|-- iso
|-- isomounts
`-- root-image
Le script utilise isolinux comme chargeur de démarrage, néanmoins, il est toujours possible d'utiliser grub, selon le chargeur choisi:
La configuration doit se faire dans le répertoire iso du répertoire de travail, commençons par y copier la configuration minimal de grub plus l'image du noyau:
cp -a traitement/root-image/boot traitement/iso/ cp -a traitement/root-image/usr/lib/grub/i386-pc/* traitement/iso/boot/grub/
Il faut maintenant modifier le fichier traitement/iso/boot/grub/menu.lst:
timeout 30 default 0 color light-blue/blue black/light-grey title Boot Arch Linux Live CD kernel /boot/vmlinuz26 lang=fr locale=fr_FR.UTF-8 ramdisk_size=75% archisolabel=ARCHISO initrd /boot/archiso.img
archiso-git dépend de syslinux, ce dernier devrait donc être installé, on va s'en servir pour comme chargeur de démarrage du CD:
cp -a traitement/root-image/boot traitement/iso/ mkdir traitement/iso/boot/isolinux cp -a /usr/lib/syslinux/isolinux.bin traitement/iso/boot/isolinux/
Puis créez un fichier traitement/iso/boot/isolinux/isolinux.cfg:
default live prompt 1 timeout 300 label live kernel /boot/vmlinuz26 append initrd=/boot/archiso.img lang=fr locale=fr_FR.UTF-8 ramdisk_size=75% archisolabel=ARCHISO
Ce fichier présent par défaut dans le répertoire de travail comporte la description du montage de la partition racine sous la forme:
<img> <arch> <mount point> <type>
Par défaut, l'option qui peut poser problème est l'architecture si vous êtes en x86_64, si c'est le cas, il suffit de modifier i686 par x86_64:
root-image.sqfs x86_64 / squashfs
Ce fichier peut contenir plusieurs lignes représentant ce que va contenir la racine, l'ordre est important, les priorités vont en décroissant. Par exemple, si vous rajoutez des fichiers à votre image en vous servant d'overlay, votre fichier doit ressembler à ça:
overlay.sqfs x86_64 / squashfs root-image.sqfs x86_64 / squashfs
Pour pouvoir démarrer l'image construite, il nous faut construire une image initrd en incluant les hooks nécessaires, créons un fichier mkinitcpio.conf:
HOOKS="base archiso-early udev archiso pata scsi sata usb fw filesystems usbinput"
puis, générons l'image:
mkinitcpio -c "$(pwd)"/mkinitcpio.conf -b "traitement/root-image" -k `uname -r` -g "traitement/iso/boot/archiso.img"
Cette partie concerne tout ce qui peut être ajouté ou modifié dans l'image finale.
Le principe est assez simple, mkarchiso recherche tout les répertoires présents dans le <répertoire de travail> et s'ils sont différents de iso, en fabrique une image squashfs.
Si par exemple, on veut modifier le /etc/rc.conf:
mkdir -p traitement/overlay/etc cp traitement/root-image/etc/rc.conf traitement/overlay/etc
Modifiez le, et rajoutez ceci en premier dans isomounts:
overlay.sqfs x86_64 / squashfs
A la dernière étape, un fichier overlay.sqfs sera crée dans <répertoire de travail>/iso.
Reste plus qu'à exécuter:
mkarchiso iso traitement exemple.iso
Ce qui donne:
# mkarchiso iso traitement exemple.iso
mkarchiso : Configuration Settings
working directory: traitement
image name: exemple.iso
====> Generating SquashFS image for 'traitement/root-image'
Creating SquashFS image. This may take some time...
Image creation done in 1.05 minutes.
====> Generating SquashFS image for 'traitement/overlay'
Creating SquashFS image. This may take some time...
Image creation done in 0.00 minutes.
====> Making bootable image
Creating ISO image...
grub, il y aura une erreur:
Creating ISO image... genisoimage: Uh oh, I cant find the boot catalog directory 'boot/isolinux'! /usr/bin/isohybrid: cannot open exemple.iso: Aucun fichier ou dossier de ce type
Il faudra lancer:
LABEL="ARCH_$(date +%Y%m)"
mkisofs -r -l -b boot/grub/stage2_eltorito -uid 0 -gid 0 \
-input-charset utf-8 \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-V "$LABEL" -o exemple.iso traitement/iso
isohybrid exemple.iso
qemu-system-x86_64 -enable-kvm -cdrom exemple.iso -k fr -m 396 -boot d
Options à modifier selon votre système.
Grâce à l'utilisation d'isohybrid, l'image peut tout aussi bien servir à graver un CD qu'à copier (à l'aide de dd) sur une clé USB.
Trois exemples sont fourni avec le paquet dans /usr/share/archiso/configs/:
Ils suivent tous le même modèle, les fichiers modifiés sont placés à la racine puis copiés dans le répertoire de travail au fur et à mesure des étapes à l'aide d'un Makefile, mais à cause de la perpétuelle évolution des paquets ou de votre architecture, aucun ne fonctionne directement, il faut modifier certaines choses en se basant sur les étapes expliquées avant.
A vous d'analyser plus en détail les exemples ;)