Ce Howto a pour but de montrer comment on peut modifier le contenu d'un ISO. En effet, ces derniers sont très utilisées pour partager des systèmes d'exploitations. Par exemple, il y a Ubuntu, Lubuntu, BackBox, Gentoo, Debian Live, etc qui reprènnes ce principe.
# Pré-requis
Pour réaliser les tâches ci-dessous, nous aurons besoin de ces paquets :
Après avoir vu comment [https://wiki.evolix.org/HowtoDebian/liveCD](créer un liveCD) ou si l'on a téléchargé [http://ubuntu.univ-nantes.fr/ubuntu-cd/16.04.2/ubuntu-16.04.2-desktop-amd64.iso](un live CD d'installation d'Ubuntu), nous pouvons alors le monter dans un dossier pour qu'il soit accessible en lecture seule.
~~~
mount ubuntu-16.04.2-desktop-amd64.iso /mnt/
~~~
Nous copions son contenu dans un autre dossier dans lequel nous pourrons y apporter les modifications que l'on veut.
~~~
mkdir ~/custom
cp -R /mnt/ ~/custfom
~~~
## Modifier le menu
Lors du premier affichage, il est souvent demandé dans quel mode on souhaite lancer le système. Soit en mode live, en mode rescue ou en mode installation. Nous pouvons par exemple augmenter le temps d'affichage de ce menu. Toutes les modifications devront être réalisées depuis l'isolinux.
~~~
vi isolinux/stdmenu.cfg
menu timeoutrow 60
~~~
Nous vous invitons à lire [http://www.syslinux.org/wiki/](cette documentation) si vous souhaitez aller plus loin.
## Modifier le initrd
Initramfs est une partie du processus de boot et il comprend un system de fichier minimale pour décompresser le kernel et initialise le matériel.
Admettons que nous voulons maintenant modifier le comportement de l'image minimale qui permet entre autre de charger les modules pour le noyau Linux.
~~~
mkdir /tmp/initrd
cd /tmp/initrd
7z e -so ~/custom/casper/initrd.lz | cpio -id
~~~
_En fonction du type de compression, il faudra utiliser gunzip. Comme ceci ´gunzip -c´_
Par exemple on veut rattacher un module au noyau :
Une fois l'avoir remis à sa place initiale dans le liveCD et après avoir démarré sur le live CD, une commande intéressante peut être exécuté pour vérifier que le module n'a pas été chargé.
~~~
lsinitramfs /initrd.img |grep usbcore
~~~
## Modifier le squashfs d'un liveCD
Le Squashfs détient toute l'arborescence compressé d'un système. C'est très pratique lorsqu'il s'agit de partager rapidement son système et vu qu'il est compressé, il est donc léger.
Suite à cette manipulation, le dossier _ squashfs-root_ vient d'apparaitre. Avec facilitée, nous pouvons ajouter par exemple, l'utilisateur toto.
~~~
chroot squashfs-root/ adduser toto
~~~
Utiliser directement la commande _chroot_ permet de personnaliser très rapidement le futur OS. Il n'est donc pas nécessaire de le lier aux dossiers virtuel /proc ou /dev.
Après avoir fini de l'avoir librement personnalisé, nous reconstruisons le squashfs.
__Attention!__ Il faut d'abord supprimer l'original au risque de dupliquer les fichiers qui ne seront pas pris en compte lors de la reconstruction de l'ISO.