PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

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

jeudi 4 février 2021 à 00:05

La semaine dernière, alors 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 celui-ci 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 ligue 1. 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?… Tu sais utiliser la commande compagnie? C’est un bon début…

  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):

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

Gravatar de miamondo
Original post of miamondo.Votez pour ce billet sur Planet Libre.