EasyLFS

1. Introduzione e Scopo

EasyLFS Γ¨ un’implementazione moderna e containerizzata del processo di build di Linux From Scratch. Trasforma il tradizionale build manuale di LFS in una pipeline Docker Compose modulare, ripetibile e pensata sia per scopi educativi che per build riproducibili.

Caratteristiche Principali:

2. Contesto e Motivazioni

Questo progetto nasce come strumento didattico per Linux User Groups (LUG) per dimostrare:

3. Architettura del Sistema

L’architettura Γ¨ basata su 6 servizi Docker sequenziali che rispecchiano i capitoli del libro LFS:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ download-sources│──> lfs-sources (volume)
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚
         v
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ build-toolchain │──> lfs-tools + lfs-rootfs
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚
         v
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚build-basesystem │──> lfs-rootfs (chroot)
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚
         v
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚configure-system │──> lfs-rootfs
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚
         v
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  build-kernel   │──> lfs-rootfs (/boot)
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚
         v
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ package-image   │──> lfs-dist (bootable .img)
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Servizi della Pipeline

Servizio Descrizione Durata
download-sources Scarica tutti i pacchetti sorgente LFS 5-15 min
build-toolchain Costruisce la toolchain di cross-compilazione (Cap. 5-6) 2-4 ore
build-basesystem Entra in chroot e costruisce il sistema LFS finale (Cap. 7-8) 3-6 ore
configure-system Crea i file di configurazione del sistema (Cap. 9) 10-20 min
build-kernel Compila il kernel Linux 20-60 min
package-image Crea immagine disco bootabile con GRUB2 15-30 min

4. Quick Start

# Clone e entra nel progetto
git clone https://github.com/gnovelli/easylfs.git
cd easylfs

# Costruisci il sistema LFS completo (setup automatico incluso)
./easylfs build

# Lo script automaticamente:
# βœ“ Inizializza i volumi Docker
# βœ“ Costruisce tutte le immagini dei servizi
# βœ“ Esegue la pipeline completa a 6 fasi
# βœ“ Crea un sistema LFS bootabile

Comandi Utili

./easylfs status     # Controlla progresso e stato volumi
./easylfs logs       # Visualizza log di build
./easylfs export     # Esporta immagine disco finale
./easylfs shell      # Apri shell nel rootfs LFS
./easylfs clean      # Rimuovi container (mantieni volumi)
./easylfs reset      # Reset completo (rimuove tutto)
./easylfs help       # Mostra tutti i comandi disponibili

5. Accesso Web al Sistema LFS

Dopo aver costruito il sistema LFS, Γ¨ possibile accedervi direttamente dal browser:

Web Terminal (ttyd)

Web Screen (noVNC)

# Avvia entrambe le interfacce
make web

# Oppure singolarmente
make web-terminal    # http://localhost:7681
make web-screen      # http://localhost:6080/vnc.html

# Ferma le interfacce
make web-stop

6. Requisiti di Sistema

7. Output Finali

Il sistema produce i seguenti deliverable:

8. Boot con QEMU

# ModalitΓ  console (raccomandato per SSH/remote)
qemu-system-x86_64 \
    -m 2G \
    -smp 2 \
    -drive file=lfs-12.4-sysv.img,format=raw \
    -boot c \
    -nographic \
    -serial mon:stdio

# Oppure con GUI (se eseguito localmente)
qemu-system-x86_64 \
    -m 2G \
    -smp 2 \
    -drive file=lfs-12.4-sysv.img,format=raw \
    -boot c

9. Struttura del Progetto

easylfs/
β”œβ”€β”€ docker compose.yml          # File di orchestrazione principale
β”œβ”€β”€ easylfs                     # Script CLI unificato
β”œβ”€β”€ services/                   # Implementazioni dei servizi
β”‚   β”œβ”€β”€ common/                 # Utility condivise
β”‚   β”‚   └── logging.sh          # Sistema di logging centralizzato
β”‚   β”œβ”€β”€ download-sources/
β”‚   β”œβ”€β”€ build-toolchain/
β”‚   β”œβ”€β”€ build-basesystem/
β”‚   β”œβ”€β”€ configure-system/
β”‚   β”œβ”€β”€ build-kernel/
β”‚   └── package-image/
β”œβ”€β”€ tests/                      # Suite di test automatizzati
└── dist/                       # Immagini di output

10. Stato del Progetto

βœ… PRODUCTION READY - Pipeline completa, funzionante e verificata!

Versione Attuale: v1.1.2

Tutte le funzionalitΓ  chiave sono complete:

11. Riferimenti

12. Riconoscimenti

Questo progetto Γ¨ costruito sul progetto Linux From Scratch (LFS), utilizzando le istruzioni e comandi di build da LFS 12.4, forniti sotto licenza MIT.

EasyLFS automatizza e containerizza queste istruzioni preservando il valore educativo dell’approccio LFS. Si raccomanda fortemente di leggere il libro LFS originale per comprendere i concetti dietro ogni passaggio.

Crediti:

Scopri il progetto su GitHub