Linux Embedded

Le blog des technologies libres et embarquées

Crée un CD d’installation d’une debian spécialisée

Parfois un système embarqué se résume à un serveur spécifique et quelques applicatifs. Dans ce cas l’utilisation d’une distribution standard peut être préférable à un buildroot ou autre openembedded. Ici nous avons fait le choix de debian et nous voudrions avoir un CD d’installation complet de notre système.

Debian fourni un outil permettant de créer rapidement un CD personnalisé : simple-cdd, cet outil est constitué d’un ensemble de scripts autour de l’outil debian-cd utilisé pour faire les CD officiels de debian.

Dans notre cas le système contient à la fois des paquetages de « non-free » (des firmwares par exemple) et des paquetages spécifiques à notre application.

Mise en œuvre de simple-cdd

Simple-cdd récupère certains éléments de configuration depuis la machine hôte, il est donc préférable de travailler sur une machine similaire à la machine destination (en particulier la même architecture: amd64 ou i386).

Nous allons travailler dans un dossier de travail qui comportera la configuration et les éléments spécifiques de notre CD.

Pour commencer créez un fichier de configuration « my-cdd.conf » et préciser le miroir à utiliser ainsi que les composants :

debian_mirror="http://ftp2.fr.debian.org/debian/"
mirror_components="main contrib non-free"

Lancez une première fois l’outil. Cette opération prépare un miroir local des paquetages nécessaires qui sera réutilisé par la suite. Elle peut donc être un peu longue.

build-simple-cdd --conf ./my-cdd.conf

Une fois la commande terminée vous devriez avoir une première image de CD dans le dossier « images ».

Personnalisation de l’image

Pour personnaliser notre image nous allons crée un profile « my-profile » définissant les paquetages à installer sur notre système et les paquetages supplémentaires à prévoir sur le CD (paquetages de développement par exemple).

Créez le dossier « profiles »

mkdir profiles

Sélection des paquetages

Si vous disposez d’une machine préinstallée (la machine de test par exemple) vous pouvez demander à dpkg de vous donner la liste des paquetages installés :

dpkg --get-selections >package-list

Dans ce fichier seul le nom des paquetages dans l’état ‘install’ nous intéresse :

grep -e '\<install$' package-list | awk '{print $1};' >profiles/my-profile.downloads

Ici nous avons demandé à simple-cdd de télécharger ces paquetages pour les mettre sur le CD. La liste des paquetages à installer, quand à elle, se trouve dans le fichier « my-profile.packages ». Il n’est pas utile de mettre tout les paquetages dans ce fichiers, seulement les programmes à installer car l’outil sait résoudre les dépendances.

Paquetages spécifiques

Nous avons des paquetages spécifiques à ajouter au CD, il s’agit des paquetages propres à notre application qui ne sont donc pas présents sur les dépôts de debian.

Créons un dossier « local_pkg » et copions-y tous nos paquetages.

Enfin mettons à jours la configuration pour utiliser ces nouveaux fichiers et installer automatiquement le profile « my-profile » :

debian_mirror="http://ftp2.fr.debian.org/debian/"
mirror_components="main contrib non-free"
simple_cdd_dir=$(pwd)
profiles="my-profile"
auto_profiles="my-profile"
local_packages="$simple_cdd_dir/local_pkg/"

Si vous lancer à nouveau l’outil vous deviez obtenir un CD d’installation complet !

build-simple-cdd --conf ./my-cdd.conf

Toutefois, si vous avez oublié des paquetages spécifiques (ou des dépendances) ceux-ci ne seront pas présents. Cherchez dans les messages une ligne du type :

WARNING: missing optional packages from profile my-profile: libevent-2.0-5 [...]

Dans ce cas il s’agit de la libevent issue des backports de squeeze, l’outil ne supportant pas les backports, il suffit d’ajouter ces paquetages au dossier « local_pkg ».

Personnalisation de l’installeur

Simple-cdd utilise automatiquement un profile nommé « default ». Il se peut que ce profile ne corresponde pas à votre besoin. Pour le surcharger il suffit de placer les fichiers modifiés dans le dossier « profiles ».

Pour ce faire, commencez par copier le fichier voulu en provenance de « /usr/share/simple-cdd/profiles/ », puis modifiez le, par exemple le fichier « default.pressed » :

cp /usr/share/simple-cdd/profiles/default.pressed  profiles

Puis dans ce fichier modifiez les options qui vous intéressent, par exemple les options de partitionnement. Enfin comme nous avons activé « contrib » et « non-free », vous devriez donc décommenter les lignes :

d-i apt-setup/non-free  boolean true
d-i apt-setup/contrib boolean true

Ajout de fichiers supplémentaires au CD

Enfin nous voulons ajouter la documentation de notre projet, des sources ou d’autre fichier.

Simple-cdd fournit un mécanisme pour ajouter des fichiers dans le dossier « simple-cdd » du CD, mais si nous voulons ajouter toute une arborescence, cela n’est pas prévu.

Toutefois, de même que nous pouvons surcharger les profiles, nous pouvons surcharger certains scripts, en particulier le script « tools/build/debian-cd » qui prépare le CD.

mkdir -p tools/build
cp /usr/share/simple-cdd/tools/build/debian-cd tools/build

puis ajoutons les lignes suivantes après le nettoyage de « $extras_base_dir »

if [ -d "$cd_extras" ]; then
    mkdir -p "$extras_base_dir"
    cp -a "$cd_extras/." "$extras_base_dir"
fi

Enfin ajoutons la variable « cd_extras » à notre fichier de configuration :

cd_extras="$simple_cdd_dir/local_extras/"

Ainsi l’arborescence crée dans le dossier « local_extras » serra reproduite à la racine du CD.

Faite attention de ne pas crée de conflits avec d’autres fichiers du CD car il se peut que rien ne vous le signale !

Conclusion

Nous avons maintenant un mécanisme pour construire un CD d’installation de debian pouvant aussi contenir tous autres fichiers que nous voudrions livrer avec notre système, les sources et la documentation par exemple.

5 commentaires sur “ Crée un CD d’installation d’une debian spécialisée ”

  1. le 25 juin 2013 à 17 h 09 min

    merci beaucoup pour cet excellent article.
    je me suis permis de le reprendre dans la section alternative du forum crunchbanglinux-fr (source et auteur cités bien sûr):
    http://crunchbanglinux-fr.org/forum/viewtopic.php?pid=34797#p34797

    • Julien Viard de Galbert
      le 26 juin 2013 à 12 h 32 min

      Juste une précision, sur le forum vous parlez de “live CD”, or il s’agit ici de faire un CD d’installation type Debian. Donc oui c’est un CD bootable, mais il ne permet pas de tester Debian sans installation.

  2. le 28 juin 2013 à 17 h 12 min

    si je veux l’installateur du cdrom wheezy avec les paquets de squeeze
    pour la gnome tradition,on fait comment ?

    • Julien Viard de Galbert
      le 1 juillet 2013 à 10 h 28 min

      A priori en copiant les paquets de gnome dans local_pkg cela ne marchera pas car l’outil va chercher à prendre les paquets les plus récents, donc ceux de wheezy (gnome 3).
      Simple-cdd n’est probablement pas la solution pour ce cas d’utilisation.

Répondre à arpinux Annuler la réponse.

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *