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

Aller à la navigation Aller à la recherche
 
(95 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]]


=Via le web=
Manuel complet : https://live-team.pages.debian.net/live-manual/html/live-manual/index.en.html
Génération : http://cgi.build.live-systems.org/cgi-bin/live-build
(le mieux est d'utiliser standard en package list)


Vous pouvez ajouter des packages à installer à la ligne cgipackages.list.chroot
=Paquets nécessaires=


Password user : live
Password root : aucun (se su avec sudo -i)
Pour générer une image en français passez le paramètre suivant dans la section <code>Advanced binary options:</code> :
<pre>--bootappend-live: locales=fr_FR.UTF-8 keyboard-layouts=fr noprompt</pre>
install-keymap /usr/share/keymaps/i386/querty/fr-latin9*
ou
loadkeys usr/share/keymaps/i386/querty/fr-latin9*
=Vous même=
<pre>aptitude install live-build</pre>
<pre>aptitude install live-build</pre>


Ligne 30 : Ligne 13 :
</pre>
</pre>


Pour debian wheezy :
=Préparation de l’environnement=
 
==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+ --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 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"
</pre>
</pre>


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


Un peu de tunning : <code>config/hooks/motd.chroot</code> :
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>
 
==Minimiser la taille de l'image==
 
Vous pouvez ajouter l'option <code>--debootstrap-options "--variant=minbase"</code> à <code>lb config</code> pour réduire la taille de l'iso généré. Cela désactivera entre autre les fonctionnalités réseaux et crontab.
Notez que pour qu'une telle image soit bootable, il faut ajouter les paquets <code>init</code> et <code>systemd-sysv</code> en les énumérant par exemple dans le fichier <code>config/package-lists/mandatory.list.chroot</code>
 
==MOTD au shell==
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 76 : Ligne 100 :
</pre>
</pre>


Pour avoir la console en keymap française, ajoutez les paquets <code>console-setup console-setup-linux</code> dans la liste des paquets a installer
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>
<pre>echo console-setup console-setup-linux >> config/package-lists/keymap.list.chroot</pre>
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==
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==
Pour installer une liste personnalisée de package, créez un fichier <code>mespackets.list.chroot</code> dans <code>config/package-lists</code> :
<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 \
zerofree ethtool net-tools testdisk gddrescue smartmontools hdparm lvm2 psmisc freeipmi ipmitool openipmi gdisk bzip2 zsync > config/package-lists/mypackage.list.chroot</pre>
 
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>
cat >> config/archives/backports.pref.chroot << EOF
Package: smartmontools
Pin: release a=bullseye-backports
Pin-Priority: 600
EOF
</pre>
 
Dans l'image définitive :
<pre>
cat >> config/archives/backports.pref.binary << EOF
Package: smartmontools
Pin: release a=bullseye-backports
Pin-Priority: 600
EOF
</pre>
 
==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>
echo "deb http://mirror/debian/ sid main" > config/archives/sid.list.chroot
</pre>
 
Pour que le dépôt soit accessible sur le système définitif créé (après avoir booté l'iso) :
<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>
mkdir config/bootloaders/
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>
 
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==
On peut ajouter des clés ssh de la même manière :
<pre>
cat > config/hooks/live/addsshkey.hook.chroot << EOF
#!/bin/sh
set -e
mkdir /root/.ssh/
echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG0Z4ITNfoPG0+L5UMyY253C5CA8JQcWZHb9Hd/nuWaj pfoo@laptop" > /root/.ssh/authorized_keys
sed -i "s/PermitRootLogin no/PermitRootLogin without-password/g" /etc/ssh/sshd_config
EOF
</pre>
 
Notez qu'on modifie en même temps la configuration du serveur openssh afin d'autoriser la connexion root avec des clés.<br>
Tout celà n'a d'intérêt que si on installe aussi openssh :
<pre>echo openssh-server >> config/package-lists/ssh.list.chroot</pre>
 
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.


Pour installer une liste personnalisée de package, après avoir lancé <code>lb config</code>, créez un fichier <code>mespackets.list.chroot</code> dans <code> config/package-lists</code> :
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>
<pre>echo whois dnsutils htop jnettop tcpdump mtr telnet git iperf wget curl rsync screen patch \
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>)
parted nmap binutils lsof dosfstools ntfs-3g debootstrap pciutils usbutils lsb-release debian-goodies \
zerofree ethtool testdisk gddrescue smartmontools hdparm lvm2 psmisc freeipmi ipmitool openipmi > config/package-lists/mypackage.list.chroot</pre>


Pour permettre a votre iso de booter automatiquement :
<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 ?==
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>
mkdir config/includes.chroot_after_packages/root/
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
EOF
</pre>
Attention, ces fichiers écrasent les fichiers pré-existant installés automatiquement par debian !
==Un petit README a la root de l'iso ?==
Le dossier <code>config/includes.binary/README</code> permet de créer des fichiers ou dossier à la racine de l'iso (ils seront donc accessible même si vous branchez votre future clé usb / cdrom sous windows par exemple)
<pre>
cat > config/includes.binary/README << EOF
Vous pouvez créer les fichiers que vous voulez de cette manière, ils seront situés directement à la racine de l'iso
EOF
</pre>
==Executer des hooks personnalisée lors du boot==
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=


Enfin, pour lancer la création de l'image :
Enfin, pour lancer la création de l'image :
Ligne 92 : Ligne 236 :
</pre>
</pre>


==ajouter memtest : méthode manuelle==
=ajouter memtest : méthode manuelle=
Notez que si vous avez suivi ce wiki, vous devriez déjà avoir memtest installé (<code>--memtest memtest86+</code>), vous n'avez donc rien à faire. Memtest se situ dans le menu advanced au boot.
Notez que si vous avez suivi ce wiki, vous devriez déjà avoir memtest installé (<code>--memtest memtest86+</code>), vous n'avez donc rien à faire. Memtest se situ dans le menu advanced au boot.


Ligne 102 : Ligne 246 :
lb binary_iso --force
lb binary_iso --force
</pre>
</pre>
==Boot automatique==
Modifiez le fichie <code>binary/isolinux/isolinux.cfg</code> (la ligne timeout est en dixième de secondes)
Puis régénérez l'iso
<pre>lb binary_iso --force</pre>


=image usb uniquement=
=image usb uniquement=
Ligne 119 : Ligne 258 :
--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 "persistence boot=live 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"
</pre>
</pre>
Ligne 141 : Ligne 280 :
/var/cache/apt
/var/cache/apt
</pre>
</pre>
Si on vous tout simplement garder la totalité des donnée sur le stockage persistant :
<pre>/ union</pre>


=Modifier une iso déjà préparée=
=Modifier une iso déjà préparée=
4 231

modifications

Menu de navigation