Linux Tools · 6 min read · Jan 03, 2026

IHLFS: Controllo Completo Su Cosa Stai Installando

IHLFS: Controlla Cosa Stai Installando (E Altro)

Introduzione

Come utente di LFS (vedi: Linux From Scratch) sono interessato a quali pacchetti sono installati sul mio sistema.

Una breve introduzione su LFS: LFS non è una distribuzione come Suse o RedHat, la comunità LFS mira a fornire una guida per configurare il proprio sistema Linux. Sul sito web è descritto in modo molto dettagliato come puoi costruire il tuo sistema Linux da zero. Ogni pacchetto è installato compilando e installando il sorgente.

Nella comunità LFS ci sono state indagini su come tenere traccia dei pacchetti installati. Al momento non esiste ancora uno strumento del genere.

Jhalfs, l’ultimo strumento per automatizzare il processo di costruzione di un sistema LFS, ha la capacità di utilizzare Paco, (vedi: paco.sf.net)..

Paco si basa sul meccanismo LD_PRELOAD, la stessa tecnica è utilizzata ad esempio in Gentoo. Questa tecnica sembra promettente, ma ha alcuni seri svantaggi.

Ho cercato un altro modo per tenere traccia di cosa fa un comando come

make install

sul mio sistema. Ho trovato questa soluzione, grazie all’ottima idea di Pierre Hebert. Lui descrive in un howto nella sezione “Hints” del sito web di LFS o di un mirror (vedi: Leggi Suggerimenti Online, “TRIP, un TRIvial Packager per LFS (e altri sistemi linux)”) come puoi ottenere il controllo completo su cosa fa un comando di installazione arbitrario. Con esso puoi tenere traccia di ogni file aggiunto, ogni modifica e file o directory eliminati. Non funziona solo con il comando “make install” menzionato sopra, ma può anche tenere traccia di tutto ciò che fa un comando come RMP.

Lo strumento IHLFS che ho sviluppato è molto basilare e si basa sulla stessa tecnica di TRIP. Ti consente di avere un’anteprima di come apparirà il tuo sistema dopo aver installato file o un intero pacchetto o qualsiasi cosa tu voglia aggiungere al tuo sistema. Quando non sei soddisfatto di come appaiono le cose - ad esempio vuoi che alcune parti siano installate in posti diversi - puoi sempre tornare indietro.

Il nome IHLFS sta per:

Install Helper Linux From Scratch

Questo viene fatto creando una copia esatta del tuo sistema (una sorta di sistema virtuale). In questa copia sei completamente libero di fare ciò che vuoi, senza alcun effetto sul sistema originale. Ogni volta l’utente ha la possibilità di “spostare” o “svuotare” le modifiche dal sistema virtuale a quello reale.

Un altro uso per questa tecnica è creare un ambiente per un utente, che pensa di essere in un sistema reale, e si comporta in questo modo. Ma nel frattempo può fare ciò che desidera, senza fare nulla di dannoso per il sistema reale.

Tecnica di base

Questo può sembrare magia, ma in realtà è possibile solo combinando alcune tecniche tra quelle disponibili per Linux.

Utilizzando il filesystem Unionfs, un chroot e alcune directory rimontate ben scelte, puoi impostare questo sistema virtuale.

Unionfs

La parte più importante è l’uso di unionfs. Unionfs ti dà la possibilità di creare un filesystem, che è l’unione di almeno due altri. Vedi www.unionfs.org per ulteriori informazioni. Ora, facendo in modo che il nuovo filesystem sia l’unione del nostro filesystem originale (la radice) in sola modalità lettura, e di un filesystem temporaneo (la cache) in modalità lettura-scrittura, avrai un filesystem che appare esattamente come il tuo filesystem originale, ma in cui puoi modificare, eliminare e/o aggiungere file senza fare nulla al tuo sistema originale. Questo non è possibile, perché la radice è montata in sola lettura. Ogni modifica è memorizzata da unionfs nella cache.

L’unica differenza tra il sistema originale e quello appena creato è il percorso: nel nuovo sistema inizia sempre con il percorso del punto di montaggio dell’unione. Questo è il motivo per cui il passo successivo è necessario.

Chroot

Chrootando a questo punto di montaggio, entri in un ambiente che è assolutamente una copia del tuo sistema. Puoi fare quello che vuoi, anche rimuovere directory e file cruciali. Provalo! Guarda fino a dove puoi arrivare prima che il tuo sistema si blocchi.

