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

Aller à la navigation Aller à la recherche
(44 versions intermédiaires par le même utilisateur non affichées)
Ligne 2 : Ligne 2 :
[[category:desktop]]
[[category:desktop]]
[[category:debian]]
[[category:debian]]
[[category:bureautique]]


Manuel complet : http://debian-live.alioth.debian.org/live-manual/stable/manual/html/live-manual.en.html
Manuel complet : https://live-team.pages.debian.net/live-manual/html/live-manual/index.en.html


=Paquets nécessaires=
=Paquets nécessaires=
Ligne 16 : Ligne 15 :
=Préparation de l’environnement=
=Préparation de l’environnement=


==Pour debian wheezy :==
==Pour debian jessie :==
<pre>
<pre>
lb config --distribution wheezy --binary-images iso-hybrid --architectures amd64 --linux-flavours amd64 \
lb config --distribution jessie --binary-images iso-hybrid --architectures amd64 --linux-flavours amd64 \
--archive-areas "main contrib non-free" --apt-indices false \
--archive-areas "main contrib non-free" --apt-indices false \
--memtest memtest86+ --updates true --backports true \
--memtest memtest86+ --security true --updates true --backports true \
--mirror-bootstrap http://ftp.fr.debian.org/debian/ --mirror-binary http://ftp.fr.debian.org/debian/ \
--mirror-bootstrap http://ftp.fr.debian.org/debian/ --mirror-binary http://deb.debian.org/debian/ \
--bootappend-live "boot=live config locales=en_US.UTF-8 keyboard-layouts=fr hostname=rescue \
--bootappend-live "boot=live components timezone=Europe/Paris locales=en_US.UTF-8 keyboard-layouts=fr hostname=rescue \
username=user noprompt noeject"
username=user noprompt noeject autologin"
</pre>
</pre>


Attention, si vous utilisez live-build 4.X pour générer l'image, il faut remplacer l'option <code>config</code> par <code>components</code>
==Pour debian stretch :==
<pre>
lb config --distribution stretch --binary-images iso-hybrid --architectures amd64 --linux-flavours amd64 \
--archive-areas "main contrib non-free" --apt-indices false \
--memtest memtest86+ --security true --updates true --backports true \
--mirror-bootstrap http://ftp.fr.debian.org/debian/ --mirror-binary http://deb.debian.org/debian/ \
--bootappend-live "boot=live components timezone=Europe/Paris locales=en_US.UTF-8 keyboard-layouts=fr hostname=rescue \
username=user noprompt noeject autologin"
</pre>


==Pour debian jessie :==
==Pour debian buster :==
<pre>
<pre>
lb config --distribution jessie --binary-images iso-hybrid --architectures amd64 --linux-flavours amd64 \
lb config --distribution buster --binary-images iso-hybrid --architectures amd64 --linux-flavours amd64 \
--archive-areas "main contrib non-free" --apt-indices false \
--archive-areas "main contrib non-free" --apt-indices false \
--memtest memtest86+ --security true --updates true --backports true \
--memtest memtest86+ --security true --updates true --backports true \
--mirror-bootstrap http://ftp.fr.debian.org/debian/ --mirror-binary http://ftp.fr.debian.org/debian/ \
--mirror-bootstrap http://ftp.fr.debian.org/debian/ --mirror-binary http://deb.debian.org/debian/ \
--bootappend-live "boot=live components timezone=Europe/Paris locales=en_US.UTF-8 keyboard-layouts=fr hostname=rescue \
--bootappend-live "boot=live components timezone=Europe/Paris locales=en_US.UTF-8 keyboard-layouts=fr hostname=rescue \
username=user noprompt noeject autologin"
username=user noprompt noeject autologin"
Ligne 40 : Ligne 47 :
=Tunning=
=Tunning=


==Autologin pour debian jessie==
==Notes générales==
 
==Bugfix==


Pour debian jessie avec systemd, afin d'activer l'autologin, il faut créer un script personnalisé dans <code>config/hooks/autologin.chroot</code> :
===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> :
<pre>
<pre>
cat > config/hooks/autologin.hook.chroot << EOF
cat > config/hooks/live/autologin.hook.chroot << EOF
#!/bin/sh
#!/bin/sh
set -e
set -e
Ligne 55 : Ligne 66 :


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.
===keymap fix debian stretch/buster===
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 :
<pre>
mkdir -p config/includes.chroot/lib/live/config/
chmod 755 config/includes.chroot/lib/ config/includes.chroot/lib/live/ config/includes.chroot/lib/live/config/
cat > config/includes.chroot/lib/live/config/9999-fix-keymap << EOF
#!/bin/sh
#/etc/init.d/console-setup restart
/bin/setupcon
EOF
chmod 755 config/includes.chroot/lib/live/config/9999-fix-keymap
</pre>


