Source Mage GNU/Linux

Programmes Projet Speedtouch Projet Snoopy Projet eciadsl La recette du pain Source Mage BeOS Mon CV Mon blog Notes On nous prend pour des cons! Don
Programmes
Projet Speedtouch
Projet Snoopy
Projet eciadsl
La recette du pain
Source Mage
BeOS
Mon CV
Mon blog
Notes
On nous prend pour des cons!
Don
en fr

Source Mage GNU/Linux

Benoît Papillault, 16/09/2004
Mise à jour: 06/02/2005

Quelques explications

Source Mage GNU/Linux est une distribution GNU/Linux basée sur les sources. Cela signifie que l'installation de n'importe quel logiciel au sein de cette distribution sera faite en téléchargeant les sources et en les compilant avec les optimisations spécifiques que vous aurez choisie. Le site principal de la distribution est http://www.sourcemage.org/. De nombreuses informations sur l'installation et l'utilisation sont disponibles dans le Wiki : http://wiki.sourcemage.org/.

Ayant trouvé ce projet intéressant, je participe depuis Juin 2003 à la création des CD-ROM d'installation et depuis peu au portage sur l'architecture 64 bits des processeurs AMD (x86_64).

Création des images ISO

Images ISO version 0.9.4-test2 x86, ppc et x86_64 (pour tests)

Les images sont disponibles ici!

Images ISO version 0.9.3 x86 and ppc (stable)

Revue de l'image ISO version 0.9.2 ppc

Cette image est disponible sur http://download.sourcemage.org/iso/. Les test réalisés sur un ibook g4 ont donnés les résultats suivants.

Documentation sur l'ISO

Portage sur une architecture 64 bits

L'architecture 64 bits des processeurs AMD permet à la fois (dans certaines conditions) d'exécuter du code 32 bits et 64 bits. Pour cette raison, on appelle ce type de plateform bi-arch. Cependant, même si le processeur peut exécuter simultanément des processus 32 bits et des processus 64 bits, chaque programme 32 bits ne peut utiliser que des bibliothèques 32 bits et chaque programme 64 bits ne peut utiliser que des bibliothèques 64 bits. Pour cette raison, certaines bibliothèques ont besoin d'exister à la fois en version 32 bits et en version 64 bits. Nous avons choisi de conserver la version 32 bits dans /lib32 (ou /usr/lib32) et la version 64 bits dans /lib (ou /usr/lib). Ce choix permet de simplifier le portage des applications existantes qui ont l'habitude de s'installer dans /lib.
  • Définition : On appelle plateforme bi-arch une plateforme capable d'exécuter du code de deux architectures différentes simultanément.
  • Définition : On appelle entête noyau multi-arch, les entêtes du noyau Linux conçues pour être utilisées sur plusieurs architectures simultanément. Ceci est un prérequis pour compiler glibc sur une plateforme bi-arch.
  • Définition : On appelle spell bi-arch un spell devant être compilé pour deux architectures. Exemple: glibc.
  • Définition : On appelle compilateur multilib, un compilateur capable de gérer (et générer) des bibliothèques pour des architectures différentes. Le prérequis est de disposer d'une glibc bi-arch.
  • Définition : On appelle sorcery bi-arch, une version de sorcery capable de compiler des spells bi-arch. Rappel: sorcery est l'outil permet d'installer à partir des sources.
Afin d'ajouter tout ces fonctionnalités à Source Mage, différentes modifications ont été faites. Ces modifications ont été testées sur un processeur Athlon 64 bits. Malgré tous ces efforts, seul un système fonctionnant dans un chroot d'une distribution Mandrake a pu être obtenu.

Sorcery

sorcery est l'outil de gestion des paquets dans SourceMage GNU/Linux.

Patch sorcery concernant l'utilisation de /lib/ld-linux.so.2

sorcery est l'outil de gestion des packages, ou spell. L'installation se fait en utilisation la séquence classique (présentée ici de maniére simplifiée) :
./configure --prefix=/usr
make
make install
Les fichiers installés sont ensuite trouvés grâce à l'utilisation de l'outil installwatch. La séquence présentée plus haut comporte une étape supplémentaire:
./configure --prefix=/usr
make
ici, tout les fichiers déjà installés par le spell sont supprimés
make install

Ainsi dans le cas du spell glibc, ce sont les deux fichiers /lib/ld-2.3.2.so et /lib/ld-linux.so.2 qui sont supprimés. Ce dernier étant un lien symbolique vers le premier construit par la commande ldconfig.

Le fichier /lib/ld-linux.so.2 est pourtant un fichier vital au système. En effet, il s'agit du chargeur. Chaque exécutable dynamique contient une référence à ce fichier, comme nous le montre la commande suivante:

$ LANG= readelf -l /bin/sh | grep interpreter
      [Requesting program interpreter: /lib/ld-linux.so.2]
Afin de prévenir l'effacement de ce fichier, le fichier spécial /var/lib/sorcery/excluded contient le nom des fichiers qui ne sont pas effacés. Cependant, le problème est que chaque architecture utilise un nom différent. Ainsi, la commande plus haut produira les résultats suivants sur les architectures ppc ou x86_64 respectivement:
$LANG= readelf -l /bin/sh | grep interpreter
      [Requesting program interpreter: /lib/ld.so.1]
$LANG= readelf -l /bin/sh | grep interpreter
      [Requesting program interpreter: /lib/ld-linux-x86-64.so.2]
Le patch suivant permet donc de s'affranchir de cette limite : sorcery-ld.diff Le spell glibc-2.3.2 a été compilé deux fois afin de vérifier le bon fonctionnement du patch.

Utiliser sorcery pour la compilation croisée

Voici un petit document de conception sur comment cela pourrait être implémenté : sorcery BUILD_ROOT. Vous pouvez également lire quelques liens officiels:

Bugs dans installwatch

Liens

Valid XHTML 1.0! CSS Valide !
Benoît Papillault