À la découverte de Linux From Scratch (partie 1)

La semaine dernière, tandis que je baguenaudais sur le web, j’ai découvert Linux From Scratch couramment abrégé en LFS. J’ai longtemps cru qu’il s’agissait d’un langage de programmation destiné aux enfants. Mais ce dernier s’appelle Scratch tout court et il ne faut pas le confondre avec LFS qui est un projet complètement différent.

Linux From Scratch, qui signifie Linux à partir de rien, a été créé par un informaticien néerlandais qui s’appelle Gerard Beeskamp. C’est un projet mais également le titre d’un manuel de 300 pages, traduit en français et qui invite le lecteur à construire lui-même son propre système Linux. Là, on ne joue plus à la baballe dans la catégorie Ubuntu, ni même dans celle d’Archlinux. Avec LFS, on évolue en Top 14. Chaque programme doit être compilé, ce qui allonge de manière substantielle le temps d’installation et rend cette dernière un peu plus délicate à négocier.

LFS est un projet pédagogique qui part du principe que c’est en bricolant qu’on devient bricoleur, même si parfois, il faut percuter un extincteur… Il fournit donc une caisse à outils et un mode opératoire détaillé qui va permettre à une personne passionnée, de monter un système Linux compact, léger, sécurisé et très personnalisé.

Confiné et désoeuvré, J’ai décidé de me lancer dans l’aventure et de publier un feuilleton en plusieurs épisodes, un peu à la manière de la planète Archlinux. On verra bien ce que ça va donner. J’espère que le résultat final ne sera pas Linux has crashed! Le fil directeur sera le manuel d’installation de 300 pages en français (version systemd). Je vous donne également le lien vers la version originale en anglais.

Sachez que vous pouvez fort bien construire votre distribution en 32-bit. Si vous la destinez à un usage serveur, ça ne pose pas de problème. Par contre, si vous prévoyez un usage Desktop, l’architecture recommandée est 64-bit.

Pas besoin d’être une développeuse professionnelle (ou un développeur professionnel) pour utiliser Linux from Scratch. Toutefois, il est nécessaire de maîtriser la ligne de commande. cd, ls, mount, mkdir et compagnie sont des termes qui doivent déjà vous parler. Si ce n’est pas le cas, il est préférable de s’arrêter là. « Hein?… Qu’est-ce que tu racontes?… Tu sais utiliser la commande compagnie? »

Il est impératif d’avoir de bonnes connaissances dans le domaine des distributions Linux. Si vous savez installer Ubuntu, c’est déjà bien mais si vous savez aussi installer Archlinux, c’est encore mieux.

https://miamondo.org/installer-archlinux-pas-a-pas/

  1. Sur quelle base construire un système LFS

On va la jouer honnête. La dénomination Linux à partir de rien est pleine de promesses mais elle est mensongère. Pour construire votre LFS, vous allez vous appuyer sur une autre distribution Linux surnommée le système hôte. Vous en aurez besoin au tout début pour partitionner le disque dur et télécharger les sources. Ce peut être une Debian, une Ubuntu, une Fedora… Peu importe. Personnellement, je vais essayer avec une Archlinux. Nous allons, d’une certaine manière, parasiter le système hôte pour nous en détacher en cours de route et bâtir une distribution indépendante. Parasiter n’est peut-être pas le bon terme. Disons que le système hôte va tenir le rôle d’incubateur ou d’utérux, si je puis me permettre d’utiliser ce néologisme!

Pour que le système hôte puisse tenir son rôle, il est nécessaire que les paquets suivants y soient déjà installés (source: manuel d’installation):

  • Bash-3.2 (/bin/sh devrait être un lien symbolique ou physique vers bash)
  • Binutils-2.25 (les versions supérieures à 2.35 ne sont pas recommandées, car elles n’ont pas été testées)
  • Bison-2.7 (/usr/bin/yacc devrait être un lien vers bison ou un petit script qui exécute bison)
  • Bzip2-1.0.4
  • Coreutils-6.9
  • Diffutils-2.8.1
  • Findutils-4.2.31
  • Gawk-4.0.1 (/usr/bin/awk devrait être un lien vers gawk)
  • GCC-6.2, y compris le compilateur C++ g++ (les versions supérieures à 10.2.0 ne sont pas recommandées, car elles n’ont pas été testées)
  • Glibc-2.11 (les versions supérieures à 2.32 ne sont pas recommandées car elles n’ont pas été testées)
  • Grep-2.5.1a
  • Gzip-1.3.12
  • Noyau Linux-3.2
  • M4-1.4.10
  • Make-4.0
  • Patch-2.5.4
  • Perl-5.8.8
  • Python-3.4
  • Sed-4.1.5
  • Tar-1.22
  • Texinfo-4.7
  • Xz-5.0.0

Pour vérifier que ces programmes sont réellement présents avec les bonnes versions, exécutez le script suivant et comparez tous les numéros de version:

!/bin/bash
# Script to list version numbers of critical development tools

export LC_ALL=C
bash --version | head -n1 | cut -d" " -f2-4
MYSH=$(readlink -f /bin/sh)
echo "/bin/sh -> $MYSH"
echo $MYSH | grep -q bash || echo "ERROR: /bin/sh does not point to bash"
unset MYSH
echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-
bison --version | head -n1
if [ -h /usr/bin/yacc ]; then
    echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`";
elif [ -x /usr/bin/yacc ]; then
    echo yacc is `/usr/bin/yacc --version | head -n1`
else
    echo "yacc not found"
fi
bzip2 --version 2>&1 < /dev/null | head -n1 | cut -d" " -f1,6-
echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2
diff --version | head -n1
find --version | head -n1
gawk --version | head -n1
if [ -h /usr/bin/awk ]; then
    echo "/usr/bin/awk -> `readlink -f /usr/bin/awk`";
elif [ -x /usr/bin/awk ]; then
    echo awk is `/usr/bin/awk --version | head -n1`
else
    echo "awk not found"
fi
gcc --version | head -n1
g++ --version | head -n1
ldd --version | head -n1 | cut -d" " -f2- # glibc version
grep --version | head -n1
gzip --version | head -n1
cat /proc/version
m4 --version | head -n1
make --version | head -n1
patch --version | head -n1
echo Perl `perl -V:version`
python3 --version
sed --version | head -n1
tar --version | head -n1
makeinfo --version | head -n1 # texinfo version
xz --version | head -n1
echo 'int main(){}' > dummy.c && g++ -o dummy dummy.c
if [ -x dummy ]
    then echo "g++ compilation OK";
else
    echo "g++ compilation failed"
fi
rm -f dummy.c dummy

Voilà pour cette introduction. Dans le prochain épisode, nous allons entrer dans le vif du sujet puisque nous allons partitionner le disque dur destiné à héberger la distribution LFS. Nous allons également télécharger les premières sources.

À bientôt

5 commentaires sur « À la découverte de Linux From Scratch (partie 1) »

  1. Joli article, j’attends la suite !! 😉

    Un tuto en FR sur une distro à compiler et à installer, ça me fait euh… baver pour être honnête 😉

    J'aime

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s