Guida all'installazione di FUSE da sorgenti

Mer, 20/04/2005 - 18:06

Guida all'installazione di FUSE da sorgenti

Inviato da Moreno 22 commenti

FUSE che significa Filesystem in Userspace è un modulo kernel che crea un'interfaccia user frendly alla gestione dei FileSystem virtuali.
In Linux come si sà tutto è un file, con FUSE il concetto viene esteso e diventa tutto può essere un disco.
L'applicazione più nota e che purtroppo non funziona ancora sotto Mandriva, è GMailFS che fa vedere lo lo spazio di 2GB a disposizione degli utenti del servizio Google GMail come se fosse un disco qualsiasi collegato al nostro computer.
Questo non è che una applicazione ma le possibilità sono limitate solo dalla fantasia.
Fuse è già diventato parte del kernel 2.6.11-rc1-mm1 e probabilmente diverrà parte del kernel stabile fra breve.

Scopo di questa guida è di mostrare come si installa FUSE.
Questa è anche una ottima occasione anche per mostrare come si compila un modulo kernel di tipo standard.
L'ultima parte della guida può anche essere utile per compilare un generico pacchetto sorgente fatto con automake.

Questa guida non può comunque sostituire la documentazione allegata ai vari pacchetti sorgente che deve sempre essere letta attentamente.

1) Apriamo un terminale e diventiamo root

$ su
Password: LaPasswordDiRoot

2) Ora siccome dobbiamo generare un modulo kernel occorre installare i sorgenti del kernel.

# uname -r
2.6.11-6mdk
rpm -q kernel-source-2.6.11-6mdk
package kernel-source-2.6.11-6mdk is not installed
# urpmi kernel-source-2.6-2.6.11-6mdk
installazione di kernel-source-2.6-2.6.11-6mdk.i586.rpm da /mnt/hdusb/Linux/M10CookerBase/main
In preparazione...               #############################################
      1/1: kernel-source-2.6     #############################################

il comando uname ci dice che abbiamo il kernel 2.6.11-6mdk, rpm -q ci dice che i sorgenti non sono installati e urpmi ci installa i sorgenti del kernel corretti.
Per maggiori informazioni consultare la guida Guida all'installazione dei sorgenti del Kernel

3) Creiamo la cartella dove salveremo e compileremo i sorgenti di fuse ed in futuro i programmi che ne fanno uso.

# md /source
# chmod 777 /source
# cd /source
# md fuse
# chmod 777 fuse
# cd fuse

Questo punto non è certo obbligatorio, voi potete salvare i pacchetti dove più vi pare.
Il mio vuole solo essere un consiglio per cercare di mantenere l'ordine all'interno dei dischi.
4) Scarichiamo il pacchetto

Il sito ufficiale di Fuse è http://fuse.sourceforge.net/ mentre i pacchetti si possono scaricare da http://sourceforge.net/project/showfiles.php?group_id=121684.
La versione ufficiale è fuse-2.2.1.tar.gz ma da bravo Cookeriano io uso l'ultima prerelease che ad oggi è fuse-2.3-pre4.tar.gz.
Per l'operazione di download possiamo usare il programma che più preferiamo e salveremo il file in /source/fuse.

5) Decompattiamo il pacchetto

# cd /source/fuse
# tar xzvf fuse-2.3-pre4.tar.gz

Per maggiori informazioni consultare la guida Guida alla decompressione dei pacchetti sorgente

6) Compiliamo fuse

# cd fuse-2.3-pre4
# ./configure 2>err && make 2>>err && make install 2>>err && echo "TUTTO OK"
# less err

Questo è il tipico esempio di compilazione di un pacchetto in c fatto con automake, è una procedura molto comune per questo tipo di linguaggio anche se non è l'unica.
Occorre sempre riferirsi alla documentazione del pacchetto sorgente per maggiori informazioni.
La compilazione si suddivide in tre passaggi ./configure, make e make install
I tre comandi sono collegati fra loro con && e terminati da && echo "TUTTO OK".
Il Comando && serve a serializzare i comandi cioè il comando successivo viene eseguito solo se quello precedente ha successo, quindi il messaggio TUTTO OK apparirà soltanto se tutto è andato bene sino in fondo.
Dopo ogni comando c'è 2>err o 2>>err essi servono a reindirizzare i messaggi d'errore generati dai vari comandi nel file err, 2>err crea il file err e ci scrive dentro mentre 2>>err aggiunge i dati in fondo al file.
Il motivo della creazione di questo file è che durante una compilazione vengono generati due tipi di messaggio, quelli normali di avviso e quelli di errore diretti a due output differenti (lo standard output e lo standard error).
Su display questi messaggi vengono mischiati e quindi si ha difficoltà a trovare gli errori in mezzo ad un mare di messaggi.

Quindi se non vediamo apparire il messaggio TUTTO OK ci basterà lanciare il comando less err per leggerci con calma l'elenco degli errori generati ed eventualmente postarli al forum per una richiesta d'aiuto.

Vediamo ora brevemente a cosa fanno i vari comandi:
./configure Fa una prima analisi del sistema e verifica che tutti i file che necessitano alla compilazione siano presenti.
In pratica verifica se le dipendenze del pacchetto siano risolte, il limite è ovviamente che questo comando si limita a segnalare l'errore e non installa i pacchetti mancanti in caso d'errore.
make Effettua la compilazione dei sorgenti e della generazione degli eseguibili e delle librerie.
make installL'ultimo passaggio è quello relativo all'installazione dei file eseguibili e delle librerie.
Normalmente tutti questi file vengono messi nel ramo secondario /usr/local.

7) Carichiamo il modulo del kernel fuse

# modprobe fuse
# lsmod | grep fuse
fuse                   31980  0

