Files
2026-10-23 11:31:19 +02:00

6.6 KiB
Raw Permalink Blame History

Linux From Scratch — « The Bible »

Adresse du PDF : http://www.linuxfromscratch.org/lfs/view/stable/index.html

Livre de Gerard Beekmans, éditeur Bruce Dubbs. Édition consultée : 1er septembre 2025. Licence du livre : Creative Commons et MIT, indiquées dans l’annexe F du livre. On ne le recopie pas ici.

À quoi sert ce lien

LFS est une recette pour construire un système Linux en compilant chaque paquet depuis les sources, sur une partition vide. ft_linux demande exactement cela, avec quelques contraintes en plus (login dans la version du noyau, trois partitions, chemin des sources, checksum de l’image). Quand le sujet dit « The Bible », c’est ce livre, pas un autre tutoriel.

Le mot stable dans l’URL suit l’édition courante. Le sommaire ci-dessous est celui du 1er septembre 2025. Au moment de construire, rouvrir cette URL et noter le numéro de noyau du chapitre 10.

Il existe une variante systemd du même livre, à une autre URL. Le sommaire de stable à cette date contient SysVinit et les scripts de boot System V. C’est la variante qui correspond à la liste du sujet (Sysvinit). systemd reste permis par la phrase « like SysV or SystemD », mais ce n’est pas le livre que cette URL ouvre.

Comment le livre est organisé

Le livre se lit dans l’ordre. Sauter un chapitre casse la toolchain : un compilateur construit trop tôt ne sait pas encore produire des programmes pour le nouveau système.

Partie Ce qu’on fait Lien avec ft_linux
Préface Public, architectures, prérequis, rapport aux standards, pourquoi chaque paquet est là Le chapitre « LFS and Standards » cite POSIX.1-2008, FHS 3.0 et LSB 5.0. Ce sont les trois autres liens du sujet
I. Introduction Vue d’ensemble : hôte, nouvelle partition, toolchain temporaire, puis système final C’est le plan de tout le projet
II. Préparer Chapitre 2 : la machine hôte, la partition, le système de fichiers, la variable $LFS. Chapitre 3 : la liste des archives et des correctifs. Chapitre 4 : un utilisateur lfs, l’environnement, les SBU, les tests La partition du chapitre 2. Le sujet en veut au moins trois : racine, /boot, swap. Le livre insiste surtout sur une partition racine et traite le swap à part
III. Toolchain temporaire Chapitres 5 à 7. On compile un compilateur croisé, puis des outils temporaires, puis on entre en chroot On n’utilise pas le GCC de l’hôte pour le système final. Sinon la distro dépend de la machine qui l’a construite
IV. Le système Chapitre 8 : les paquets définitifs, dans un ordre précis. Chapitre 9 : nom d’hôte, réseau, scripts de boot, locale. Chapitre 10 : fstab, noyau, GRUB. Chapitre 11 : redémarrage C’est ici que tombent le hostname = login, Internet, le noyau >= 4.0, GRUB, et le chargeur de modules
V. Annexes Sigles, dépendances, scripts de boot, règles udev, licences L’annexe C dit quel paquet doit être construit avant quel autre. L’annexe D est le démarrage SysV

SBU : Standard Build Unit. Le livre mesure le temps de chaque paquet en multiples du temps que prend le premier GCC. Ça sert à prévoir la durée, pas à être noté.

chroot : la commande change la racine vue par les processus. À partir du chapitre 7, / n’est plus le disque de l’hôte, c’est la partition LFS. On compile « dedans » avant que ce disque sache booter tout seul.

Ce que le livre stable de 2025 ne fait pas à la place du sujet

À garder sous les yeux pendant la construction. Le livre est la méthode. Le PDF est la consigne notée.

Consigne du sujet Dans LFS stable (1er sept. 2025)
Noyau >= 4.0 Le chapitre 10 construit Linux 6.16.1. Ça passe
Sources dans /usr/src/kernel-$(version) Le livre compile le noyau depuis l’arbre des sources du chapitre 3, souvent sous $LFS/sources. Le sujet demande en plus une copie, ou le déballage, à cet endroit. /usr/src est le répertoire FHS prévu pour les sources
Version qui contient le login, fichier vmlinuz-<linux_version>-<student_login> Le livre installe vmlinuz-<version> selon le Makefile du noyau. Le login se ajoute avec CONFIG_LOCALVERSION ou EXTRAVERSION, puis le nom du fichier dans /boot et la ligne GRUB suivent le sujet
Hostname = login Chapitre 9, fichier /etc/hostname. On y met le login, pas lfs
Au moins racine, /boot et swap Le livre peut se contenter d’une racine. Le sujet en veut trois. Le swap est une partition sans système de fichiers, activée par swapon, déclarée dans /etc/fstab
Chargeur de modules « comme udev » Le livre n’installe plus Eudev. Il construit « Udev from Systemd » : les sources udev extraites de l’archive systemd, sans faire de systemd le processus PID 1. Le sujet liste encore Eudev et Udev-lfs Tarball, qui sont les noms des éditions plus anciennes. Le sujet dit que udev est un exemple remplaçable par un équivalent
Sysvinit dans la liste Présent : SysVinit 3.14 et les bootscripts. C’est le PID 1 de cette édition
GRUB Présent : GRUB 2.12, chapitre 10
Pouvoir télécharger et installer encore des paquets Le chapitre 3 suppose qu’on a déjà récupéré les archives (wget ou un navigateur, depuis l’hôte). curl ou wget dans la distro finie, c’est le sujet qui le demande pour la soutenance, pas le sommaire du chapitre 8

Paquets du livre absents de la liste du sujet

L’édition 2025 construit aussi, entre autres : Python, OpenSSL, Meson, Ninja, lz4, zstd, libxcrypt, libelf, libffi. Le noyau et certains outils récents ne se compilent plus sans OpenSSL ni Python. Les ajouter ne contredit pas le sujet : il demande de pouvoir installer des paquets, et il dit que les versions sont libres. Ce ne sont pas des lignes de la liste notée. À la soutenance, on montre la liste du PDF, et on sait expliquer pourquoi OpenSSL est là en plus.

Ordre réel, pas l’ordre alphabétique du PDF

La liste du chapitre IV du sujet est un inventaire. L’ordre de compilation est celui du chapitre 8 du livre. Exemples qui cassent si on inverse :

  • GMP, puis MPFR, puis MPC, puis GCC. GCC refuse de se construire sans ces trois bibliothèques de calcul.
  • Binutils avant GCC. Le compilateur a besoin de l’assembleur et du linker.
  • Glibc après les en-têtes du noyau. La bibliothèque C doit connaître les appels système de ce noyau.
  • Bash, Coreutils, Grep, Sed après Glibc. Ce sont des programmes, ils se lient à la libc.
  • GRUB et le noyau tout à la fin, quand /boot et /etc/fstab existent.

L’annexe C du livre est la table de ces dépendances.