Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
personnaliser_livecd [Le 12/03/2021, 17:22] 88.122.224.21 [Méthodes assistées] |
personnaliser_livecd [Le 25/11/2024, 19:31] (Version actuelle) 89.86.155.3 [Extraction du système] root non requis |
||
---|---|---|---|
Ligne 6: | Ligne 6: | ||
Dans ce tutoriel, nous vous expliquerons comment créer votre propre liveCD (ou liveDVD), | Dans ce tutoriel, nous vous expliquerons comment créer votre propre liveCD (ou liveDVD), | ||
en modifiant un liveCD ubuntu déjà existant afin qu'il corresponde à vos besoins. | en modifiant un liveCD ubuntu déjà existant afin qu'il corresponde à vos besoins. | ||
- | Vous pourrez par exemple installer les paquets que vous souhaitez, | + | Vous pourrez par exemple installer les paquets que vous souhaitez, |
mettre dans le /home du liveCD les fichiers dont vous avez besoin, etc. | mettre dans le /home du liveCD les fichiers dont vous avez besoin, etc. | ||
Ligne 13: | Ligne 13: | ||
Il existe plusieurs applications permettant de personnaliser votre liveCD : | Il existe plusieurs applications permettant de personnaliser votre liveCD : | ||
- | * [[:UCK]] | + | * Le script "isorespin.sh" (conçu par l'individu "Linuxium")]] permet (aux utilisateurs avancés) de modifier des [[wp>fr:Image disque|images disque]] ISO de Ubuntu afin de les rendre compatibles (démarrables et modification de drivers) avec les CPU Intel Atom (2017) |
- | * [[:Remastersys]] | + | * [[https://ubuntuplace.info/questions/16155/comment-utiliser-cubic-pour-creer-une-image-cd-ubuntu-person|Cubic]] |
- | * [[:Respin]] | + | |
- | *[[ http://forum.ubuntu-fr.org/viewtopic.php?id=424373|ModCustom]] | + | |
- | * [[http://www.le-libriste.fr/2012/03/creer-votre-propre-distribution-avec-ubuntu-builder/|Ubuntu-Builder]] ([[https://launchpad.net/ubuntu-builder/+announcement/12508|Projet abandonné]] | + | |
- | * puis [[https://launchpad.net/~kamilion/+archive/ubuntu/ubuntu-builder|copié récemment par Kamilion]] ) | + | |
- | * [[https://launchpad.net/~nemh/+archive/ubuntu/systemback|SystemBack]] | + | |
- | * [[http://linuxiumcomau.blogspot.com/2017/06/customizing-ubuntu-isos-documentation.html | | + | |
- | * Le script "isorespin.sh" (conçu par l'individu "Linuxium")]] permet (aux utilisateurs avancés) de modifier des [[wp>fr:Image disque|images disque]] ISO de Ubuntu afin de les rendre compatibles (démarrables et modification de drivers) avec les CPU Intel Atom (2017) | + | |
- | * [[http://example.com|cubic]] (En anglais) | + | |
Ligne 33: | Ligne 25: | ||
* Posséder une image CD (iso) d'Ubuntu Desktop. (l'[[:cd_ubuntu-fr|Edition Francophone]] par exemple) | * Posséder une image CD (iso) d'Ubuntu Desktop. (l'[[:cd_ubuntu-fr|Edition Francophone]] par exemple) | ||
* Disposer d'environ 3Go d'espace libre sur votre Disque Dur. | * Disposer d'environ 3Go d'espace libre sur votre Disque Dur. | ||
- | * Installer les outils relatifs au squashfs (format de compression en lecture seule utilisé dans les ISOs Ubuntu) : <code bash>sudo apt-get install squashfs-tools schroot genisoimage</code> | + | * Installer les outils relatifs au squashfs (format de compression en lecture seule utilisé dans les ISOs Ubuntu) : <code bash>sudo apt-get install -y squashfs-tools schroot genisoimage xorriso</code> |
==== Introduction : Généralités sur le liveCD ==== | ==== Introduction : Généralités sur le liveCD ==== | ||
Ligne 40: | Ligne 32: | ||
Linux en mémoire vive. Cela permet de tester une distribution sans risquer de faire | Linux en mémoire vive. Cela permet de tester une distribution sans risquer de faire | ||
des dégâts sur les disques dur, par exemple.\\ | des dégâts sur les disques dur, par exemple.\\ | ||
- | Un liveCD Linux n'est donc rien d'autre qu'un système Linux classique, | + | Un liveCD Linux n'est donc rien d'autre qu'un système Linux classique, |
son but étant d'être en lecture seule et de ne pas tenir de place, il est compressé. | son but étant d'être en lecture seule et de ne pas tenir de place, il est compressé. | ||
Pour la compression, on utilise squashfs : un système de fichier (tel que ext3 ou reiserfs), | Pour la compression, on utilise squashfs : un système de fichier (tel que ext3 ou reiserfs), | ||
qui ne permet que la lecture mais permet un gain de place très important.\\ | qui ne permet que la lecture mais permet un gain de place très important.\\ | ||
- | Malheureusement, ce système seul ne permet pas de faire fonctionner un système Linux. | + | Malheureusement, ce système seul ne permet pas de faire fonctionner un système Linux. |
On l'associe donc à un autre système de fichier, qui est entièrement placé en mémoire : ramfs.\\ | On l'associe donc à un autre système de fichier, qui est entièrement placé en mémoire : ramfs.\\ | ||
Un dernier système de fichier permet d'associer les deux précédents : unionfs. | Un dernier système de fichier permet d'associer les deux précédents : unionfs. | ||
Unionfs est utilisable grâce à l'initrd, qui permet de charger un mini-système | Unionfs est utilisable grâce à l'initrd, qui permet de charger un mini-système | ||
en mémoire au boot, et d'agir sur le « vrai » système.\\ | en mémoire au boot, et d'agir sur le « vrai » système.\\ | ||
- | Le soft casper permet la mise en place du boot du liveCD a partir de l'initrd. | + | Le soft casper permet la mise en place du boot du liveCD à partir de l'initrd. |
Ligne 65: | Ligne 57: | ||
L'image ISO sera stockée dans le dossier iso, dans squashfs sera stocké le « vrai » système live. | L'image ISO sera stockée dans le dossier iso, dans squashfs sera stocké le « vrai » système live. | ||
- | Il nous faut commencer par copier le contenu de l'image ISO sur le disque dur. | + | Il nous faut commencer par copier le contenu de l'image ISO sur le disque dur. |
* On va donc la monter : // Remplacez ubuntu-desktop-xxx.iso par le chemin de votre fichier ISO.//<code bash>sudo mount -o loop ubuntu-desktop-xxx.iso /mnt</code> | * On va donc la monter : // Remplacez ubuntu-desktop-xxx.iso par le chemin de votre fichier ISO.//<code bash>sudo mount -o loop ubuntu-desktop-xxx.iso /mnt</code> | ||
- | * On copie son contenu dans le dossier iso : //l'option -a permet de conserver les droits des fichiers copiés// <code bash>sudo cp -av /mnt/. iso</code> | + | * On copie son contenu dans le dossier iso : //l'option -a permet de conserver les droits des fichiers copiés// <code bash>cp -av /mnt/. iso</code> |
* Une fois cela fait, on peut la démonter :<code bash>sudo umount /mnt</code> | * Une fois cela fait, on peut la démonter :<code bash>sudo umount /mnt</code> | ||
Ligne 76: | Ligne 68: | ||
=== Copie du squashfs === | === Copie du squashfs === | ||
- | Nous allons maintenant copier le squashfs (le système de fichier de notre liveCD) | + | Nous allons maintenant copier le squashfs (le système de fichier de notre liveCD) |
sur le disque dur afin de pouvoir le modifier. | sur le disque dur afin de pouvoir le modifier. | ||
* On le monte de la même manière que n'importe quel système de fichier :<code bash> | * On le monte de la même manière que n'importe quel système de fichier :<code bash> | ||
sudo mount -t squashfs -o loop iso/casper/filesystem.squashfs /mnt</code> | sudo mount -t squashfs -o loop iso/casper/filesystem.squashfs /mnt</code> | ||
- | <note>On pourra reconnaître dans /mnt l'arborescence classique de Linux : /etc, /boot,…, | + | <note>On pourra reconnaître dans /mnt l'arborescence classique de Linux : /etc, /boot,…, |
qui est présente dans le squashfs.</note> | qui est présente dans le squashfs.</note> | ||
- | * Comme nous l'avons dit, le squashfs est en lecture seule : il est impossible de modifier directement le squashfs. \\ Il faut copier le système qu'il contient dans le dossier //squashfs// créé dans ce but. :<code bash>sudo cp -av /mnt/. squashfs</code>//Attention, cette opération prend un peu de temps.// | + | * Comme nous l'avons dit, le squashfs est en lecture seule : il est impossible de modifier directement le squashfs. \\ Il faut copier le système qu'il contient dans le dossier //squashfs// créé dans ce but. :<code bash>cp -av /mnt/. squashfs</code>//Attention, cette opération prend un peu de temps.// |
* Pour finir, on le démonte :<code bash>sudo umount /mnt</code> | * Pour finir, on le démonte :<code bash>sudo umount /mnt</code> | ||
Ligne 94: | Ligne 86: | ||
hébergé (dans ''~/livecd/squashfs''), en utilisant le noyau du système | hébergé (dans ''~/livecd/squashfs''), en utilisant le noyau du système | ||
hôte (votre jolie Ubuntu à vous ;-) ). C'est une Inception, si vous voulez !</note> | hôte (votre jolie Ubuntu à vous ;-) ). C'est une Inception, si vous voulez !</note> | ||
- | <note warning> Il faut que le système hôte ait une architecture au moins du | + | <note warning>Il faut que le système hôte ait une architecture au moins du |
- | niveau du système hébergé : votre Ubuntu doit être en 64b pour chrooter | + | niveau du système hébergé : votre Ubuntu doit être en 64b pour chrooter |
dans un système 64b.\\ Si vous essayez de modifier un système 64b dans | dans un système 64b.\\ Si vous essayez de modifier un système 64b dans | ||
- | une installation 32b, vous aurez une erreur qui ressemble | + | une installation 32b, vous aurez une erreur qui ressemble |
à <code bash>chroot: failed to run command ’/bin/bash’: Exec format error</code>FIXME</note> | à <code bash>chroot: failed to run command ’/bin/bash’: Exec format error</code>FIXME</note> | ||
Vous pourrez modifier votre système hébergé (presque) comme s'il était installé en dur ! | Vous pourrez modifier votre système hébergé (presque) comme s'il était installé en dur ! | ||
Ligne 105: | Ligne 97: | ||
* Quelques réglages préalables pour que le chroot fonctionne correctement :<code bash> | * Quelques réglages préalables pour que le chroot fonctionne correctement :<code bash> | ||
sudo mount --bind /proc squashfs/proc | sudo mount --bind /proc squashfs/proc | ||
- | sudo mount --bind /sys squashfs/sys | + | sudo mount --bind /sys squashfs/sys</code>//Ces lignes permettent |
- | sudo mount -t devpts none squashfs/dev/pts</code> //Ces lignes permettent | + | |
d'utiliser les informations du système hôte// | d'utiliser les informations du système hôte// | ||
<note tip>En cas d'erreur avec ''apt-get'', il peut être utile de mettre : | <note tip>En cas d'erreur avec ''apt-get'', il peut être utile de mettre : | ||
Ligne 130: | Ligne 121: | ||
* Pour pouvoir lancer un serveur PostgreSQL ou un LAMP dans le chroot (il faudra préalablement éteindre les serveurs sur la machine hôte pour éviter les conflits de port)<code bash>sudo cp /etc/hosts squashfs/etc/hosts</code> | * Pour pouvoir lancer un serveur PostgreSQL ou un LAMP dans le chroot (il faudra préalablement éteindre les serveurs sur la machine hôte pour éviter les conflits de port)<code bash>sudo cp /etc/hosts squashfs/etc/hosts</code> | ||
* Pour avoir la même liste de dépôts :<code bash>sudo cp /etc/apt/sources.list squashfs/etc/apt/sources.list</code> | * Pour avoir la même liste de dépôts :<code bash>sudo cp /etc/apt/sources.list squashfs/etc/apt/sources.list</code> | ||
- | <note important>N'utilisez cette commande que si le liveCD | + | <note important>N'utilisez cette commande que si le liveCD |
que vous modifiez et le système à partir duquel vous | que vous modifiez et le système à partir duquel vous | ||
le modifiez sont de la même version d'Ubuntu. | le modifiez sont de la même version d'Ubuntu. | ||
Dans le cas contraire, vous n'installeriez pas sur le liveCD | Dans le cas contraire, vous n'installeriez pas sur le liveCD | ||
les bonnes versions des paquets.</note> | les bonnes versions des paquets.</note> | ||
- | * Vous pouvez alors éditer manuellement les fichiers ''~/iso/squashfs/etc/apt/sources.list'' et ''~/iso/squashfs/etc/apt/sources.list.d/'' pour rajouter des dépôts :<code bash> gksudo gedit squashfs/etc/apt/sources.list</code> | + | * Vous pouvez alors éditer manuellement les fichiers ''~/iso/squashfs/etc/apt/sources.list'' et ''~/iso/squashfs/etc/apt/sources.list.d/'' pour rajouter des dépôts :<code bash>sudo nano squashfs/etc/apt/sources.list</code> |
- | * Si vous souhaitez lancer des applications graphiques, vous devez permettre au chroot d'accéder à X :<code bash>xhost +</code> Sans oublier une fois fini d'enlever cette autorisation avec : <code bash>xhost -</code> | + | * Si vous souhaitez lancer des applications graphiques, vous devez permettre au chroot d'accéder à X :<code bash>xhost +</code>Sans oublier une fois fini d'enlever cette autorisation avec : <code bash>xhost -</code> |
Pour finir, on peut entrer dans le chroot : <code bash>sudo chroot squashfs</code> | Pour finir, on peut entrer dans le chroot : <code bash>sudo chroot squashfs</code> | ||
Ligne 160: | Ligne 151: | ||
</code> | </code> | ||
<note warning>La commande ''apt-get dist-upgrade'' peut amener | <note warning>La commande ''apt-get dist-upgrade'' peut amener | ||
- | une mise à jour du kernel, ce qui vous obligera à une manipulation | + | une mise à jour du kernel, ce qui vous obligera à une manipulation |
supplémentaire à la fin.</note> | supplémentaire à la fin.</note> | ||
Ligne 173: | Ligne 164: | ||
<note tip>Supprimer des paquets peut, par inadvertance, | <note tip>Supprimer des paquets peut, par inadvertance, | ||
- | désinstaller le paquet **ubuntu-desktop** qui est nécessaire au moment | + | désinstaller le paquet **ubuntu-desktop** qui est nécessaire au moment |
d'une mise à niveau de la distribution. Ce paquet devrait donc figurer | d'une mise à niveau de la distribution. Ce paquet devrait donc figurer | ||
sur tout liveCD destiné à être distribué à un certain nombre | sur tout liveCD destiné à être distribué à un certain nombre | ||
- | d'utilisateurs de différents niveaux de compétence. | + | d'utilisateurs de différents niveaux de compétence. |
- | Il est donc bon, après avoir fini de faire les modifications, | + | Il est donc bon, après avoir fini de faire les modifications, |
- | d'utiliser la commande **apt-get install ubuntu-desktop** | + | d'utiliser la commande **apt-get install ubuntu-desktop** |
pour s'assurer que le paquet est toujours installé.</note> | pour s'assurer que le paquet est toujours installé.</note> | ||
Ligne 185: | Ligne 176: | ||
<code bash>gsettings get com.canonical.Unity.Launcher favorites #Pour connaître la liste actuelle | <code bash>gsettings get com.canonical.Unity.Launcher favorites #Pour connaître la liste actuelle | ||
echo "[com.canonical.Unity.Launcher] | echo "[com.canonical.Unity.Launcher] | ||
- | favorites=['nautilus-home.desktop', 'firefox.desktop','ubuntu-software-center.desktop', 'otherapp1.desktop' 'otherapp2.desktop']" > /usr/share/glib-2.0/schemas/10_local-unity-launcher.gschema.override | + | favorites=['nautilus-home.desktop', 'firefox.desktop','ubuntu-software-center.desktop', 'otherapp1.desktop' 'otherapp2.desktop']" >/usr/share/glib-2.0/schemas/10_local-unity-launcher.gschema.override |
glib-compile-schemas /usr/share/glib-2.0/schemas/</code> | glib-compile-schemas /usr/share/glib-2.0/schemas/</code> | ||
Ligne 194: | Ligne 185: | ||
* Il est logique de supprimer les fichiers de cache pour ne pas surcharger le cd :<code bash>apt-get clean</code> | * Il est logique de supprimer les fichiers de cache pour ne pas surcharger le cd :<code bash>apt-get clean</code> | ||
* Et les logs de crash :<code bash>rm -r /var/crash/*</code> | * Et les logs de crash :<code bash>rm -r /var/crash/*</code> | ||
- | * FIXME On peut supprimer le cache : (http://askubuntu.com/questions/87142/safe-to-remove)<code bash>rm -r /var/cache/*</code> | + | * FIXME On peut supprimer le cache : (https://askubuntu.com/questions/87142/safe-to-remove)<code bash>rm -r /var/cache/*</code> |
== Sortie du chroot == | == Sortie du chroot == | ||
Ligne 200: | Ligne 191: | ||
D'autres modifications peuvent se faire à l'extérieur du chroot. | D'autres modifications peuvent se faire à l'extérieur du chroot. | ||
- | * On sort du chroot :<code bash>umount -lf /sys | + | * On sort du chroot :<code bash>exit |
- | umount -lf /proc | + | sudo umount -lf squashfs/sys |
- | umount -lf /dev/pts | + | sudo umount -lf squashfs/proc |
- | umount -lf /dev #dans le cas où on a exécuté sudo mount --bind /dev squashfs/dev pour le problème avec apt | + | sudo umount -lf squashfs/dev/pts |
- | rm /etc/resolv.conf | + | sudo umount -lf squashfs/dev |
- | rm /etc/hosts | + | sudo rm -f squashfs/etc/resolv.conf |
- | exit</code> | + | sudo rm -f squashfs/etc/hosts</code> |
== Insérer des fichiers == | == Insérer des fichiers == | ||
Ligne 250: | Ligne 241: | ||
* Modifier le nom de l'utilisateur<code bash>gksudo gedit squashfs/etc/casper.conf</code> | * Modifier le nom de l'utilisateur<code bash>gksudo gedit squashfs/etc/casper.conf</code> | ||
- | Ce fichier est court et explicite : | + | Ce fichier est court et explicite : |
- | > # This file should go in /etc/casper.conf | + | ># This file should go in /etc/casper.conf |
- | > # Supported variables are: | + | ># Supported variables are: |
- | > # USERNAME, USERFULLNAME, HOST, BUILD_SYSTEM, FLAVOUR | + | ># USERNAME, USERFULLNAME, HOST, BUILD_SYSTEM, FLAVOUR |
- | > | + | |
- | > export USERNAME="ubuntu" | + | |
- | > export USERFULLNAME="Live session user" | + | |
- | > export HOST="ubuntu" | + | |
- | > export BUILD_SYSTEM="Ubuntu" | + | |
> | > | ||
- | > # USERNAME and HOSTNAME as specified above won't be honoured and will be set to | + | >export USERNAME="ubuntu" |
- | > # flavour string acquired at boot time, unless you set FLAVOUR to any | + | >export USERFULLNAME="Live session user" |
- | > # non-empty string. | + | >export HOST="ubuntu" |
- | > | + | >export BUILD_SYSTEM="Ubuntu" |
- | > # export FLAVOUR="Ubuntu" | + | > |
+ | ># USERNAME and HOSTNAME as specified above won't be honoured and will be set to | ||
+ | ># flavour string acquired at boot time, unless you set FLAVOUR to any | ||
+ | ># non-empty string. | ||
+ | > | ||
+ | ># export FLAVOUR="Ubuntu" | ||
- | Modifiez les valeurs à votre convenance. | + | Modifiez les valeurs à votre convenance. |
<note important> | <note important> | ||
- | Par défaut, cet utilisateur possède les droits d'administration | + | Par défaut, cet utilisateur possède les droits d'administration |
- | sans qu'aucun mot de passe ne soit requis. | + | sans qu'aucun mot de passe ne soit requis. |
</note> | </note> | ||
Si vous voulez conserver cette propriété, ne modifiez que la première | Si vous voulez conserver cette propriété, ne modifiez que la première | ||
partie ainsi que la valeur de la variable FLAVOUR | partie ainsi que la valeur de la variable FLAVOUR | ||
- | > export USERNAME="mon_utilisateur" | + | >export USERNAME="mon_utilisateur" |
- | > export USERFULLNAME="mon_utilisateur Live CD" | + | >export USERFULLNAME="mon_utilisateur Live CD" |
- | > export HOST="ubuntu" | + | >export HOST="ubuntu" |
- | > export BUILD_SYSTEM="Ubuntu" | + | >export BUILD_SYSTEM="Ubuntu" |
> | > | ||
- | > # USERNAME and HOSTNAME as specified above won't be honoured and will be set to | + | ># USERNAME and HOSTNAME as specified above won't be honoured and will be set to |
- | > # flavour string acquired at boot time, unless you set FLAVOUR to any | + | ># flavour string acquired at boot time, unless you set FLAVOUR to any |
- | > # non-empty string. | + | ># non-empty string. |
- | > | + | > |
- | > export FLAVOUR="mon_ubuntu_personnalise" | + | >export FLAVOUR="mon_ubuntu_personnalise" |
Et passez directement à la section suivante : régénération du fichier initrd | Et passez directement à la section suivante : régénération du fichier initrd | ||
- | Si vous voulez modifier ce comportement, éditez toutes les occurrences | + | Si vous voulez modifier ce comportement, éditez toutes les occurrences |
ubuntu et remplacez-les par mon_utilisateur, modifiez la valeur de FLAVOUR | ubuntu et remplacez-les par mon_utilisateur, modifiez la valeur de FLAVOUR | ||
- | > export USERNAME="mon_utilisateur" | + | >export USERNAME="mon_utilisateur" |
- | > export USERFULLNAME="mon_utilisateur Live CD" | + | >export USERFULLNAME="mon_utilisateur Live CD" |
- | > export HOST="mon_utilisateur" | + | >export HOST="mon_utilisateur" |
- | > export BUILD_SYSTEM="mon_utilisateur" | + | >export BUILD_SYSTEM="mon_utilisateur" |
+ | > | ||
+ | ># USERNAME and HOSTNAME as specified above won't be honoured and will be set to | ||
+ | ># flavour string acquired at boot time, unless you set FLAVOUR to any | ||
+ | ># non-empty string. | ||
> | > | ||
- | > # USERNAME and HOSTNAME as specified above won't be honoured and will be set to | + | >export FLAVOUR="mon_ubuntu personnalise" |
- | > # flavour string acquired at boot time, unless you set FLAVOUR to any | + | |
- | > # non-empty string. | + | |
- | > | + | |
- | > export FLAVOUR="mon_ubuntu personnalise" | + | |
Et modifiez le mot de passe. | Et modifiez le mot de passe. | ||
Ligne 320: | Ligne 311: | ||
<note important> | <note important> | ||
- | Avec ubuntu 14.04, il semblerait que le fichier 10adduser soit | + | Avec ubuntu 14.04, il semblerait que le fichier 10adduser soit |
- | devenu 25adduser, si vous obtenez un fichier vide avec la ligne | + | devenu 25adduser, si vous obtenez un fichier vide avec la ligne |
ci-dessus essayez en remplaçant 10adduser par 25adduser | ci-dessus essayez en remplaçant 10adduser par 25adduser | ||
</note> | </note> | ||
Repérez la section suivante : | Repérez la section suivante : | ||
- | > set passwd/root-password-crypted * | + | >set passwd/root-password-crypted * |
- | > set passwd/user-password-crypted U6aMy0wojraho | + | >set passwd/user-password-crypted U6aMy0wojraho |
Insérez votre nouveau mot de passe : | Insérez votre nouveau mot de passe : | ||
- | > set passwd/root-password-crypted U5dDh03hz1L6. | + | >set passwd/root-password-crypted U5dDh03hz1L6. |
- | > set passwd/user-password-crypted U5dDh03hz1L6. | + | >set passwd/user-password-crypted U5dDh03hz1L6. |
<note important> | <note important> | ||
Lors du démarrage, l'utilisateur automatiquement créé à UID de 999. | Lors du démarrage, l'utilisateur automatiquement créé à UID de 999. | ||
- | Pour que cette création se passe bien il faut qu'il n'y ait | + | Pour que cette création se passe bien il faut qu'il n'y ait |
aucun utilisateur existant ayant un UID == 999. | aucun utilisateur existant ayant un UID == 999. | ||
Pour détecter le problème, exécutez la commande: | Pour détecter le problème, exécutez la commande: | ||
Ligne 353: | Ligne 344: | ||
* Régénération du fichier initrd | * Régénération du fichier initrd | ||
- | Pour que ces modifications soient prises en compte, il est impératif de | + | Pour que ces modifications soient prises en compte, il est impératif de |
recréer le fichier initrd qui est chargé au boot. Cette étape est | recréer le fichier initrd qui est chargé au boot. Cette étape est | ||
réalisée en chroot (à l'intérieur du système du liveCD). | réalisée en chroot (à l'intérieur du système du liveCD). | ||
<code> | <code> | ||
~/livecd$ sudo chroot squashfs | ~/livecd$ sudo chroot squashfs | ||
- | update-initramfs -k all -u | + | update-initramfs -u -k all |
exit | exit | ||
</code> | </code> | ||
- | Ceci n'est qu'un aperçu des modifications que vous pouvez faire, | + | Ceci n'est qu'un aperçu des modifications que vous pouvez faire, |
il serait impossible de les lister toutes. | il serait impossible de les lister toutes. | ||
Ligne 375: | Ligne 366: | ||
* Tout d'abord, il faut régénérer le fichier manifest pour qu'il prenne en compte les modifications dans les paquets. <code bash> | * Tout d'abord, il faut régénérer le fichier manifest pour qu'il prenne en compte les modifications dans les paquets. <code bash> | ||
sudo chmod a+w iso/casper/filesystem.manifest | sudo chmod a+w iso/casper/filesystem.manifest | ||
- | sudo chroot squashfs dpkg-query -W --showformat='${Package} ${Version}\n' > iso/casper/filesystem.manifest | + | sudo chroot squashfs dpkg-query -W --showformat='${Package} ${Version}\n' >iso/casper/filesystem.manifest |
sudo chmod go-w iso/casper/filesystem.manifest | sudo chmod go-w iso/casper/filesystem.manifest | ||
</code> | </code> | ||
Pour n'avoir certains logiciels qu'en session live, | Pour n'avoir certains logiciels qu'en session live, | ||
- | et qu'ils ne s'installent pas sur l'ordinateur, | + | et qu'ils ne s'installent pas sur l'ordinateur, |
- | il suffit de les ajouter au fichier | + | il suffit de les ajouter au fichier |
<code>iso/casper/filesystem.manifest-remove</code> | <code>iso/casper/filesystem.manifest-remove</code> | ||
Ligne 386: | Ligne 377: | ||
* On recrée le nouveau : <code bash> | * On recrée le nouveau : <code bash> | ||
cd squashfs | cd squashfs | ||
- | sudo mksquashfs . ../iso/casper/filesystem.squashfs -info | + | sudo mksquashfs . ../iso/casper/filesystem.squashfs -comp zstd -Xcompression-level 22 -progress |
cd ..</code> | cd ..</code> | ||
Comme toute compression, cela prend beaucoup de ressources et peut prendre du temps.\\ | Comme toute compression, cela prend beaucoup de ressources et peut prendre du temps.\\ | ||
- | On rajoute -info à la fin qui équivaut à un verbose... pratique | + | On rajoute ''-info'' à la fin qui équivaut à un verbose... pratique |
pour voir l'avancement de la compression (la barre de progression reste visible) | pour voir l'avancement de la compression (la barre de progression reste visible) | ||
et aussi pour voir ce qui pourrait éventuellement bloquer. \\ | et aussi pour voir ce qui pourrait éventuellement bloquer. \\ | ||
Ligne 400: | Ligne 391: | ||
=== Reconstruction de l'iso === | === Reconstruction de l'iso === | ||
- | <note important>Si le noyau a été mis à jour, que vous avez changé | + | <note important>Si le noyau a été mis à jour, que vous avez changé |
- | l'usplash ou que vous avez modifié le compte utilisateur, | + | l'usplash ou que vous avez modifié le compte utilisateur, |
il va falloir remplacer deux fichiers essentiels sur l'image disque, | il va falloir remplacer deux fichiers essentiels sur l'image disque, | ||
que l'on trouve dans ''iso/casper'' : ''vmlinuz'' et ''initrd.lz''.\\ | que l'on trouve dans ''iso/casper'' : ''vmlinuz'' et ''initrd.lz''.\\ | ||
- | On les remplace par les fichiers vmlinuz-* et initrd-img* que | + | On les remplace par les fichiers vmlinuz-* et initrd-img* que |
l'on trouve dans le dossier squashfs/boot : | l'on trouve dans le dossier squashfs/boot : | ||
<code bash>sudo rm -f iso/casper/vmlinuz iso/casper/initrd.lz | <code bash>sudo rm -f iso/casper/vmlinuz iso/casper/initrd.lz | ||
Ligne 417: | Ligne 408: | ||
</code> | </code> | ||
- | * Il ne reste plus qu'à reconstruire l'image ISO :\\ __cas 1__: si le système sur lequel on veut démarrer avec l'iso personnalisée est un système EFI: <code bash>sudo mkisofs -U -A "Custom" -V "Custom" -volset "Custom" -J -joliet-long -r -v -T -o ../Custom.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot .</code> On obtient alors l'iso personnalisée mais elle ne peut être mise que sur un dvd. Pour pouvoir la mettre sur une clé usb, <code bash>sudo isohybrid -u Custom.iso</code>\\ __cas 2__: si le système sur lequel on veut démarrer avec l'iso personnalisée n'est pas un système EFI: <code bash> | + | * Il ne reste plus qu'à reconstruire l'image ISO :\\ __cas 1__: si le système sur lequel on veut démarrer avec l'iso personnalisée est un système EFI: <code bash>sudo mkisofs -U -A "Custom" -V "Custom" -volset "Custom" -J -joliet-long -r -v -T -o ../Custom.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -e boot/grub/efi.img -no-emul-boot .</code>On obtient alors l'iso personnalisée mais elle ne peut être mise que sur un dvd. Pour pouvoir la mettre sur une clé usb, <code bash>sudo isohybrid -u Custom.iso</code>\\ __cas 2__: si le système sur lequel on veut démarrer avec l'iso personnalisée n'est pas un système EFI: <code bash> |
- | sudo mkisofs -r -V "Nom_personnalisé" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o custom-livecd.iso iso </code> Cette commande crée une image iso **custom-livecd.iso**. Et voilà ! | + | sudo mkisofs -r -V "Nom_personnalisé" -cache-inodes -J -l -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -o custom-livecd.iso iso </code>Cette commande crée une image iso **custom-livecd.iso**. Et voilà ! |
- | <note important> Attention mkisofs devient obsolète selon les depots utilisés. | + | <note important>Attention mkisofs devient obsolète selon les depots utilisés. |
La commande équivalente avec genisoimage :</note> | La commande équivalente avec genisoimage :</note> | ||
<code bash> | <code bash> | ||
Ligne 426: | Ligne 417: | ||
Renommer le fichier "nom personnalisé" en "nom personnalisé".iso | Renommer le fichier "nom personnalisé" en "nom personnalisé".iso | ||
- | * Cette image ne peut être copiée que sur DVD. Si vous souhaitez | + | <note important> |
+ | Générer l'iso à partir d'Ubuntu 22.04 est plus complexe, le système semble avoir été modifié | ||
+ | |||
+ | il faut extraire le mbr et l'efi depuis l'iso original, c'est la seule méthode que j'ai pu trouver et qui semble fonctionelle | ||
+ | |||
+ | voici les commandes pour le faire et générer l'iso:</note> | ||
+ | |||
+ | j'ai un peu plus de détail en fait ceci et utilisé pour extraire le système efi | ||
+ | |||
+ | depuis l'image iso d'origine l'exemple ici et pour ubuntu 22.04 desktop amd64 | ||
+ | |||
+ | il faut adapter en fonction de votre iso d'origine | ||
+ | |||
+ | <code bash> | ||
+ | dd if=ubuntu-22.04-desktop-amd64.iso bs=1 count=432 of=~/livecd/boot_hybrid.img | ||
+ | </code> | ||
+ | |||
+ | ici si on liste les partitions présentes sur l'iso | ||
+ | |||
+ | <code bash> | ||
+ | /sbin/fdisk -l ubuntu-22.04-desktop-amd64.iso | ||
+ | |||
+ | Disk ubuntu-22.04-desktop-amd64.iso: 3.4 GiB, 3654957056 bytes, 7138588 sectors | ||
+ | Units: sectors of 1 * 512 = 512 bytes | ||
+ | Sector size (logical/physical): 512 bytes / 512 bytes | ||
+ | I/O size (minimum/optimal): 512 bytes / 512 bytes | ||
+ | Disklabel type: gpt | ||
+ | Disk identifier: A09DB2B8-B5F6-43AE-AFB3-91E0A90189A1 | ||
+ | |||
+ | Device Start End Sectors Size Type | ||
+ | ubuntu-22.04-desktop-amd64.iso1 64 7129427 7129364 3.4G Microsoft basic data | ||
+ | ubuntu-22.04-desktop-amd64.iso2 7129428 7137923 8496 4.2M EFI System | ||
+ | ubuntu-22.04-desktop-amd64.iso3 7137924 7138523 600 300K Microsoft basic data | ||
+ | </code> | ||
+ | |||
+ | ici le système efi démarre (start) à 7129428 | ||
+ | |||
+ | donc on définit skip=7129428 | ||
+ | |||
+ | et le secteur (setors) fait 8496 | ||
+ | |||
+ | donc count=8496 | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | dd if=ubuntu-22.04-desktop-amd64.iso bs=512 skip=7129428 count=8496 of=~/livecd/efi.img | ||
+ | dd if=ubuntu-22.04-desktop-amd64.iso bs=1 count=432 of=~/livecd/boot_hybrid.img | ||
+ | |||
+ | xorriso -as mkisofs -r \ | ||
+ | -V 'Ubuntu 22.04 LTS MODIF (EFIBIOS)' \ | ||
+ | -o ~/livecd/ubuntu-modif.iso \ | ||
+ | --grub2-mbr ~/livecd/boot_hybrid.img \ | ||
+ | -partition_offset 16 \ | ||
+ | --mbr-force-bootable \ | ||
+ | -append_partition 2 28732ac11ff8d211ba4b00a0c93ec93b ~/livecd/efi.img \ | ||
+ | -appended_part_as_gpt \ | ||
+ | -iso_mbr_part_type a2a0d0ebe5b9334487c068b6b72699c7 \ | ||
+ | -c '/boot.catalog' \ | ||
+ | -b '/boot/grub/i386-pc/eltorito.img' \ | ||
+ | -no-emul-boot -boot-load-size 4 -boot-info-table --grub2-boot-info \ | ||
+ | -eltorito-alt-boot \ | ||
+ | -e '--interval:appended_partition_2:::' \ | ||
+ | -no-emul-boot . | ||
+ | </code> | ||
+ | |||
+ | * Cette image ne peut être copiée que sur DVD. Si vous souhaitez | ||
pouvoir copier cette image sur une clé USB, exécutez la commande suivante sur votre ISO :<code bash> | pouvoir copier cette image sur une clé USB, exécutez la commande suivante sur votre ISO :<code bash> | ||
sudo isohybrid "nom personnalisé.iso"</code> | sudo isohybrid "nom personnalisé.iso"</code> | ||
Ligne 443: | Ligne 499: | ||
sudo chown -R root:root squashfs/etc/skel </code> | sudo chown -R root:root squashfs/etc/skel </code> | ||
- | * Vérifiez que les fichiers sont au bon emplacement avec ls. | + | * Vérifiez que les fichiers sont au bon emplacement avec ls. |
* Vous devez voir les fichiers de configuration sous cette forme :<code bash> | * Vous devez voir les fichiers de configuration sous cette forme :<code bash> | ||
ls -la squashfs/etc/skel | ls -la squashfs/etc/skel | ||
Ligne 460: | Ligne 516: | ||
Recommencez à partir de [[#Reconstruction du liveCD]]. | Recommencez à partir de [[#Reconstruction du liveCD]]. | ||
- | Au prochain démarrage de l'image, les fichiers de configuration | + | Au prochain démarrage de l'image, les fichiers de configuration |
seront installés et pris en compte. | seront installés et pris en compte. | ||
===== Liens ===== | ===== Liens ===== | ||
* [[https://help.ubuntu.com/community/LiveCDCustomization]] | * [[https://help.ubuntu.com/community/LiveCDCustomization]] | ||
- | * [[http://liveusb.info/dotclear/|Le script de frafa pour | + | * [[http://liveusb.info/dotclear/|Le script de frafa pour |
- | * créer/customiser des liveCD/USB]] discuté sur ce | + | * créer/customiser des liveCD/USB]] discuté sur ce |
- | * [[http://forum.ubuntu-fr.org/viewtopic.php?id=276821|forum]] | + | * [[https://forum.ubuntu-fr.org/viewtopic.php?id=276821|forum]] |
- | * [[http://forum.ubuntu-fr.org/viewtopic.php?id=424373 | + | * [[https://forum.ubuntu-fr.org/viewtopic.php?id=424373 |
* |Une solution pour personnaliser facilement viso iso de | * |Une solution pour personnaliser facilement viso iso de | ||
* liveCD (Ubuntu/Kubuntu/Xubuntu/lubuntu/Edubuntu/...)]] | * liveCD (Ubuntu/Kubuntu/Xubuntu/lubuntu/Edubuntu/...)]] | ||
* [[:projets:traduction_live_cd#iso_a_creer|Méthodes utilisées | * [[:projets:traduction_live_cd#iso_a_creer|Méthodes utilisées | ||
* pour la création des Editions Francophones d'Ubuntu]] | * pour la création des Editions Francophones d'Ubuntu]] | ||
- | * [[http://forum.ubuntu-fr.org/viewtopic.php?id=412528&p=1| | + | * [[https://forum.ubuntu-fr.org/viewtopic.php?id=412528&p=1| |
* script de smo pour créer/customiser/cloner des distribs | * script de smo pour créer/customiser/cloner des distribs | ||
* avec chroot graphique et export sur usb/iso]] | * avec chroot graphique et export sur usb/iso]] |