Linux From Scratch (partie 1)

Linux From Scratch signifie Linux à partir de rien. Créé par Gerard Beeskamp, un informaticien néerlandais, ce projet pédagogique détaille le process de compilation et d’installation de tous les paquets nécessaires à la construction d’un système d’exploitation Linux léger, sécurisé et très personnalisé. Ici, pas besoin de démarrer sur une clé USB d’installation. Le seul prérequis est que l’ordinateur « hôte » soit équipé d’une distribution Linux sur laquelle nous allons nous greffer avant de nous en détacher pour voler de nos propres ailes.

J’ai décidé de me lancer dans l’aventure et de publier plusieurs articles pour vous narrer mes péripéties. Je suis en plein chantier. Cela avance plutôt bien puisque je me trouve déjà dans l’environnement chroot, mais ce n’est pas terminé. J’ai essuyé plusieurs échecs. J’aime même été obligé de réinstaller ma distribution Linux Mint suite à une manipulation hasardeuse.

Linux From Scratch est un projet exigeant. Pour en venir à bout, il est nécessaire de maîtriser la ligne de commande. cd, ls, mount, mkdir 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à. En outre, il est impératif d’avoir de bonnes connaissances dans le domaine des distributions Linux. Si vous êtes capables d’installer Ubuntu, c’est très bien, mais je doute que cela soit suffisant. Il faut au moins maîtriser l’installation d’Archlinux. Vous l’aurez compris, ce projet n’est pas fait pour les débutants.

Sur quelle base construire un système LFS

La dénomination Linux à partir de rien est quelque peu exagérée. Pour construire notre LFS, nous allons nous appuyer sur une autre distribution Linux surnommée le système hôte. Nous en aurons besoin pour partitionner le disque dur et télécharger les sources. Ce peut être une Debian, une Ubuntu, une Fedora… Peu importe. Personnellement, je tourne sous Linux Mint. 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 ce faire, il est nécessaire que certains paquets soient déjà installés sur la distribution hôte. Voici un script que nous pouvons lancer dans un terminal et qui nous confirmera que c’est bien le cas.

Toute la difficulté réside dans le fait que le processus est long et qu’une boulette est vite arrivée. Nous basculons de l’utilisateur hôte vers l’utilisateur root. Puis, nous nous connectons en tant qu’utilisateur lfs avant d’entrer dans le chroot en tant que root! Nous déclarons et manipulons des variables d’environnement qui, et là je parle en connaissance de cause, peuvent endommager voire détruire votre système hôte si elles sont mal définies. C’est la raison pour laquelle, contrairement à la documentation officielle, je me refuse à créer la variable ci-dessous. Je préfère travailler avec le chemin absolu.

LFS=/mnt/lfs

Il faut également appréhender, même de manière abstraite, des principes telles que la compilation croisée ou le chroot. Le point de montage de la partition qui hébèrge Linux From Scratch est /mnt/lfs. Lorsque nous allons chrooter dans le nouveau système, /mnt/lfs deviendra la racine de ce dernier, c’est-à-dire /. La construction des outils de compilation demande une grande vigilance. C’est la partie la plus délicate et la moindre erreur empêchera votre système de fonctionner.

Le partitionnement

Avant toute chose, connectez-vous en root. Pour construire le système LFS, il faut créer une partition de 35GB qui lui sera dédiée. Ma partition est /dev/sda4. Je l’ai créée avec Gparted. et je l’ai formatée en ext4.

mkfs.ext4 /dev/sda4

Mon répertoire personnel se trouve sur une partition qui existe déjà : /dev/sda3. Voici le partitionnement de mon disque dur avec les différents points de montage:

Ensuite, il faut créer le répertoire /mnt/lfs pour y monter la partition /dev/sda4.

mkdir -vp /mnt/lfs
mount /dev/sda4 /mnt/lfs

Puis, nous créons le répertoire qui va accueillir toutes les archives des paquets à télécharger. Nous lui donnons les droits d’écriture et sticky. Ce dernier terme signifie que même si de nombreux utilisateurs peuvent écrire dans un fichier, seul le propriétaire du répertoire peut supprimer ce fichier.

mkdir -vp /mnt/lfs/sources
chmod -v a+wt $LFS/sources

Ensuite, nous téléchargeons les sources. Pour ce faire, nous copions le contenu de cette page et nous le collons dans un fichier nommé wget-list.

wget --input-file=wget-list\
--continue\
--directory-prefix=/mnt/lfs/sources

C’est le moment de vérifier si les archives ont été correctement téléchargées. Pour effectuer cette opération, nous créons le fichier md5sums dans lequel nous rajoutons ces instructions. Puis, nous exécutons les lignes ci-dessous. Le fichier md5sums doit être au préalable déplacé dans le répertoire /mnt/lfs/sources.

mv md5sums /mnt/lfs/sources
pushd /mnt/lfs/sources
md5sum -c md5sums
popd

À ce stade, nous créons différents répertoires nécessaires à la construction de notre système LFS. Pour la version 32-bits, supprimez lib64. Le compilateur croisé sera installé dans le répertoire /mnt/lfs/tools car il doit impérativement être séparé des autres programmes.

mkdir -pv /mnt/lfs/{etc,var,lib64,tools} /mnt/lfs/usr/{bin,lib,sbin}
for i in bin lib sbin
do
  ln -sv usr/$i $LFS/$i
done

Création de l’utilisateur lfs qui devient propriétaire récursif de tout le répertoire /mnt/lfs. Pour la version 32-bits, supprimer lib64.

groupadd lfs
useradd -s /bin/bash -g lfs -m -k /dev/null lfs
passwd lfs
chown -v lfs /mnt/lfs/{usr{,/*},lib,var,etc,bin,sbin,tools,lib64,sources}

Le fichier /etc/bash.bashrc est renommé et rendu inactif pour éviter de fâcheuses interactions avec l’environnement hôte.

[ ! -e /etc/bash.bashrc ] || mv -v /etc/bash.bashrc /etc/bash.bashrc.NOUSE

Nous ouvrons un shell de connexion pour l’utilisateur lfs.

su - lfs

Voilà pour cette première partie. La suite des festivités fera l’objet d’un prochain article.

Un commentaire sur « Linux From Scratch (partie 1) »

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