(Re)Montaggio

Una cosa in più che dovrai fare è (re)montare diverse directory cruciali come /dev, /proc e /sys. Questo perché il filesystem union non preserva i punti di montaggio esistenti.

È anche consigliato rimontare alcune directory speciali come /tmp. Questa directory è utilizzata dallo script di configurazione e dal comando make per memorizzare risultati temporanei intermedi. Non vuoi che il programma ihlfs registri questi come cambiamenti significativi. Questo vale anche per la directory in cui viene costruito il sorgente.

Requisiti

Naturalmente avrai bisogno di una versione recente di Linux. Controlla il sito web per i kernel supportati e la versione di Unionfs di cui hai bisogno. Un kernel diverso significa una versione diversa di unionfs.

Il tuo kernel deve supportare il caricamento dei moduli.

Inoltre, è necessaria una partizione con spazio sufficiente per montare la cache. Al momento questa è una partizione separata.

Ho confrontato le prestazioni di una build nel mio sistema normale e nel sistema virtuale, non ho visto differenze significative.

Infine, IHLFS utilizza comandi che dovrebbero essere presenti in qualsiasi sistema Linux (come tar, chroot, modprobe, mount, bash, find, grep e bzip2).

Installazione

Scarica il pacchetto dal mio sito web:

wget http://linux.bononline.nl/linux/ihlfs/src/ihlfs-1.0.tar.bz2

Estrai l’archivio in una directory adatta:

tar -xjf ihlfs-1.0.tar.bz2  
cd ihlfs-1.0

L’installazione di ihlfs avviene tramite lo

./install.sh

script. Crea semplicemente alcune directory e copia alcuni file.

Come funziona

Prima di poter iniziare assicurati che il filesystem in cui andrà la cache sia montato. E controlla le impostazioni nel file di configurazione /etc/ihlfs/ihlfs.conf. Quando tutto è a posto, avvia il programma con:

ihifs

Riceverai alcuni messaggi, e quando tutto è a posto verrà mostrato un prompt:

/:>

Ora puoi inserire qualsiasi comando tu voglia. Nota che l’unione non supporta la preservazione dei punti di montaggio. Questo può causare effetti come directory sorgente che sono montate dove normalmente costruisci il tuo software non sono disponibili.

Quando vuoi vedere le modifiche finora, digita:

list

Questo mostra un riepilogo delle modifiche.

Quando vuoi spostare tutte le modifiche dalla cache alla radice, inserisci:

flush

Questo comando crea anche un backup dei file e delle directory che verranno sovrascritti, modificati o eliminati e un backup di tutto ciò che verrà installato.

Rimuovere tutte le modifiche avviene tramite:

clean

Infine, fermare la sessione avviene con:

quit o exit

Esempi

Alcuni semplici esempi qui. Aggiungi un file:

~:>touch /tmp/test4ihlfs  
~:>list

dà nel visualizzatore mcview:

Riepilogo.
--------
Non sono stati trovati file e/o directory aggiunti, eliminati, modificati o sovrascritti!

Questo è da aspettarsi, la directory /tmp sta bypassando l’unione.
Ora crea un file da qualche altra parte:

~:>touch /var/tmp/test4ihlfs  
~:>list
Riepilogo.
--------
File aggiunti.
------------
/var/tmp/test4ihlfs

Contatto

Se trovi bug o hai un’idea su come le cose potrebbero essere fatte in modo migliore, fammi sapere! Il mio indirizzo email è stef at bononline dot nl. Ma prima di andare oltre, vorrei dire che so che il modo in cui ho programmato le cose potrebbe non essere sempre il più efficace. L’ho fatto deliberatamente. Quando si tratta di stile di programmazione, preferisco la facilità di lettura all’efficacia.

TODO

Questo pacchetto non è ancora finito. Chiunque sappia qualcosa sui gestori di pacchetti può indicare loro:

  • mettere la scelta dell’editor nel file di configurazione

  • ora ihlfs ha solo una modalità: interattiva. Crea un ambiente per l’utente. Una modalità da riga di comando come:

ihlfs --command "make install"

dovrebbe essere possibile.

  • aggiungere flag per identificare il nome del pacchetto e la versione in fase di installazione.

  • aggiungere alcuni esempi con vari comandi

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.