Créer son propre live CD

Nous allons ici personnaliser un live Debian avec la possibilité de s'y connecter via SSH sans que le système soit installé. Il est bien sûr possible d'y apporter d'autres modifications. La plus part des distributions comme Lubuntu, Mate, Ubuntu proposent une distribution Live. C'est ce que nous allons voir ici dans ce tutoriel.

Au cas où si je n'ai pas été assez explicite dans ma démarche ou que vous souhaitez en savoir plus, voici l'article qui m'a inspiré. Si besoin, il reste toujours, le manuel du système live.

Pré-requis

Tout d'abord, nous récupérons les outils dont nous avons besoins :

apt install live-build live-manual live-tools

Nous créons ensuite notre environnement de travail :

mkdir /mnt/custom-live-cd && cd /mnt/custom-live-cd

Configuration de base

Nous lançons la commande suivante pour importer les configurations concernant les méthodes de constructions :

lb config

Nous définissons les options définissant le live CD :

nano auto/config
#!/bin/sh

set -e

lb config noauto \
--mode "debian" \
--system "live" \
--architectures "amd64" \
--distribution "jessie" \
--archive-areas "main contrib non-free" \
--security "true" \
--updates "true" \
--backports "true" \
--binary-images "iso-hybrid" \
--bootappend-live "locale=en_US.UTF-8 keyb=fr" \
--apt-indices "true" \
--apt-recommends "false" \
--apt-secure "true" \
--apt-source-archives "true" \
--linux-package "linux-image" \
--bootloader "syslinux" \
--debian-installer "live" \
--debian-installer-gui "true" \
--iso-application "handylinux" \
--iso-volume "handylinux" \
--bootappend-live "locale=en_US.UTF-8 keyb=fr" \
--parent-mirror-bootstrap "http://mirror.evolix.org/debian/" \
--parent-mirror-chroot "http://mirror.evolix.org/debian/" \
--parent-mirror-binary "http://mirror.evolix.org/debian/" \
--parent-mirror-chroot-backports "http://mirror.evolix.org/debian/" \
--parent-mirror-binary-backports "http://mirror.evolix.org/debian/" \
--memtest "none" \
--clean \
--debug \
--verbose \
--source "false" \
"${@}"

Choisir les paquets à installer

Nous pouvons sélectionner les paquets a installer :

nano config/package-lists/live.list.chroot
live-boot
live-config
live-config-systemd
debootstrap
vim
tmux
mutt
postfix
mailutils

Importer des scripts

Il est possible d'utiliser ses propres scripts qui seront lancé suite à l'installation des paquets cité plus haut :

nano config/hooks/copy-keys-ssh.hook.chroot
#!/bin/sh
 
set -e
 
mkdir -p /root/.ssh
chown root.root /root/.ssh
echo "ssh-rsa AAAAB3Nz[...]RdjcgFQH$ utilisateur@domaine.com" > /root/.ssh/authorized_keys

Modifier le système de base

Il est également possible d'y inclure directement des fichiers et dossiers dans le futur système. Reprenons l'exemple utilisé pour importer une clé publique SSH.

Il suffira alors de procéder à ces étapes :

mkdir config/includes.chroot/root/.sshlive-image-amd64.hybrid.iso
echo "ssh-rsa AAAAB3NzaC1yc2EAAAAD[...]ZDEF utilisateur@domaine.com" > config/includes.chroot/root/.ssh/authorized_keys

Toutes les modifications seront à faire dans le dossier config/includes.chroot/ qui reprend l'arborescence d'un système. Ainsi chaque fichiers et dossiers crées seront importé dans un vrai chroot lors de la construction du live CD.

Modifier le menu du boot

Par défaut, l'interface n'est pas très jolie et heureusement qu'il est possible de la modifier dans le dossier suivant :

mkdir config/includes.binary/isolinux/

Au minimum, il serait bien de modifier le menu :

nano config/includes.binary/isolinux/live.cfg
live.cfg
default live
 
label live
  menu label ^Debian Live CD (Jessie x86)
  linux /live/vmlinuz
  initrd /live/initrd.img
  append boot=live config quiet splash

Ensuite, on peut modifier l'image d'arrière plan situé nommé splash.png.

Le temps de chargement peut être réduit si l'on veut le faire booter plus rapidement :

nano config/includes.binary/isolinux/isolinux.cfg
isolinux.cfg
include menu.cfg
default vesamenu.c32
prompt 0
timeout 10

Construction de l'ISO

La dernière étape est la plus simple car la construction de l'ISO demande une seule commande :

lb build

Ainsi l'image se nommera par exemple : live-image-amd64.hybrid.iso

Si l'on souhaite y apporter des modifications alors on devra exécuter ces deux commandes :

lb clean
lb build