Yourdistrofromscratch

42
31
oct.
2016
Distribution

Yourdistrofromscratch est un ensemble de scripts Bash, de fichiers de configuration et de modifications, qui permettent de construire une distribution GNU/Linux personnalisée. Cette construction se fait de façon automatisée, depuis une liste de fichiers sources.

Il n’y a pas de lien direct avec Linux From Scratch, même si des modifications et options de compilation peuvent être utilisées depuis leurs dépôts.

Pour résumer, Linux From Scratch sert à comprendre comment se construit une distribution GNU/Linux, en suivant le manuel, pas à pas. Il y a eu ALFS, qui visait à automatiser la compilation, mais ce projet ne semble plus maintenu. Tandis que Your Distro From Scratch permet de générer une distribution personnalisée, en modifiant quelques fichiers « de base ».

Avec un simple make clean, on est sûr de repartir sur une base « saine » (ça prend du temps de compilation, mais on gagne du temps en débogage).

Sommaire

From scratch (de zéro), pourquoi ?

Pour ceux qui sont curieux de connaître toutes les briques composant leur système, savoir comment ces briques s’assemblent, et pouvoir en modifier les paramètres.

Automatisé, pourquoi ?

Quand on s’amuse à modifier une option de compilation, cela peut avoir des incidences sur la compilation des sources en « amont » (ex --enable-ceci ou --disable-cela).

Utilisation de la distribution générée

L’image ISO générée peut être utilisée :

  • en mode CD autonome (live CD) ;
  • en mode liveUSB (compatible UEFI pour le 64 bits) ;
  • en installation directe sur Windows (mode Wubi) ;
  • en installation sur un disque du vierge ;
  • en double amorçage avec une autre distribution (mode expert).

Historique

Yourdistrofromscratch sert à générer la distribution LinuxConsole.
Cette distribution était, à la base, générée avec des scripts non automatisés.

LinuxConsole

LinuxConsole 0.x

Les versions 0.x étaient construites depuis les binaires d’autres distributions (SUSE Linux, puis Debian).

Ces fichiers étaient alors simplement ajoutés au système de fichiers autonome (live) du CD, depuis une liste statique (bibliothèques, programmes, données, etc.).

Le noyau était lui, compilé indépendamment des autres distributions, pour permettre un démarrage en toutes circonstances (disquette, CD‐ROM, réseau, etc.).

LinuxConsole 1.x

Tous les binaires sont alors compilés « from scratch ». Le principe est assez simple :

./configure --prefix=/chemin_voulu --options

Le « chemin_voulu » est unique pour sources « core » et spécifique à chaque module (jeux, application et groupe d’applications). Les répertoires ainsi créés sont archivés dans des fichiers SquashFS, qui peuvent être utilisés en mode autonome.

Cela faisait de (trop) nombreux modules (fichiers SquashFS), qui devaient tous être montés au démarrage du système.

LinuxConsole 2.x & Dibab

L’outil dibab a été écrit, pour automatiser la compilation (chaîne de compilation, bibliothèques, noyau et programmes). Le développement de LinuxConsole 2.0 a réellement débuté quand Dibab a été totalement fonctionnel.
Des tool chains peuvent être compilés pour générer des binaires pour de nouvelles architectures (ARM).

En « entrée » de cet outil, on trouve des liens vers les archives « sources ».
Ces archives peuvent être de type TAR, des fichiers sources Debian, ou Arch Linux.
Il est également possible de spécifier des binaires Debian (.deb), ces binaires sont alors rajoutés à la distribution, par simple copie.
En théorie, il suffit donc d’ajouter une archive à la liste pour ajouter une bibliothèque ou un programme à la distribution.

Dibab s’est vu renommer YourDistrofromscratch au moment de la sortie de LinuxConsole 2.5, pour avoir un nom qui « sonne » plus juste.

YDFS

YDFS Version 2.5 (stable)

