Yourdistrofromscratch

Source: LinuxFR – les dépêches
Liens: Yourdistrofromscratch
Yourdistrofromscratch

Yourdistrofromscratch est un ensemble de scripts bash, de fichiers de configuration, et de modifications, qui permettent de construire une distribution 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 compilations peuvent être utilisés depuis leurs dépôts.

Pour résumer, Linux From Scratch sert à comprendre comment se construit une distribution 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 debug)

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 liveCD ;
  • en mode liveUSB (compatible UEFI pour le 64 bits) ;
  • en installation directe sur Windows (mode Wubi) ;
  • en installation sur un disque du vierge ;
  • en dual boot 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 fichier « 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 (floppy, CDROM, 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, groupe d’applications)

Les répertoires ainsi créés sont archivés dans des fichiers SquashFS, qui peuvent être utilisés en mode « live »

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, programmes)

Le développement de LinuxConsole 2.0 a réellement débuté quand Dibab a été totalement fonctionnel.

Des toolchains 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 des tarballs, 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 renommé « 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 supportées.

Pour la version x86_64 (64 bits), le temps de compilation est fortement augmenté, du fait de la prise en charge du multilib.

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 Gtk2 et Qt4 (?) ;
  • utilisation de flatpak en complément / a la place d’opkg (?) ;
  • ajout des locales pour l’arabe ;
  • contrôle parental possible.

YDFS Version 2.7 (projet)

Cette version devrait permettre de construire une image ISO (compatible liveUSB) 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 init ;
  • code simplifié ;
  • utilisation des versions de bibliothèques choisies par Arch Linux ;
  • Wayland/Weston à la place de Xorg (?) ;
  • 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 patch et une ISO de démonstration

1 – Prérequis

  • Votre machine de build devra être sous Debian Jessie (64 bits conseillé), et dispose de 40Go d’espace disque disponible ;
  • si vous voulez faire une compilation pour du 32 bits (build le 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 un build 32 bits depuis une Debian Jessie 32 bits devrait fonctionner sans souci…

  • Installer les outils nécessaires au build (depuis 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 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 sur une machine 32 bits, pour aller plus vite, car dans ce cas je n’ai pas besoin du multilib)

build 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 »

  • config.ini

modifier « linuxconsole » par « madistrib »

  • logo

copiez une image nommée madisrib.png dans le répertoire « logos »

  • Makefile

insertion de ce code, en fin du Makefile :

madistrib: packages/list-madistrib
./scripts/make_packages madistrib
./scripts/make_module madistrib

  • packages/list-madistrib

http://download.gimp.org/pub/gimp/v2.8/gimp-2.8.18.tar.bz2
http://downloads.sourceforge.net/project/filezilla/libfilezilla/0.6.1/libfilezilla-0.6.1.tar.bz2
http://downloads.sourceforge.net/project/filezilla/FileZilla_Client/3.20.1/FileZilla_3.20.1_src.tar.bz2

  • Génération de l’iso personnalisée

    Make iso

et on obtient cette ISO, avec GIMP et FileZilla utilisables en mode « live »

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)

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 build 32 bits qui a été choisi (LXDE se lance par défaut sur la version 32 bits, et c’est également le build le plus rapide)

  1. 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

  1. 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

  2. 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

  3. 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

Le patch qui transforme le bureau par défaut, de LXDE en XFCE

L’iso 32 bits générée avec ce patch (make iso)

En savoir plus

Capitole du libre

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

Salon du numérique de Lamballe

Une autre conférence aura lieu au salon du numérique à Lamballe (22) le 26 novembre.

Liste de discussion

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

Lire les commentaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *