« Création d'une image debian bootable (système de rescue, live system) » : différence entre les versions

Aller à la navigation Aller à la recherche
(16 versions intermédiaires par le même utilisateur non affichées)
Ligne 49 : Ligne 49 :
==Notes générales==
==Notes générales==


==Autologin pour debian jessie uniquement==
==Bugfix==
 
===Autologin fix pour debian jessie uniquement===


Pour debian jessie avec systemd, afin d'activer l'autologin, il faut créer un script personnalisé dans <code>config/hooks/live/autologin.hook.chroot</code> :
Pour debian jessie avec systemd, afin d'activer l'autologin, il faut créer un script personnalisé dans <code>config/hooks/live/autologin.hook.chroot</code> :
Ligne 65 : Ligne 67 :
Ce fichier sera exécuté au moment de la création de notre image.
Ce fichier sera exécuté au moment de la création de notre image.


Cette manœuvre n'est pas nécessaire pour debian stretch.
===keymap fix debian stretch/buster===


==hotfix debian stretch/buster afin d'avoir la bonne keymap==
Un [https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=818065 bug] empêche debian stretch/buster de démarrer avec la keymap que vous avez défini lors de l'étape de configuration.<br>
 
Pour le régler ce problème, nous allons créer un fichier exécutable qui sera lancé par live-config lors du démarrage de l'iso et qui va charger la bonne keymap :
A l'heure ou j'écris ces lignes, un [https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=818065 bug] empêche debian stretch de démarrer avec la keymap que vous avez défini lors de l'étape précédente.<br>
Pour le régler temporairement, nous allons créer le fichier hook qui sera lancé par live-config lors du démarrage de l'iso et qui va charger la bonne keymap :
<pre>
<pre>
mkdir -p config/includes.chroot/lib/live/config/
mkdir -p config/includes.chroot/lib/live/config/
Ligne 94 : Ligne 94 :
EOF
EOF
</pre>
</pre>
Notez qu'on utilise un hook lancé durant la construction de notre image, technique qui a l'avantage de préserver le contenu d'origine du fichier <code>/etc/issue</code> installé par debian (généralement, la version de la distribution, qui change donc selon votre configuration à <code>lb config</code>).<br>
Une alternative, quoi que parfois moins fiable, et ne permettant pas de conserver le contenu du fichier d'origine, aurait été de créer un fichier <code>config/includes.chroot_after_packages/etc/issue</code> contenant directement le motd.


==keymap du clavier et configuration de l'utilisateur==
==keymap du clavier et configuration de l'utilisateur==
Ligne 105 : Ligne 108 :
zerofree ethtool net-tools testdisk gddrescue smartmontools hdparm lvm2 psmisc freeipmi ipmitool openipmi gdisk bzip2 zsync > config/package-lists/mypackage.list.chroot</pre>
zerofree ethtool net-tools testdisk gddrescue smartmontools hdparm lvm2 psmisc freeipmi ipmitool openipmi gdisk bzip2 zsync > config/package-lists/mypackage.list.chroot</pre>