Les deux architectures x86 et x86_64 sont officiellement prises en charge. Pour la version x86_64 (64 bits), le temps de compilation est fortement augmenté, du fait de la prise en charge du multi‐lib. Il est possible de faire une compilation des deux versions (32 et 64 bits) sur la même machine physique, sans virtualisation.

Le bureau Mate est disponible en version 1.12, pour le 64 bits (lancement de LXDE possible aussi sur cette architecture), LXDE reste le bureau des versions 32 bits.

YDFS version 2.6 (développement)

Version en cours de développement :

  • suppression des bibliothèques GTK 2 et Qt 4 (?) ;
  • utilisation de flatpak en complément / à la place d’opkg (?) ;
  • ajout de la localisation pour l’arabe ;
  • contrôle parental possible.

YDFS version 2.7 (projet)

Cette version devrait permettre de construire une image ISO (compatible live USB) fortement personnalisée, générée en ligne. Quelques possibilités que cette version devrait offrir :

  • choix du nom de la distribution ;
  • choix du fond d’écran par défaut ;
  • sélection des logiciels qui seront « prêts à l’emploi » ;
  • sélection des logiciels installables avec le gestionnaire de paquets ;
  • génération de l’ISO.

YDFS version 3.0 (expérimentale)

La version 3.0 est en rupture avec les versions 2.x :

  • utilisation de systemd comme système d’initialisation ;
  • code simplifié ;
  • utilisation des versions de bibliothèques choisies par Arch Linux ;
  • Wayland/Weston à la place de X.Org (?) ;
  • paquets snap (?).

Personnaliser YFDS 2.5

C’est probablement cette partie de la dépêche qui vous intéressera le plus.
LinuxConsole 2.5 est disponible et fonctionne plutôt bien. Je vais montrer ici comment vous faire votre propre distribution, qui ressemblera à LinuxConsole 2.5, mais « à votre goût ». Chaque exemple (sera) est illustré par un correctif et une ISO de démonstration.

1 - Prérequis

  • votre machine de construction devra être sous Debian Jessie (version 64 bits conseillée) et disposer de 40 Go d’espace disque disponible ;
  • si vous voulez faire une compilation pour du 32 bits (construction la plus rapide) depuis ce système 64 bits, vous devez installer bootstrap.
    MY_CHROOT=/home/debian-jessie-32

    install -d $MY_CHROOT
    debootstrap --arch i386 jessie $MY_CHROOT http://http.debian.net/debian/
    echo "proc $MY_CHROOT/proc proc defaults 0 0" >> /etc/fstab
    mount proc $MY_CHROOT/proc -t proc
    echo "sysfs $MY_CHROOT/sys sysfs defaults 0 0" >> /etc/fstab
    mount sysfs $MY_CHROOT/sys -t sysfs
    cp /etc/hosts $MY_CHROOT/etc/hosts
    cp /proc/mounts $MY_CHROOT/etc/mtab
    chroot $MY_CHROOT /bin/bash

Sinon une construction 32 bits depuis une Debian Jessie 32 bits devrait fonctionner sans souci…

  • installer les outils nécessaires à la construction (en tant que root) :
    wget --no-check-certificate https://bitbucket.org/yourdistrofromscratch/ydfs/raw/master/2.5/configure
    sh configure

Connectez‐vous sur votre compte utilisateur, puis récupérez les sources de YourDistroFromScratch (ou bien créez un compte spécifique car votre répertoire home deviendra encombré d’un tas de fichiers nécessaires à la compilation ; d’autre part, le nom de l’utilisateur figurera dans l’arborescence de la distribution) :

    cd $HOME
    install -d src
    cd src
    git clone https://bitbucket.org/yourdistrofromscratch/ydfs.git
    cd ydfs
    cd 2.5
    make iso

Vous voila parti pour un build de plusieurs heures !

2 - Changer le nom de la distribution

