À propos de DSL

DSL (Damn Small Linux) est une distribution légère tenant sur une business card et bootable depuis un cd, une clée usb, ... sur des ordinateurs d'un certain âge (486 avec 16Mo de ram).

DSL est basée sur l'excellente distribution Debian ce qui permet d'utiliser certains paquets développés pour cette distribution.

Obtention de l'image ISO

L'image ISO de la distribution s'obtient facilement à partir de la page dédiée. Lors de l'écriture de cet article, la version la plus récente était la 3.4.

Placez-vous dans un répertoire dédié car la manipulation va créer une arborescence propre :

shell$ mkdir DSLRemastering
shell$ cd DSLRemastering
shell$ wget ftp://ftp.oss.cc.gatech.edu/pub/linux/distributions/damnsmall/current/dsl-3.4.2.iso

Extraction des fichiers de l'image ISO

L'extraction des fichiers de l'image s'effectue en deux temps :

  • montage de l'image ;
  • copie des fichiers.

L'image se monte à l'aide d'une "loop" :

shell$ mkdir /tmp/iso
shell$ mount -t iso9660 -o loop dsl-3.4.2.iso /tmp/iso

On copie ensuite les fichiers en conservant les attributs de permission à l'aide de rsync. Il n'est pas nécessaire de copier le fichier KNOPPIX/KNOPPIX qui correspond au système de fichier compressé.

shell$ mkdir remaster-iso
shell$ rsync --exclude=/KNOPPIX/KNOPPIX -a /tmp/iso remaster-iso

Extraction du système de fichier

En réalité, seul le noyau est présent dans les fichiers que nous venons de copier. Le plus gros de la distribution se situe en réalité dans le fameux et imposant fichier KNOPPIX/KNOPPIX. Nous allons devoir mettre en place une cloop (compressed loop) pour le copier. Le module correspondant n'est pas forcément présent par défaut sur votre distribution, vous devrez peut être l'installer, ainsi que les utilitaires associés.

shell$ modprobe cloop
shell$ losetup /dev/cloop0 /tmp/iso/KNOPPIX/KNOPPIX
shell$ mkdir /tmp/fs
shell$ mount -t iso9660 /dev/cloop0 /tmp/fs

Une fois le système de fichier monté, vous pouvez le copier en préservant les informations sur les fichiers :

shell$ mkdir remaster-fs
shell$ cp -a /tmp/fs/* remaster-fs

Mise en place du chroot

Vous devriez maintenant vous trouver avec les répertoires suivants dans le répertoire courant :

  • remaster-iso contenant les fichiers issus de l'ISO
  • remaster-fs contenant la distribution à proprement parler.

Nous allons utiliser comme racine le répertoire remaster-fs afin d'y effectuer les manipulation de customisation. Cette manipulation est appelée chrooter et n'est possible qu'avec les droits du superutilisateur :

shell$ chroot remaster-fs
bash-2.05b# ls
bin     cdrom   etc     home    mnt     opt     root    tmp     var
boot    dev     floppy  lib     none    proc    sbin    usr

Si jamais vous obtenez le message d'erreur suivant :

Inconsistency detected by ld.so: rtld.c: 1108: dl_main: Assertion `(void *) ph->p_vaddr == _rtld_local._dl_sysinfo_dso' failed!

Vous devrez désactiver le VDSO, puis réitérer la manipulation. Pour désactiver le vDSO :

shell$ echo 0 > /proc/sys/vm/vdso_enabled