==installer un package depuis les dépots backports==
Pour installer un package depuis les dépots backports (sous réserve que vous ayez activez ces dépots à l'opération <code>lb config</code> :
<pre>echo "smartmontools/bullseye-backports" > config/package-lists/mypackage-bpo.list.chroot</pre>


==Pinner un package depuis les dépots backports==
Pendant le chroot uniquement :
<pre>
<pre>
cat >> config/archives/backports.pref.chroot << EOF
cat >> config/archives/backports.pref.chroot << EOF
Package: smartmontools
Package: smartmontools
Pin: release a=jessie-backports
Pin: release a=bullseye-backports
Pin-Priority: 600
Pin-Priority: 600
EOF
</pre>


Package: e2fsprogs
Dans l'image définitive :
Pin: release a=jessie-backports
<pre>
cat >> config/archives/backports.pref.binary << EOF
Package: smartmontools
Pin: release a=bullseye-backports
Pin-Priority: 600
Pin-Priority: 600
EOF
EOF
Ligne 125 : Ligne 137 :
</pre>
</pre>


Pour que le dépôt soit accessible sur le système définitif créé :
Pour que le dépôt soit accessible sur le système définitif créé (après avoir booté l'iso) :
<pre>
<pre>
echo "deb http://mirror/debian/ sid main" > config/archives/sid.list.binary
echo "deb http://mirror/debian/ sid main" > config/archives/sid.list.binary
Ligne 132 : Ligne 144 :
Si ce dépôt requiert une clé gpg, déposez sa version texte (armored) dans <code>config/archives/sid.key.chroot</code> et/ou <code>config/archives/sid.key.binary</code>
Si ce dépôt requiert une clé gpg, déposez sa version texte (armored) dans <code>config/archives/sid.key.chroot</code> et/ou <code>config/archives/sid.key.binary</code>


==boot automatique==
==Modification du boot==
Pour ajouter un boot automatique au bout de 30secondes (par défaut lb config utilise isolinux comme bootloader) :
 
Les différents bootloaders utilisés sont situés dans <code>/usr/share/live/build/bootloaders/</code><br>
Vous pouvez les copier intégralement ou partiellement dans <code>config/bootloaders/</code><br>
 
Par défaut, pour les images iso et iso-hybrid, c'est isolinux qui est utilisé, agrémenté en supplément des fichiers situés dans le dossier <code>syslinux_common</code>
 
===boot automatique isolinux===
Pour ajouter un boot automatique au bout de 30secondes :
<pre>
<pre>
mkdir config/bootloaders/
mkdir config/bootloaders/
Ligne 141 : Ligne 160 :


Un timeout de 0 signifie infini, les unités sont des dixièmes de secondes.
Un timeout de 0 signifie infini, les unités sont des dixièmes de secondes.
===Modifier les entrées du boot isolinux===
<pre>
mkdir config/bootloaders/
cp -R /usr/share/live/build/bootloaders/syslinux_common/ config/bootloaders/syslinux_common/
</pre>
Puis éditez le fichier <code>config/bootloaders/syslinux_common/live.cfg.in</code>


==openssh==
==openssh==
Ligne 160 : Ligne 187 :
Les clés serveurs openssh seront automatiquement supprimés après l'installation par le fichier <code>config/hooks/0160-remove-openssh-server-host-keys.hook.chroot</code>, puis régénéré lors du boot par live-config.
Les clés serveurs openssh seront automatiquement supprimés après l'installation par le fichier <code>config/hooks/0160-remove-openssh-server-host-keys.hook.chroot</code>, puis régénéré lors du boot par live-config.


Dans le cas ou vous installez un serveur ssh, il sera bon de changer le mot-de-passe utilisateur. Vous pouvez vous inspirer du fichier <code>/usr/share/doc/live-config/examples/hooks/passwd</code> pour créer une hook réalisant celà.
Dans le cas ou vous installez un serveur ssh, il peut être préférable de changer le mot-de-passe utilisateur. Vous pouvez vous inspirer du fichier <code>/usr/share/doc/live-config/examples/hooks/passwd</code> pour créer une hook réalisant cela.<br>
Notez tout de même que par défaut, au démarrage de l'iso, le login password ssh est désactivé (fichier <code>/lib/live/config/1160-openssh-server</code>)


Note :  
<br>Note :  
* Pour l'ajout de la clé ssh, nous aurions aussi pu créer un fichier <code>config/includes.chroot/root/.ssh/authorized_keys</code>
* Pour l'ajout de la clé ssh, nous aurions aussi pu créer un fichier <code>config/includes.chroot_after_packages/root/.ssh/authorized_keys</code>
* Néanmoins, pour exécuter la commande sed qui modifie la configuration openssh, nous sommes obligé de passé par une hook/live afin d'éditer la configuration après que le système du chroot ait été installé
* Néanmoins, pour exécuter la commande sed qui modifie la configuration openssh, nous sommes obligé de passer par une hook/live afin d'éditer la configuration après que le système du chroot ait été installé (et donc après que openssh soit installé et configuré).
* Alternativement, et depuis Debian Bullseye, il serait également possible d'utiliser le dossier <code>config/includes.chroot_after_packages</code> afin de remplacer totalement la configuration de openssh
* Alternativement, il serait également possible d'utiliser le dossier <code>config/includes.chroot_after_packages/</code> afin de remplacer totalement la configuration de openssh (ce qui implique également que vous assumiez totalement les mises à jour de la configuration de openssh de version en version de debian)


==Un petit README pour terminer ?==
==Un petit README pour terminer ?==


Le dossier <code>config/includes.chroot/</code> permet d'ajouter des dossiers et fichiers au système de fichier debian qui sera créé pour cette image.
Les dossiers <code>config/includes.chroot_after_packages/</code> et <code>config/includes.chroot_before_packages/</code> permettent d'ajouter des dossiers et fichiers qui sont incorporés au système de fichier créé. Ces fichiers sont transférés soit avant l'installation des paquets, soit après.


<pre>
<pre>
mkdir config/includes.chroot/root/
mkdir config/includes.chroot_after_packages/root/
chmod 750 config/includes.chroot/root/
chmod 750 config/includes.chroot_after_packages/root/
cat > config/includes.chroot/root/README << EOF
cat > config/includes.chroot_after_packages/root/README << EOF
Vous pouvez créer les fichiers que vous voulez de cette manière afin de les inclures dans le système de fichier de linux
Vous pouvez créer les fichiers que vous voulez de cette manière afin de les inclures dans le système de fichier de linux
EOF
EOF
</pre>
</pre>
Attention, ces fichiers écrasent les fichiers pré-existant installés automatiquement par debian !


==Un petit README a la root de l'iso ?==
==Un petit README a la root de l'iso ?==
Ligne 191 : Ligne 221 :
==Executer des hooks personnalisée lors du boot==
==Executer des hooks personnalisée lors du boot==


Il faut les créer dans <code>config/includes.chroot/lib/live/config/</code>
Il faut créer des fichiers exécutables dans <code>config/includes.chroot/lib/live/config/</code><br>
Ces fichiers seront exécutés lors du démarrage de l'iso, juste avant que vous obteniez un prompt.


=Création de l'image=
=Création de l'image=
4 203

modifications

Menu de navigation