Par défaut, c’est LinuxConsole le nom de la distribution. Dans cet exemple, nous allons nommer notre distribution madistrib.

Les logiciels prêts à l’emploi seront GIMP et FileZilla.

Génération de l’ISO « par défaut »

Je suis ici sur une machine 32 bits pour aller plus vite car, dans ce cas, je n’ai pas besoin du multilib :

Construction de l’ISO « linuxconsole »

    git clone https://bitbucket.org/yourdistrofromscratch/ydfs.git
    cd ydfs/2.5/
    make iso

On obtient l’ISO LinuxConsole… On peut s’assurer qu’elle fonctionne bien, avant de créer madistrib.

Configuration de « madistrib »

Fichier config.ini

Modifier linuxconsole par madistrib.

Copiez une image nommée madisrib.png dans le répertoire logos.

Makefile

Insertion de ce code, en fin du fichier Makefile :

    madistrib: packages/list-madistrib
        ./scripts/make_packages madistrib
        ./scripts/make_module madistrib
packages/list-madistrib
Génération de l’image ISO personnalisée
make iso

Et l’on obtient cette ISO, avec GIMP et FileZilla utilisables en mode autonome.

3 - Utiliser le dernier noyau Linux

git clone https://bitbucket.org/yourdistrofromscratch/ydfs.git
cd ydfs/2.5/
make config.ini
vim config.ini

Remplacer KERNEL3=4.1.30 par KERNEL3=4.8.1 (ou la dernière version du noyau).
Image ISO générée avec le noyau 4.8.1.

4 - Utiliser un autre bureau

Dans cet exemple, nous allons changer le bureau LXDE par le bureau XFCE. C’est donc un construction 32 bits qui a été choisie (LXDE se lance par défaut sur la version 32 bits et c’est également la construction la plus rapide).

Fichiers packages/list-x86

Suppression des fichiers sources « LXDE » :

- http://ftp.de.debian.org/debian/pool/main/l/lxde-common/lxde-common_0.5.5-6.dsc
- http://ftp.de.debian.org/debian/pool/main/l/lxmenu-data/lxmenu-data_0.1.2-2.dsc
- http://ftp.de.debian.org/debian/pool/main/l/lxinput/lxinput_0.3.2-1.dsc
- http://freefr.dl.sourceforge.net/project/lxde/menu-cache/menu-cache%200.5.x/menu-cache-0.5.1.tar.gz
- http://ftp.de.debian.org/debian/pool/main/l/lxrandr/lxrandr_0.1.2-3.dsc
- http://freefr.dl.sourceforge.net/project/lxde/LXSession%20%28session%20manager%29/LXSession%200.4.6.1/lxsession-0.4.6.1.tar.gz
- http://freefr.dl.sourceforge.net/project/lxde/LXPolkit/lxpolkit-0.1.0.tar.gz
- http://ftp.de.debian.org/debian/pool/main/l/lxsession-edit/lxsession-edit_0.2.0-3.dsc
- http://ftp.de.debian.org/debian/pool/main/l/lxshortcut/lxshortcut_0.1.2-3.dsc
- http://ftp.de.debian.org/debian/pool/main/l/lxtask/lxtask_0.1.4-3.dsc
- http://ftp.de.debian.org/debian/pool/main/l/lxde-icon-theme/lxde-icon-theme_0.5.0-1.dsc
- http://downloads.sourceforge.net/sourceforge/lxde/lxappearance-0.5.5.tar.xz
- http://downloads.sourceforge.net/sourceforge/lxde/lxpanel-0.7.2.tar.xz
- http://ftp.de.debian.org/debian/pool/main/l/lxterminal/lxterminal_0.1.11-4.dsc
- http://optimate.dl.sourceforge.net/project/lxde/GPicView%20%28image%20Viewer%29/GpicView%200.2.4/gpicview-0.2.4.tar.gz

