URL: https://linuxfr.org/news/yourdistrofromscratch Title: Yourdistrofromscratch Authors: Yann LD Davy Defaud, palm123, claudex, Benoît Sibaud, Nils Ratusznik, ZeroHeure, papap et NeoX Date: 2016年08月27日T10:31:22+02:00 License: CC By-SA Tags: lfs, linuxconsole, distrib_légère, debian, flatpak et alfs Score: 42 _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_](http://fr.wikipedia.org/wiki/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](http://www.linuxfromscratch.org/alfs/downloads/jhalfs/stable/), 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). ---- [YourDistroFromScratch](https://bitbucket.org/yourdistrofromscratch/ydfs) [linuxconsole.org](http://www.linuxconsole.org/fr) [Linux From Scratch](http://linuxfromscratch.org/) [Programme du Capitole du Libre 2016](https://2016.capitoledulibre.org/programme.html) ---- # 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 : ```sh ./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](https://fr.wikipedia.org/wiki/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_. ```sh 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_) : ```sh 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) : ```sh 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 » ```sh 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_. #### Logo Copiez une image nommée _madisrib.png_ dans le répertoire `logos`. ####Makefile Insertion de ce code, en fin du fichier `Makefile` : ```sh madistrib: packages/list-madistrib ./scripts/make_packages madistrib ./scripts/make_module madistrib ``` #### packages/list-madistrib - ; - ; - . #### Génération de l’image ISO personnalisée ```sh make iso ``` Et l’on obtient cette [ISO](http://jukebox.linuxconsole.org/linuxfr.org/linuxconsole-2.5/madistrib.2016年10月24日-x86.iso), avec GIMP et FileZilla utilisables en mode autonome. ## 3 - Utiliser le dernier noyau Linux ```sh 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](http://jukebox.linuxconsole.org/linuxfr.org/linuxconsole-2.5/linuxconsole.2016年10月18日-lastkernel-x86.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 : ```sh pcmanfm --desktop & dbus-launch lxsession ``` Par : ```sh dbus-launch xfce4-session ``` Voici le [_correctif_](https://bitbucket.org/yourdistrofromscratch/ydfs/src/d6ee031f822be57dddda8baa099da38b2d5ad084/patches/linuxconsole-2.5-xfce.diff?at=master&fileviewer=file-view-default) qui transforme le bureau par défaut de LXDE en XFCE et l’image [ISO 32 bits](http://jukebox.linuxconsole.org/linuxfr.org/linuxconsole-2.5/linuxconsole.2016年10月05日-xfce-x86.iso) générée avec ce correctif (`make iso`). #En savoir plus ## Capitole du libre Une [conférence](http://lanyrd.com/2016/cdl2016/sfmxzw/) aura lieu au [_Capitole du Libre_](http://lanyrd.com/2016/cdl2016/) 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](http://www.lamballeco-numerique.fr/search/label/salon%20informatique) (22), le 26 novembre 2016. ## Liste de discussion _YourDistroFromScratch_ est un projet ouvert, n’hésitez pas à vous inscrire à la [liste de discussion](http://mail.ydfs.fr/cgi-bin/mailman/listinfo/team) pour plus d’informations.

AltStyle によって変換されたページ (->オリジナル) /