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 ?
- Automatisé, pourquoi ?
- Utilisation de la distribution générée
- Historique
- YDFS
- Personnaliser YFDS 2.5
- En savoir plus
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.
Logo
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
- 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’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.
Aller plus loin
- YourDistroFromScratch (995 clics)
- linuxconsole.org (457 clics)
- Linux From Scratch (163 clics)
- Programme du Capitole du Libre 2016 (165 clics)
# Très intéressant, mais...
Posté par tipic . Évalué à -1. Dernière modification le 31 octobre 2016 à 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 Yann LD . Évalué à 2.
Quelle est l'erreur ?
[^] # Re: Très intéressant, mais...
Posté par tipic . Évalué à 1.
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 Yann LD . Évalué à 2.
Le build devrait fonctionner aussi sur Mint, mais je n'ai pas eu le temps de tester.
Dans ce cas, il faudrait installer les outils de développement (make, gcc .. ) manuellement, alors que c'est un script qui fait cela, de façon automatisée, sous debian. Ce script c'est https://bitbucket.org/yourdistrofromscratch/ydfs/raw/master/2.5/configure , qui installe les outils nécessaire au build (il faut être root pour les apt-get install)
Si tu as installé un machine virtuelle avec la dernière debian, il n'y a aucune raison que ça ne fonctionne pas.
[^] # Re: Très intéressant, mais...
Posté par tipic . Évalué à 1.
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 Yann LD . Évalué à 2.
un "make busybox" devrait résoudre cela, un simple "make" sinon
[^] # Re: Très intéressant, mais...
Posté par tipic . Évalué à 6.
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 papap . Évalué à 4. Dernière modification le 31 octobre 2016 à 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 tipic . Évalué à 1. Dernière modification le 31 octobre 2016 à 15:52.
Et tout cela pour en finir au même point que celui cité plus haut.
J'ai suivi le tuto en anglais.
[^] # Re: Très intéressant, mais...
Posté par Yann LD . Évalué à 2.
Je t'invite à t'inscrire à la ML pour que nous puissions t'aider
# debian
Posté par Psychofox (Mastodon) . Évalué à 2.
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 Yann LD . Évalué à 2.
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 .. (!)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.