Mise à jour des bibliothèques XFCE

- http://archive.xfce.org/src/xfce/libxfce4util/4.10/libxfce4util-4.10.1.tar.bz2  
- http://archive.xfce.org/src/xfce/xfconf/4.10/xfconf-4.10.0.tar.bz2  
- http://archive.xfce.org/src/xfce/libxfce4ui/4.10/libxfce4ui-4.10.0.tar.bz2  
+ http://archive.xfce.org/src/xfce/libxfce4ui/4.12/libxfce4ui-4.12.1.tar.bz2
+ http://archive.xfce.org/src/xfce/libxfce4util/4.12/libxfce4util-4.12.1.tar.bz2
+ http://archive.xfce.org/src/xfce/xfconf/4.12/xfconf-4.12.0.tar.bz2

Ajout du bureau XFCE

+ http://archive.xfce.org/src/xfce/libxfce4ui/4.12/libxfce4ui-4.12.1.tar.bz2
+ http://archive.xfce.org/src/xfce/xfce4-session/4.12/xfce4-session-4.12.1.tar.bz2
+ http://archive.xfce.org/src/xfce/garcon/0.4/garcon-0.4.0.tar.bz2
+ http://archive.xfce.org/src/xfce/gtk-xfce-engine/2.10/gtk-xfce-engine-2.10.1.tar.bz2
+ http://archive.xfce.org/src/xfce/thunar/1.6/Thunar-1.6.10.tar.bz2
+ http://archive.xfce.org/src/apps/thunar-volman/0.8/thunar-volman-0.8.1.tar.bz2
+ http://archive.xfce.org/src/xfce/xfce4-appfinder/4.12/xfce4-appfinder-4.12.0.tar.bz2
+ http://archive.xfce.org/src/xfce/xfce4-panel/4.12/xfce4-panel-4.12.0.tar.bz2
+ http://archive.xfce.org/src/xfce/xfce4-settings/4.12/xfce4-settings-4.12.1.tar.bz2
+ http://archive.xfce.org/src/apps/xfce4-terminal/0.6/xfce4-terminal-0.6.3.tar.bz2
+ http://archive.xfce.org/src/xfce/xfdesktop/4.12/xfdesktop-4.12.3.tar.bz2
+ http://archive.xfce.org/src/xfce/xfwm4/4.12/xfwm4-4.12.3.tar.bz2
+ http://archive.xfce.org/src/art/xfwm4-themes/4.10/xfwm4-themes-4.10.0.tar.bz2

Démarrage du bureau XFCE par défaut

Dans le fichier 2.5/init-x86/ydfs/start/desktop, Je remplace simplement :

    pcmanfm --desktop &
    dbus-launch lxsession

Par :

    dbus-launch xfce4-session

Voici le correctif qui transforme le bureau par défaut de LXDE en XFCE et l’image ISO 32 bits générée avec ce correctif (make iso).

En savoir plus

Capitole du libre

Une conférence aura lieu au Capitole du Libre le samedi 19 novembre 2016, de 16 h 30 à 17 h.

Salon du numérique de Lamballe

Une autre conférence aura lieu au Salon du Numérique à Lamballe (22), le 26 novembre 2016.

Liste de discussion

