# Linux From Scratch

Linux From Scratch (Linux à partir de rien, souvent abrégé en LFS) est un projet lancé par l'informaticien néerlandais Gerard Beekmans (né en 1979) et actuellement maintenu par Bruce Dubbs, qui permet de construire sa propre distribution Linux à partir des sources des logiciels et de comprendre le fonctionnement interne d'un système GNU/Linux.

## Description

Le projet Linux From Scratch est un document (livre) relatant les diverses étapes pour créer un système Linux.
L'argument avancé par le projet en faveur de LFS est l'obtention d'un système compact, optimisé, sûr, personnalisé, et une compréhension accrue du fonctionnement d'un système Linux. Linux From Scratch se différencie des autres systèmes Linux par le fait qu'il faut compiler chaque programme, cette méthode étant bien plus longue qu'installer un système pré-compilé.
Le projet publie en moyenne tous les six mois une nouvelle version du livre. Une version de développement du livre est également disponible, mise à jour régulièrement. Le livre a à l'origine été écrit en anglais mais a été traduit dans d'autres langues comme le français, l'italien ou l'allemand.
En partant d'une distribution Linux existante (installée sur l'ordinateur ou depuis un Live CD), l'utilisateur compile tous les programmes sources essentiels dans une partition distincte, en utilisant les outils de compilation de la distribution hôte. Puis, il se place dans la dite partition, et compile tous les programmes, un à un, mais avec les outils de compilation produits à l'étape précédente.
Il était possible d'utiliser le Live CD proposé par LFS jusqu'à la version 7.0 pour construire le système, il n'est désormais plus maintenu.
Pour garder LFS simple et concis, Beyond Linux From Scratch (BLFS) est disponible afin d'aller plus loin dans la personnalisation du système minimaliste produit avec LFS. BLFS contient des instructions pour mettre en place entre autres le serveur X, la connectivité réseau, le son, et la gestion des imprimantes.
D'autres livres existent tels que :
* Cross Linux From Scratch (CLFS), qui se concentre avant tout sur la cross-compilation
* Hardened Linux From Scratch (HLFS), qui met en avant l'amélioration des sécurités mais n'est plus à jour depuis 2011
* Automated Linux From Scratch (ALFS), qui vise à automatiser la création de LFS

## Liste des composants LFS

Voici la liste des programmes sources inclus dans la version 9.0 (sortie le 01/09/19) de LFS :
* Acl 2.2.53
* Attr 2.4.48
* Autoconf 2.69
* Automake 1.16.1
* Bash 5.0
* Bc 2.1.3
* Binutils 2.32
* Bison 3.4.1
* Bzip2 1.0.8
* Check 0.12.0
* Coreutils 8.31
* DejaGNU 1.6.2
* Diffutils 3.7
* Eudev 3.2.8
* E2fsprogs 1.45.3
* Expat 2.2.7
* Expect 5.45.4
* File 5.37
* findutils 4.6.0
* Flex 2.6.4
* Gawk 5.0.1
* GCC 9.2.0
* GDBM 1.18.1
* Gettext 0.20.1
* Glibc 2.30
* GMP 6.1.2
* Gperf 3.1
* Grep 3.3
* Groff 1.22.4
* GRUB 2.04
* Gzip 1.10
* Iana-Etc 2.30
* Inetutils 1.9.4
* Intltool 0.51.0
* IPRoute2 5.2.0
* Kbd 2.2.0
* Kmod 26
* Less 551
* LFS-Bootscripts 20190524
* Libcap 2.27
* Libelf 0.177
* Libtool 2.4.6
* Libffi 3.2.1
* Libpipeline 1.5.0
* Libtool 2.4.6
* Linux 5.2.8
* GNU M4 1.4.18
* Make 4.2.1
* Man-DB 2.8.6.1
* Man-pages 5.02
* Meson 0.51.1
* GNU MPC 1.1.0
* MPFR 4.0.2
* Ncurses 6.1
* Ninja 1.9.0
* Openssl 1.1.1c
* Patch 2.7.6
* Perl 5.30.0
* Pkg-config 0.29.2
* Procps 3.3.15
* Python 3.7.4
* Psmisc 23.1
* Readline 8.0
* Sed 4.7
* Shadow 4.7
* Tar 1.32
* Tcl 8.6.9
* Texinfo 6.6
* Time Zone Data 2019b
* Util-linux 2.34
* Vim 8.1.1846
* XML::Parser 2.44
* Xz Utils 5.2.4
* Zlib 1.2.11
Certains programmes ne sont présents que dans la version Systemd ou la version Sysvinit. Pour la version Systemd on peut trouver :
* D-Bus 1.12.16
* Systemd 241
Et pour la version SysVinit :
* Sysklogd 1.5.1
* Sysvinit 2.95
* Udev-lfs tarball (udev-lfs-20171102)