Créer ses propres modules Slax
La distribution Slax est une distribution l
inux modulaire.
En cela, elle est hautement personalisable et il en existe d'ailleurs de nombreuses déclinaisons. Cette capacité à s'adapter aux besoins de l'utilisateur est liée à la conjugaison de deux facteurs :
Le contenu de cette archive regroupe l'ensemble des répertoires et fichiers nécessaires pour le fonctionnement du module. On y retrouve généralement les répertoires /etc , /usr et autres /var. Tout cela est très classique et peut être consulté avec un programme de type 7-Zip.
Ce module est ensuite compressé sous un format enveloppe spécifique, le .lzm, qui est en fait un format utilisé par le système de fichier natif de la Slax, le SquashFS. Ce format permet un montage à la volée d'un système de fichier compressé (LZMA).
Toutes les opérations de création de module peuvent être effectuées depuis votre distribution préférée, la plupart des utilitaires étant fournis en standard ( les autres seront intégrés sous forme de modules).
Commencez par vous procurer le module .tgz désiré sur un site officiel.
Pour étudier et personaliser le module, commencez par le décompresser dans un répertoire de travail à l'aide de l'utilitaire installpkg.
La syntaxe est la suivante :
installpkg -root /tmp/module <module.tgz>
Dans le répertoire /tmp/module, effectuez les modifications désirées en prenant garde à ne pas supprimer les fichiers essentiels. En général, les modifications portent sur les fichiers de configurations, le retrait ou l'ajout de messages localisés ( francisés par exemple ).
Une fois vos modifications effectuées, reconstituez un fichier archive mais cette fois-ci au format .lzm par la commande magique dir2lzm.
dir2lzm /tmp/module <module.lzm>
Si vous désirez conserver une archive slackware de vos modifications, vous pouvez également employer la commande dir2tgz.
dir2tgz /tmp/module <module.tgz>
Les deux formats les plus représentés aujourd'hui sont :
Pour les archives de type .rpm, rpm2tgz permet de retrouver le format .tgz de la Slackware. La syntaxe de la commande est la suivante :
rpm2tgz <archive.rpm>
Le fichier .tgz est directement créé avec le nom de l'archive d'origine.
Pour les archives de type .deb, la commande deb2lzm effectuera directement la conversion. La syntaxe de la commande est la suivante :
deb2lzm <archive.deb> <module.lzm>
Si la commande deb2lzm est fournie avec la distribution Slax standard, elle nécessite pour être employée un module supplémentaire nommé debian-pkgtools.
Une fois l'archive convertie, il est possible de l'employer tout de suite en la copiant dans le répertoire /modules ou /optional. Mais, par précaution, il est conseillé de procéder à la décompression du module pour vérifier son contenu.
Pour un fichier .tgz, la procédure a été expliquée plus haut. Pour un fichier .lzm, il suffit d'employer la commande lzm2dir en ayant préalablement créé le répertoire de destination du contenu de l'archive.
La syntaxe est la suivante :
lzm2dir <module.lzm> <répertoire module>
Là encore, la distribution Slax est bin dotée puisqu'elle dispose du compilateur GCC et des fichiers les plus importants pour mener à bien la compilation de la majorité des programmes sources.
La démarche est assez simple. Après décompilation dans un répertoire de travail ( /usr/src par exemple), suivez les instructions de votre programme. Généralement, il est accompagné d'un fichier Readme ou Install qui précise les directives de compilation.
Si un ./configure est nécessaire, profitez-en pour adapter les répertoires de destination des programmes binaires et des librairies. La commande ./configure --help vous indiquera la liste des variables configurable.
Parmi celles-ci, il y en a une incontournable. Il s'agit de la variable prefix.
La Slax utilise /usr plutôt que /usr/local ou /opt. Pensez donc à utiliser --prefix=/usr comme option de configuration.
Puis, lancez la compilation par un make puis un make install.
Pour isoler facilement le contenu de votre module, demander la génération de votre programme dans une arborescence temporaire en utilisant la variable DESTDIR.
Par exemple, pour récupérer le résultat de votre compilation dans /tmp/monmodule, passer la commande make DESTDIR=/tmp/monmodule install.
Enfin, quelques recommandations pour que votre module soit "Slax proof" :
Vous trouverez la liste et le détail de ces recommandations sur le site officiel.
Liens
Dépot SlackFR : http://slackfr.org/doku.php?id=paquets:index
Dépot Slackbuilds : http://slackbuilds.org/repository/12.1/
inux modulaire.En cela, elle est hautement personalisable et il en existe d'ailleurs de nombreuses déclinaisons. Cette capacité à s'adapter aux besoins de l'utilisateur est liée à la conjugaison de deux facteurs :
- un système de fichiers astucieux,
- un système d'archive très simple à appréhender.
Les bases du module
Un module Slax est à la base un fichier archive de type .tgz ( compression tar + gzip ) qui est le standard de la distribution Slackware.Le contenu de cette archive regroupe l'ensemble des répertoires et fichiers nécessaires pour le fonctionnement du module. On y retrouve généralement les répertoires /etc , /usr et autres /var. Tout cela est très classique et peut être consulté avec un programme de type 7-Zip.
Ce module est ensuite compressé sous un format enveloppe spécifique, le .lzm, qui est en fait un format utilisé par le système de fichier natif de la Slax, le SquashFS. Ce format permet un montage à la volée d'un système de fichier compressé (LZMA).
Toutes les opérations de création de module peuvent être effectuées depuis votre distribution préférée, la plupart des utilitaires étant fournis en standard ( les autres seront intégrés sous forme de modules).
Transformation de module Slackware
La transformation d'un module d'origine Slackware en module Slax se révèle très simple.Commencez par vous procurer le module .tgz désiré sur un site officiel.
Pour étudier et personaliser le module, commencez par le décompresser dans un répertoire de travail à l'aide de l'utilitaire installpkg.
La syntaxe est la suivante :
installpkg -root /tmp/module <module.tgz>
Dans le répertoire /tmp/module, effectuez les modifications désirées en prenant garde à ne pas supprimer les fichiers essentiels. En général, les modifications portent sur les fichiers de configurations, le retrait ou l'ajout de messages localisés ( francisés par exemple ).
Une fois vos modifications effectuées, reconstituez un fichier archive mais cette fois-ci au format .lzm par la commande magique dir2lzm.
dir2lzm /tmp/module <module.lzm>
Si vous désirez conserver une archive slackware de vos modifications, vous pouvez également employer la commande dir2tgz.
dir2tgz /tmp/module <module.tgz>
Transformation de module d'une autre distribution
Il peut arriver que certains modules ne soient pas disponibles dans les dépots Slackware mais présents pour d'autres distributions linux. Mais celles-ci emploient un autre système de package qui ne peut être utilisé tel quel par la Slax.Les deux formats les plus représentés aujourd'hui sont :
- le .rpm pour les distributions de type Red Hat / Fedora
- le .deb pour les distributions de type Debian / Ubuntu
Pour les archives de type .rpm, rpm2tgz permet de retrouver le format .tgz de la Slackware. La syntaxe de la commande est la suivante :
rpm2tgz <archive.rpm>
Le fichier .tgz est directement créé avec le nom de l'archive d'origine.
Pour les archives de type .deb, la commande deb2lzm effectuera directement la conversion. La syntaxe de la commande est la suivante :
deb2lzm <archive.deb> <module.lzm>
Si la commande deb2lzm est fournie avec la distribution Slax standard, elle nécessite pour être employée un module supplémentaire nommé debian-pkgtools.
Une fois l'archive convertie, il est possible de l'employer tout de suite en la copiant dans le répertoire /modules ou /optional. Mais, par précaution, il est conseillé de procéder à la décompression du module pour vérifier son contenu.
Pour un fichier .tgz, la procédure a été expliquée plus haut. Pour un fichier .lzm, il suffit d'employer la commande lzm2dir en ayant préalablement créé le répertoire de destination du contenu de l'archive.
La syntaxe est la suivante :
lzm2dir <module.lzm> <répertoire module>
Création d'un module depuis les sources
Dans le cas où le module convoité n'existe pas ou présente des incompatibilités de kernel ou de version de librairie, il vous reste la méthode des puristes, la compilation depuis les sources.Là encore, la distribution Slax est bin dotée puisqu'elle dispose du compilateur GCC et des fichiers les plus importants pour mener à bien la compilation de la majorité des programmes sources.
La démarche est assez simple. Après décompilation dans un répertoire de travail ( /usr/src par exemple), suivez les instructions de votre programme. Généralement, il est accompagné d'un fichier Readme ou Install qui précise les directives de compilation.
Si un ./configure est nécessaire, profitez-en pour adapter les répertoires de destination des programmes binaires et des librairies. La commande ./configure --help vous indiquera la liste des variables configurable.
Parmi celles-ci, il y en a une incontournable. Il s'agit de la variable prefix.
La Slax utilise /usr plutôt que /usr/local ou /opt. Pensez donc à utiliser --prefix=/usr comme option de configuration.
Puis, lancez la compilation par un make puis un make install.
Pour isoler facilement le contenu de votre module, demander la génération de votre programme dans une arborescence temporaire en utilisant la variable DESTDIR.
Par exemple, pour récupérer le résultat de votre compilation dans /tmp/monmodule, passer la commande make DESTDIR=/tmp/monmodule install.
Enfin, quelques recommandations pour que votre module soit "Slax proof" :
- assurez-vous que l'ensemble des fichiers et répertoires soit accessible par l'utilisateur root
- ayez à l'esprit de réduire au maximum la taille de votre module en supprimant tout fichier inutile
- intégrez les scripts de démarrage, d'arrêt et de relance tels qu'attendus dans la Slax
Vous trouverez la liste et le détail de ces recommandations sur le site officiel.
Liens
Dépot SlackFR : http://slackfr.org/doku.php?id=paquets:index
Dépot Slackbuilds : http://slackbuilds.org/repository/12.1/
Publicité