YourDistroFromScratch est un projet ouvert, n’hésitez pas à vous inscrire à la liste de discussion pour plus d’informations.

  • # Très intéressant, mais...

    Posté par . Évalué à -1 (+0/-2). Dernière modification le 31/10/16 à 12:48.

    Cela à l'air relativement simple, mais voilà :
    histoire de tester, je souhaite compiler une version 64 bit
    je suis le tuto, et au
    make iso
    trois lignes et c'est l'erreur.Fichier non trouvée ou n'existant pas.
    La compilation 64 bit n'est pas expliquée, les biblithèque nécessaire sur le système non plus.
    Quand à la version 32 bit, cela n'aboutit tout simplement pas.
    Cette compilation doit elle être absolument faite depuis une autre distribution Debian. Est-ce un prérequis ?

    • [^] # Re: Très intéressant, mais...

      Posté par (page perso) . Évalué à 2 (+1/-0).

      Quelle est l'erreur ?

      • [^] # Re: Très intéressant, mais...

        Posté par . Évalué à 1 (+0/-0).

        Je n'ai pas noté l'erreur. Cependant le mieux est tout de même d'essayer depuis une Debian.
        Etant sous Linux Mint, j'ai installé une machine virtuelle. Je redis dès que j'ai quelque chose de concret.

      • [^] # Re: Très intéressant, mais...

        Posté par . Évalué à 1 (+0/-0).

        Voilà l'erreur :
        impossible d'évaluer //home/pi/ydfs/build/busybox-x86_64-1.24.2/_install
        Effectivement, ni le répertoire busybox, ni le fichier n'existe.

      • [^] # Re: Très intéressant, mais...

        Posté par . Évalué à 6 (+5/-0).

        Je crois que la dépêche est mal fagoté. Je m'explique :
        1) si vous voulez faire une compilation pour du 32 bits (build le plus rapide), depuis ce système 64 bits, vous devez installer bootstrap Ce n'est pas clair : la procédure qui suit est elle uniquement pour le 32 bit ?..ou est elle valable pour le 64 bit aussi.
        2) il faudrait préciser que les opérations à partir de Prérequis doivent se faire en root. Une personne sans connaissances de la création d'un système personnel aura de la peine à s'y retrouver.
        3) Connectez-vous sur votre compte utilisateur… : il n'est pas précisé quel compte utilisateur. Comme le processus est une traduction de l'article anglais, il serait judicieux d'ajouter la partie création de l'utilisateur.
        useradd linuxconsole
        mkdir /home/linuxconsole
        etc…

        Juste pour améliorer la compréhension et l'application de la méthode sans perte de temps inutile.

        • [^] # Re: Très intéressant, mais...

          Posté par (page perso) . Évalué à 4 (+2/-0). Dernière modification le 31/10/16 à 20:55.

          "il n'est pas précisé quel compte utilisateur." Normal, c'est n'importe lequel. Mais,il vaut mieux en faire un spécifique(c'est précisé)
          "la procédure qui suit est elle uniquement pour le 32 bit ?"
          Non, pour les deux ça m'a l'air assez clair personnellement,mais c'est sûr, ce n'est pas non plus pour les newbies

      • [^] # Re: Très intéressant, mais...

        Posté par . Évalué à 1 (+0/-0). Dernière modification le 31/10/16 à 15:52.

        Et tout cela pour en finir au même point que celui cité plus haut.
        J'ai suivi le tuto en anglais.

  • # debian

    Posté par . Évalué à 2 (+0/-0).

    1 - Prérequis
    Votre machine de build devra être sous Debian Jessie

    Je suis étonné. Qu'est-ce qui empêcherait techniquement de réaliser sa distro directement depuis une linuxconsole ou toute autre YourDistroFromScratch générée au préalable ?

    • [^] # Re: debian

      Posté par (page perso) . Évalué à 2 (+0/-0).

      j'aurai pu préciser "pour un build complet et automatisé"

      Les options de compilation, les patches pour les librairies anciennes, sont dépendantes de la version de gcc.

      Donc techniquement, il est bien sûr, possible de faire un build depuis n'importe quelle distribution, mais on risque de tomber, de temps en temps, sur des erreurs de compilation, à corriger manuellement.

      Pour éviter ce genre de soucis, il faudrait, au préalable, compiler un toolchain, qui utiliserait les versions choisies pour gcc, etc.

      C'est possible, et ça a été utilisé dans des précédentes versions (voir TOOLCHAIN dans le Makefile )

      Le problème, c'est que faire un build du toochain, c'est long .. (!)

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.