User Tools

Site Tools


prive:lfs-0compiler

0compiler : Chroot Build

Cet article explique comment créer et configurer un environnement de construction 0compile, offrant les avantages suivants :

  • La construction n'affecte pas l'environnement hôte, et l'hôte n'influence pas la construction.
  • Les builds peuvent cibler une architecture différente, comme la construction de packages x86 à partir d'un hôte x64.
  • Le bac à sable de build est plus petit qu'une machine virtuelle et le téléchargement est généralement plus petit.

Le système de construction (chroot) est fourni avec des outils de développement tels que gcc et make, et la commande 0launch.

Linux From Scratch

Utiliser une toolchain Linux From Scratch (LFS), en utilisant uniquement des archives sources en chroot

Le site https://github.com/emmett1/lfs-scripts propose des scripts pour automatiser la compilation multilib LFS + livecd. Cette version LFS utilise les pkgutils de CRUX pour gérer les packages et le générateur initramfs de Venom Linux pour livecd initramfs.
Il existe 3 scripts:
- 01-Toolchan script pour construire la toolchain nécessaire pour créer des lfs de base (obligatoire), ce script doit être exécuté en tant qu'utilisateur normal, ce script peut être repris, il suffit de réexécuter le script pour continuer là où vous l'a laissé
- 02-base: script pour construire le système lfs (des packages supplémentaires sont ajoutés dans cette base lfs, tels que noyau Linux, wget, dhcpcd, wpa_suppliant, mkinitramfs, syslinux) de base, ce script doit être exécuté en tant que root, tout le paquet est construit en utilisant le système de port (pkgutils), on peut créer ses propres ports, ce script peut être repris, il suffit de réexécuter le script pour continuer là où on l'a laissé, les packages créés peuvent être réutilisés
- 03-mkiso: script pour construire lfs livecd iso, ce script doit être exécuté en tant que root

Fondamentalement, on a juste besoin d'exécuter tous ces 3 scripts sans autre commande pour que le système LFS soit construit, y compris l'ISO, en exécutant simplement $ ./01-toolchain && sudo ./02-base && sudo ./03-mkiso

Pour construire la toolchain on peut utiliser une distribution Linux comme hôte ou récupérer un livecd de n'importe quelle distribution:
- Préparer une partition pour LFS et la monter sur /mnt/lfs (on peut changer le répertoire de construction de LFS dans le fichier de configuration).
- Modifier éventuellement le fichier de configuration en fonction des besoins.
- Exécuter le script 01-toolchain pour créer une toolchain temporaire.
- Exécuter le script 02-base pour créer le système LFS de base.
-Exécuter éventuellement le script 03-mkiso pour créer l'iso (on peut tester l'iso à l'aide de qemu en exécutant ./run_qemu <fichier iso>).
- Exécuter ./enter-chroot pour entrer dans l'environnement chroot pour configurer le système.

Le site https://intestinate.com/pilfs/ propose des images précompilées de la toolchain LFS, on peut utiliser une de ce images comme base pour un projet ou comme environnement de construction dans lequel construire une distribution en suivant le guide PiLFS.

Configuration du chroot

Entrer dans le chroot :

export LFS=/mnt/lfs
https://intestinate.com/pilfs/images.html

sudo mount -v --bind /dev $LFS/dev

sudo mount -vt devpts devpts $LFS/dev/pts
sudo mount -vt tmpfs shm $LFS/dev/shm
sudo mount -vt proc proc $LFS/proc
sudo mount -vt sysfs sysfs $LFS/sys

sudo mkdir -pv $LFS/build
sudo mount -v --bind ./build $LFS/build

$ sudo chroot $LFS /usr/bin/env -i \
    HOME=/root TERM="$TERM" PS1='\u:\w\$ ' \
    PATH=/bin:/usr/bin:/sbin:/usr/sbin \
    /bin/bash --login

Installation de Zero

Les paquets BLFS suivants doivent être installés:

  • OpenSSL (Python dependency)
  • Python
  • GnuPG
  • PCRE (Glib dependency)
  • GLib (PyGObject dependency)
  • PyGObject

    Télécharger le code source 0install pour les versions publiées à partir de la page GitHub Releases.

On peut également obtenir la dernière version de développement à l'aide de Git : git clone https://github.com/0install/0install.git

Pour installer pour tous les utilisateurs du système (avec accès root) :

$ make
$ sudo make install

Pour installer uniquement pour l'utilisateur actuel (sans accès root) :

$ make && make install_home
$ export PATH=$HOME/bin:$PATH

Configuration de 0compile

Maintenant, on a un chroot avec 0launch, et on peut ajouter 0compile :

CMD="0compile"
URI="https://apps.0install.net/0install/0compile.xml"

$ yes Y | /usr/bin/0launch -cd $URI
$ 0alias -d /usr/bin $CMD $URI

Selon la version du système d'exploitation et de Python, il faudra peut-être utiliser une ancienne version de 0compile.

Construction avec 0compile

Télécharger le code source, en mode console :

$ 0launch -cd -s http://www.example.com/interfaces/foo.xml

Ensuite, configurer le sous-répertoire build en utilisant le flux source :

$ cd /build
$ 0compile setup http://www.example.com/interfaces/foo.xml foo

Ensuite, procéder à la construction du binaire à partir de la source :

$ cd foo
$ 0compile build

Enfin, dire à 0compile de préparer le flux/l'archive binaire :

$ 0compile publish http://www.example.com/implementations

Après avoir quitté le chroot, on peut trouver les résultats dans build/foo.

Publication des résultats

Le nouveau flux binaire est maintenant prêt à être fusionné avec le flux source, signé (à l'aide de 0publish --xmlsign) et publié avec les archives.

Puisqu'on a utilisé un nouveau chroot propre pour construire le binaire, on peut être raisonnablement sûrs que toutes les dépendances sont incluses dans le flux source.

prive/lfs-0compiler.txt · Last modified: 2025/02/19 10:59 by 127.0.0.1