4 234
modifications
Aucun résumé des modifications |
|||
(47 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 2 : | Ligne 2 : | ||
[[category:desktop]] | [[category:desktop]] | ||
[[category:debian]] | [[category:debian]] | ||
Manuel complet : | 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 | ==Pour debian jessie :== | ||
<pre> | <pre> | ||
lb config --distribution | 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:// | --mirror-bootstrap http://ftp.fr.debian.org/debian/ --mirror-binary http://deb.debian.org/debian/ \ | ||
--bootappend-live "boot=live | --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> | ||
==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 | ==Pour debian buster :== | ||
<pre> | <pre> | ||
lb config --distribution | 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:// | --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= | ||
== | ==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.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-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-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> | ||
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= | Pin: release a=bullseye-backports | ||
Pin-Priority: 600 | Pin-Priority: 600 | ||
EOF | EOF | ||
</pre> | </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> | <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 | <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> | ||
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 122 : | 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 | 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 ?== | ||
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. | mkdir config/includes.chroot_after_packages/root/ | ||
cat > config/includes. | 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 147 : | Ligne 221 : | ||
==Executer des hooks personnalisée lors du boot== | ==Executer des hooks personnalisée lors du boot== | ||
Il faut | 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 178 : | 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:// | --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" |