Linux from Scratch
# Linux from Scratch

Linux From Scratch (LFS, letteralmente dall'inglese Linux da zero) è un libro scritto da Gerard Beekmans, Matthew Burgess ed altri. Nel libro sono fornite istruzioni su come costruire un sistema operativo partendo dal kernel Linux e da strumenti del sistema operativo GNU partendo dalla compilazione del loro codice sorgente.

## Storia

La storia di LFS inizia nel 1998, quando Gerard Beekmans, non soddisfatto di altre distribuzioni, decide di creare il suo sistema ideale personale che si adatti alle sue esigenze, e scrive i suoi progressi in un pezzo di carta. In breve tempo, il libro riscuote successo, ed attorno ad esso si sviluppa un progetto, con lo scopo di educare l'utente a costruire nel modo più pulito possibile un nuovo sistema operativo. Il libro è coperto da licenza Creative Commons By-Nc-Sa ed è disponibile dal sito di Linux From Scratch, la cui versione corrente è la 8.4. Per mantenere LFS piccolo e conservare il suo scopo, è stato creato un altro libro, Beyond Linux From Scratch, che presenta le istruzioni su come proseguire lo sviluppo del sistema di base creato con LFS.

## Funzionamento

Linux From Scratch consiste in un modo per installare un sistema Linux funzionante attraverso la compilazione e configurazione di tutti i suoi componenti. Tale processo è molto più laborioso rispetto all'installazione di una distribuzione pre-costruita. L'idea di base è che installare i singoli pacchetti uno per uno porterà ad una comprensione dei meccanismi interni di un sistema Linux funzionante. Inoltre, ovviamente, compilare tutto il software specificamente per la piattaforma ed architettura su cui verrà eseguito tende a far risultare i programmi più leggeri e veloci. Infine, è più facile personalizzare i pacchetti installati quando ognuno di essi è stato installato manualmente - "La tua distro, le tue regole".

## Procedura

Per costruire LFS, il costruttore necessita di una partizione vuota e un file system Linux funzionante. Per prima cosa bisogna compilare una toolchain che consiste in strumenti (tools) come gcc, glibc e Perl, usati per compilare LFS. Poi la cartella radice deve essere cambiata (chroot) a quella cassetta degli attrezzi per far partire la costruzione del sistema finale. Uno dei primi pacchetti da compilare è glibc; dopo di che il linker della cassetta degli attrezzi deve essere impostato per linkare glibc appena costruito, così che tutti gli altri pacchetti che verranno costruiti per il sistema finale saranno linkati a quest'ultimo. Non appena le versioni finali dei pacchetti sono installate, queste devono essere quelle utilizzate da bash, piuttosto che quelle temporanee nella cassetta degli attrezzi. Questo si realizza vuotando la tabella hash di bash ed impostando la cartella dei binari della cassetta degli attrezzi per ultima nella variabile di ambiente path del nuovo ambiente.