Il primo comando carica il modulo fuse mentre l'altro non fa altro che verificare che sia stato correttamente caricato.

Ora bisogna fare in modo che il modulo fuse sia caricato ad ogni boot.
Per fare ciò occorre editare il file /etc/modprobe.preload e occorre aggiungere in fondo al file la riga fuse.
Come editor io uso di solito quello integrato in mc o joe, voi ovviamente usate quello che più preferite.

8) Rendiamo disponibili le librerie.

Fuse come molti altri programmi sorgente quando vengono compilati non vengono posizionati nei posti canonici /usr/bin e /usr/lib ma bensì nelle cartelle /usr/local/bin e /usr/local/lib mentre non c'è nessun problema per gli eseguibili le librerie risultano di solito irraggiungibili.
Per renderle disponibili occorre editare il file /etc/ld.so.conf e occorre aggiungere in fondo al file la riga /usr/local/lib.
Infine occorre scandire le librerie con il comando:

# ldconfig

Arrivati a questo punto, se tutto è andato bene, abbiamo il nostro modulo FUSE caricato e pronto all'uso.
In una prossima guida descriverò un applicativo che ne usa le funzionalità per proteggere la nostra privacy.

Ciao Ciao Moreno





Commenti

Ritratto di Pinguino
#1

Inviato da Pinguino il Mer, 20/04/2005 - 19:39.

Sorpresa!

Moreno ci ha fatto la sorpresa Smile Vediamo un po' come si comporta questo dannato GmailFS Smile

Proud linux user # 372467 @ http://counter.li.org
Mandriva Cooker 2008 - Kernel 2.6.17-14mdv - KDE 3.5.7 - Gnome 2.16



Ritratto di Moreno
#2

Inviato da Moreno il Mer, 20/04/2005 - 19:43.

Re: Sorpresa!

Ciao

Niente da fare con GMailFS ma ho trovato un programma che mi è molto più utile.

Ciao Ciao MOreno

Addio, e grazie per tutto il pesce.
Avatar by moonlight-dream.



Ritratto di Madman
#3

Inviato da Madman il Mer, 20/04/2005 - 19:44.

Re: Sorpresa!

Molto interessante Moreno, la parte relativa al punto 8 mi era prorpio sconosciuta, grazie mille!!! Big Grin :-D Big Grin

P.S. Evvai che adesso si va giù di GMailFS!!! Big Grin



Ritratto di Pinguino
#4

Inviato da Pinguino il Mer, 20/04/2005 - 19:53.

Re: Sorpresa!

Una nota:

ho letto la guida rapidamente: 'make install' non dovrebbe essere lanciato da root? Oppure mi sbaglio e hai fatto tutto da root?

Proud linux user # 372467 @ http://counter.li.org
Mandriva Cooker 2008 - Kernel 2.6.17-14mdv - KDE 3.5.7 - Gnome 2.16



Ritratto di Moreno
#5

Inviato da Moreno il Mer, 20/04/2005 - 19:54.

Re: Sorpresa!

Ciao

Noooooo Niente GMailFS è una sorpresa.

Anche a me era sconosciuto, mi ha bloccato la guida per una settimana, l'alternativa era copiare le librerie a mano in /usr/lib (una schifezza).
E' scavando che si imparano le cose.

Per Pinguino
Sì queste cose le faccio sempre tutte da root, non mi va di andare continuamente avanti ed indietro.

Ciao Ciao Moreno
P.S. Dopodomani posto l'altra guida.

Addio, e grazie per tutto il pesce.
Avatar by moonlight-dream.



Ritratto di Pinguino
#6

Inviato da Pinguino il Mer, 20/04/2005 - 19:59.

Re: Sorpresa!

Sempre più difficile:

Nel caso volessi salvare gli errori (o gli output) in un file ma contemporaneamente visualizzarli nello stdout/stderr come si fa?

Proud linux user # 372467 @ http://counter.li.org
Mandriva Cooker 2008 - Kernel 2.6.17-14mdv - KDE 3.5.7 - Gnome 2.16



Ritratto di Madman
#7

Inviato da Madman il Mer, 20/04/2005 - 20:18.

Re: Sorpresa!

Puoi aprire un'altra console e lanciare tail -f /path/to/file/containing/errors, oppure non ho capito. Thinking



Ritratto di Pinguino
#8

Inviato da Pinguino il Mer, 20/04/2005 - 20:53.

Re: Sorpresa!

No, intendevo: mentre compilo voglio vedere gli errori sulla shell ma averli anche salvati separatamente in un file.

Proud linux user # 372467 @ http://counter.li.org
Mandriva Cooker 2008 - Kernel 2.6.17-14mdv - KDE 3.5.7 - Gnome 2.16



Ritratto di Madman
#9

Inviato da Madman il Mer, 20/04/2005 - 21:15.

Re: Sorpresa!

Scusami ma non ho capito, ricapitoliamo.

Console 1-> make /configure 2>err && make 2>>err && make install 2>>err && echo "TUTTO OK"

Console 2->tail -f /path/to/err

Dov'è il problema? Perdonami ma poprio no capisco. Sad

Se dopo la compilazione vuoi vedere nella shell il contenuto di tale file basta fare cat /path/to/err. Sad

Io ci ho provato. Thinking



Ritratto di Pinguino
#10

Inviato da Pinguino il Mer, 20/04/2005 - 22:08.

Re: Sorpresa!

si ma tail si aggiorna in "run-time"? .. io volevo semplicemente quello Wink

Proud linux user # 372467 @ http://counter.li.org
Mandriva Cooker 2008 - Kernel 2.6.17-14mdv - KDE 3.5.7 - Gnome 2.16