==MOTD au shell==
==MOTD au shell==
Un peu de tunning : <code>config/hooks/motd.chroot</code> :
Un peu de tunning : <code>config/hooks/live/motd.hook.chroot</code> :
<pre>
<pre>
cat > config/hooks/motd.chroot << EOF
cat > config/hooks/live/motd.hook.chroot << EOF
#!/bin/sh
#!/bin/sh
set -e
set -e
Ligne 69 : Ligne 95 :
</pre>
</pre>


==keymap du clavier==
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>
Pour avoir la console en keymap française, ajoutez les paquets <code>console-data console-setup console-setup-linux</code> dans la liste des paquets a installer
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.
<pre>echo console-data console-setup console-setup-linux >> config/package-lists/keymap.list.chroot</pre>
 
==keymap du clavier et configuration de l'utilisateur==
Pour avoir la console en keymap française et assurer la création de l'utilisateur live, ajoutez les paquets <code>console-data console-setup console-setup-linux user-setup</code> dans la liste des paquets a installer
<pre>echo console-data console-setup console-setup-linux user-setup >> config/package-lists/keymap.list.chroot</pre>


==Liste personnalisée de packages==
==Liste personnalisée de packages==
Ligne 77 : Ligne 106 :
<pre>echo whois dnsutils htop jnettop tcpdump mtr telnet git iperf iperf3 wget curl rsync screen patch aptitude lm-sensors lshw \
<pre>echo whois dnsutils htop jnettop tcpdump mtr telnet git iperf iperf3 wget curl rsync screen patch aptitude lm-sensors lshw \
parted nmap binutils lsof dosfstools ntfs-3g debootstrap pciutils usbutils lsb-release debian-goodies fancontrol \
parted nmap binutils lsof dosfstools ntfs-3g debootstrap pciutils usbutils lsb-release debian-goodies fancontrol \
zerofree ethtool testdisk gddrescue smartmontools hdparm lvm2 psmisc freeipmi ipmitool openipmi gdisk bzip2 > 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
</pre>
</pre>


==Ajouter un dépot personnalisé==
==Ajouter un dépôt personnalisé==
 
Pour que le dépôt soit accessible durant la création de l'image (permettant donc d'installer un paquet sur l'image) :
<pre>
<pre>
echo "deb http://mirror/debian/ sid main" > config/archives/sid.list.chroot
echo "deb http://mirror/debian/ sid main" > config/archives/sid.list.chroot
</pre>
</pre>


==boot automatique==
Pour que le dépôt soit accessible sur le système définitif créé (après avoir booté l'iso) :
Pour ajouter un boot automatique (par défaut lb config utilise isolinux comme bootloader) :
<pre>
echo "deb http://mirror/debian/ sid main" > config/archives/sid.list.binary
</pre>
 
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>
 
==Modification du boot==
 
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/
cp -R /usr/share/live/build/bootloaders/isolinux/ config/bootloaders/isolinux/
cp -R /usr/share/live/build/bootloaders/isolinux/ config/bootloaders/isolinux/
sed -i "s/timeout 0/timeout 300/g" config/bootloaders/isolinux/isolinux.cfg
</pre>
</pre>


Puis éditez config/bootloaders/isolinux/isolinux.cfg (un timer 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==
On peut ajouter des clés ssh de la même manière :
On peut ajouter des clés ssh de la même manière :
<pre>
<pre>
cat > config/hooks/addsshkey.chroot << EOF
cat > config/hooks/live/addsshkey.hook.chroot << EOF
#!/bin/sh
#!/bin/sh
set -e
set -e
Ligne 126 : 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>)
 
<br>Note :
* 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 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, 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/
cat > config/includes.chroot/root/README << EOF
chmod 750 config/includes.chroot_after_packages/root/
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 151 : 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=
Ligne 182 : Ligne 253 :
--archive-areas "main contrib non-free" --apt-indices false \
--archive-areas "main contrib non-free" --apt-indices false \
--memtest memtest86+ --updates true --backports true \
--memtest memtest86+ --updates true --backports true \
--mirror-bootstrap http://ftp.fr.debian.org/debian/ --mirror-binary http://ftp.fr.debian.org/debian/ \
--mirror-bootstrap http://deb.debian.org/debian/ --mirror-binary http://deb.debian.org/debian/ \
--bootappend-live "boot=live persistence components locales=en_US.UTF-8 keyboard-layouts=fr hostname=rescue \
--bootappend-live "boot=live persistence components locales=en_US.UTF-8 keyboard-layouts=fr hostname=rescue \
username=user noprompt noeject autologin"
username=user noprompt noeject autologin"
4 203

modifications

Menu de navigation