Upload
federicounimib
View
203
Download
0
Embed Size (px)
Citation preview
Università degli Studi di Milano BicoccaDipartimento di Informatica, Sistemistica e ComunicazioneCorso di laurea in Informatica
Progetto e realizzazione di una distribuzione Linux a scopi didattici
Relatore: Luca BernardinelloCo-relatore: Claudio Ferretti
Relazione della prova finale di:
Federico ValentiniMatricola 726584
Anno Accademico 2012-2013
Indice
1 Introduzione 1
1.1 Problema affrontato . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Obiettivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Che cos’e una distribuzione Live? . . . . . . . . . . . . . . . . 2
1.4 Panoramica distribuzioni Live esistenti . . . . . . . . . . . . . 3
1.4.1 Tiny Core Linux . . . . . . . . . . . . . . . . . . . . . 4
1.4.2 Kali Linux . . . . . . . . . . . . . . . . . . . . . . . . . 4
2 GNU/Linux: da ieri ad oggi 5
2.1 La storia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Kernel: la sua architettura . . . . . . . . . . . . . . . . . . . . 7
3 Progettazione e costruzione di una distribuzione
a fini didattici 11
3.1 Introduzione a Linux From Scratch . . . . . . . . . . . . . . . 11
3.1.1 Che cos’e? . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.1.2 Perche Linux From Scratch? . . . . . . . . . . . . . . . 12
3.1.3 Andare oltre Linux From Scratch . . . . . . . . . . . . 12
3.2 Preparazione dell’ambiente di lavoro . . . . . . . . . . . . . . 13
3.2.1 Prerequisiti . . . . . . . . . . . . . . . . . . . . . . . . 13
3.2.2 Creazione della partizione LFS . . . . . . . . . . . . . 15
3.2.3 Creazione del file system . . . . . . . . . . . . . . . . . 15
3.2.4 Montare la nuova partizione . . . . . . . . . . . . . . . 16
3.2.5 Pacchetti software e patches . . . . . . . . . . . . . . . 16
i
ii INDICE
3.2.6 Ultime preparazioni . . . . . . . . . . . . . . . . . . . . 17
3.3 Costruzione del sistema LFS . . . . . . . . . . . . . . . . . . . 19
3.3.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . 19
3.3.2 Costruzione di un sistema temporaneo . . . . . . . . . 20
3.3.3 Costruzione di LFS . . . . . . . . . . . . . . . . . . . . 21
3.3.4 Impostazione script d’avvio del sistema . . . . . . . . . 24
3.4 Personalizzazione del sistema : Beyond Linux From Scratch . . 29
3.4.1 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . 29
3.4.2 Post LFS . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.4.3 Una prima analisi . . . . . . . . . . . . . . . . . . . . . 31
3.4.4 Interfaccia grafica . . . . . . . . . . . . . . . . . . . . . 32
4 Conclusioni e sviluppo futuro 39
4.1 Problemi incontrati . . . . . . . . . . . . . . . . . . . . . . . . 39
4.2 Possibili sviluppi . . . . . . . . . . . . . . . . . . . . . . . . . 40
Bibliografia 41
Capitolo 1
Introduzione
1.1 Problema affrontato
Il problema affrontato in questo stage e stata la progettazione e la co-
struzione di un sistema GNU/Linux autonomo e funzionante partendo dalla
compilazione dei sorgenti che lo compongono.
Per fare cio ho utilizzato il libro Linux From Scratch1 di Gerard Beekmans
nel quale vengono fornite tutte le informazioni per la creazione di un sistema
Linux minimale da seguire passo a passo. [1]
Dopodiche la mia attenzione si e spostata verso il libro Beyond Linux From
Scratch2 il quale presenta tutta la parte di personalizzazione del proprio si-
stema precedentemente creato, in base alle proprie esigenze e all’obiettivo
che si vuole raggiungere. [2] La cosa interessante di quest’ultimo libro e che il
lettore risulta essere totalmente indipendente, ovvero puo approfondire solo
le parti che decide essere utili al fine di creare la propria distribuzione, che
sia un sistema utente oppure un router o un server.
La filosofia di quest’ultima guida e appunto: you only install what you need.
1http://www.linuxfromscratch.org2http://www.linuxfromscratch.org/blfs/
1
2 1. Introduzione
1.2 Obiettivi
L’obiettivo che mi sono prefissato e stata la creazione di una distribuzione
che possa essere utile in ambito accademico affrontando in particolare il caso
in cui uno studente si iscriva al corso di Informatica nell’Universita degli Stu-
di di Milano-Bicocca, anche se potenzialmente potrebbe essere allargata ad
un qualsiasi utente iscritto ad una facolta legata all’ambito dell’informatica.
Per questo motivo la mia idea e stata quella di creare una distribuzione
desktop molto snella e veloce ma d’altra parte anche completa della parte
software che ogni studente di informatica dovrebbe avere a sua disposizione
per affrontare il suo persorso di studi.
Analizzando tutti questi requisiti iniziali sono arrivato alla conclusione che
questa distribuzione Linux doveva essere di tipo LIVE-CD per potere essere
eseguita in maniera indipendente in qualsiasi PC portatile e/o fisso senza do-
ver ricorrere ad una installazione su hard disk in quanto questa distribuzione
dovrebbe essere vista dall’utente come un ambiente di lavoro e non come un
sistema operativo a se, anche se tecnicamente risulta essere tale.
1.3 Che cos’e una distribuzione Live?
“L’espressione LiveCD, Live CD o LiveDistro (per esteso distribuzione
live) viene genericamente utilizzata per indicare una distribuzione di un si-
stema operativo in grado di essere avviato in fase di boot del computer ed
eseguito senza richiederne l’installazione su hard disk.” [3]
L’utilizzo di una distribuzione live nel mio caso risulta molto piu conveniente
in quanto l’utente non avra problemi riguardanti l’installazione di un sistema
operativo (es. partizione del disco) inoltre potra anche utilizzare un software
per l’esecuzione di una macchina virtuale come ad esempio VirtualBox3,
gratuito ed open-source disponibile per la maggior parte dei sistemi operati-
3http://www.virtualbox.org/
1.4 Panoramica distribuzioni Live esistenti 3
vi attualmente in circolazione come Windows, Linux, Macintosh e Solaris.
1.4 Panoramica distribuzioni Live esistenti
Possiamo affermare che i primi sistemi operativi nati, come ad esempio
le prime versioni di MS-DOS e APPLE DOS, erano tecnicamente dei siste-
mi live in quanto venivano eseguiti su un supporto di archiviazione esterno,
ovvero i vecchi Floppy Disk.
Possiamo pero iniziare a parlare di vere e proprie distribuzioni live con l’av-
vento dei CD-ROM.
La prima distribuzione live che ebbe una notevole notorieta fu KNOPPIX4
sviluppata da Klaus Knopper e rilasciata nel 2000. Il principale utilizzo di
questa distribuzione era di rescue per sistemi che risultavano danneggiati ma
trovo largo utilizzo anche come sistema desktop per un’utenza media e diede
anche la possibilita di scegliere se essere usato in modalita live da cd/dvd
oppure di essere installata in maniera persistente su hard-disk
Da qui in poi si ebbe un notevole susseguirsi di nuove distribuzioni live uti-
lizzabili per i piu variegati scopi, da sistemi per l’analisi forense a sistemi
specializzati in rilevamenti di vulnerabilita, da sistemi adatti allo sviluppo
software ad antivirus in grado di ripulire un sistema corrotto.
Segue una breve descrizione di due distribuzioni Live basate su kernel Li-
nux per fare capire al lettore la potenza e la elasticita che questo sistema
operativo puo offrire partendo da una distribuzione minimale ed in grado di
essere avviata in uno spettro di macchine molto ampio, ad una distribuzione
molto completa e versatile utilizzata in ambito di sicurezza.
4http://www.knoppix.org/
4 1. Introduzione
1.4.1 Tiny Core Linux
Tiny Core Linux 5 e sicuramente una delle distribuzioni Linux piu mini-
mali mai create. Se viene messo a confronto risulta essere da 1400
a 1100
della
dimensione dei maggiori sistemi operativi utilizzati.
Nonostante la sua dimensione ridottissima (il core pesa indicativamente 10MB
e viene eseguito completamente in RAM) risulta essere una distribuzione
molto stabile e molto customizzabile per quanto riguarda la parte software
(esiste un App Browser che permette diverse tipologie di installazioni per
garantire sempre un ambiente il piu ottimizzato possibile) e risulta anche
molto veloce e altrettanto supportato a livello di sviluppo e rilasci, il che fa
di questa distribuzione un ottimo strumento di recovery ma anche di desktop
environment.
1.4.2 Kali Linux
Una qualsiasi persona interessata all’ambiente legato alla sicurezza in-
formatica avra perlomeno sentito parlare di Backtrack6, una distribuzione
basata sulla struttura di Ubuntu7/Debian8 che aveva come obiettivo quello
di racchiudere in un unico sistema tutti i principali software e tools che un
tester di sicurezza necessitava.
Dalle ceneri di questo progetto e nato Kali Linux9, distribuzione che al gior-
no d’oggi conta piu di 300 tools di penetration testing divisi per tipologia:
dall’analisi di vulnerabilita ai tools di exploitation, dallo sniffing agli attacchi
a rete wireless fino al reverse engineering e agli stress testing.
5http://www.tinycorelinux.net6http://www.backtrack-linux.org/7http://www.ubuntu-it.org/8http://www.debian.org/index.it.html9http://www.kali.org/
Capitolo 2
GNU/Linux: da ieri ad oggi
2.1 La storia
Gli inizi
Ideato da Linus Torvalds, Linux vide uscire la sua prima versione nel
settembre del 1991 come variante di Minix, un sistema operativo creato a
fini didattici dal professore Andrew S. Tanenbaum dell’Universita Vrije
di Amsterdam. [4]
Immediata fu la decisione, da parte di Linus, di rendere disponibile il codi-
ce sorgente del sistema operativo appena creato e questo diede vita ad una
comunita costantemente impegnata a verificare i codici sorgenti, apportare
modifiche e produrre miglioramenti.
Le prime versione del kernel Linux erano molto instabili e non poteva consi-
derarsi ancora un sistema operativo completamente autonomo in quanto di-
pendeva ancora da Minix per la compilazione dei sorgenti. Inoltre mancavano
molte funzionalita che risultavano disponibili nei sistemi UNIX di allora come
ad esempio il supporto dei Floopy Disk, un meccanismo di autenticazione e
la gestione della memoria virtuale.
5
6 2. GNU/Linux: da ieri ad oggi
I primi sviluppi
Con il passare dei primi rilasci Linux acquisto una notevole popolarita
tra gli sviluppatori e la comunita inizio a crescere in maniera esponenziale
sistemando i principali bug che ancora lo caratterizzavano.
In questo momento Linux inizio ad essere considerato per la prima volta una
vera e propria alternativa ai sistemi operativi gia esistenti, quali Windows,
Unix e Solaris.
Anche se questo sistema operativo si stava man mano consolidando e sta-
va creando intorno a se una realta propria, il suo utilizzo trovava riscontro
perlopiu in realta accademiche in quanto le procedure di installazione e con-
figurazione risultavano molto complesse e poco adatte ad un generico utente
desktop.
La crescita
Durante la fine degli anni ’90, il kernel di Linux arrivo alla versione 2.2 e
porto numerose novita quali: supporto TCP/IP, multiprogrammazione, ge-
stione memoria virtuale, supporto audio e file system e gestione della rete
che permetteva l’analisi del traffico a livello di singoli pacchetti.
Tutti questi miglioramenti non furono decisivi per entrare nel mercato de-
sktop in quanto l’utenza preferiva un prodotto caratterizzato dall’estetica e
da una interfaccia grafica curata, piuttosto che da un set di configurazioni
kernel alle quali potenzialmente non avrebbe mai messo mano.
Questi sviluppi pero portarono molto interesse da parte di aziende quali IBM,
Compact e Oracle che iniziarono a credere in questo progetto, chiedendo pero
una maggiore compatibilita per sistemi di fascia alta e anche sistemi embed-
ded.
Tutto questo arrivo con la nuova versione 2.4 del kernel Linux.
2.2 Kernel: la sua architettura 7
L’arrivo delle distribuzioni
Nonostante la notorieta di Linux stesse crescendo in maniera esponenziale,
il mercato dei PC risultava ancora dominato da Microsoft e Apple in quanto
chi voleva installarsi Linux doveva scaricare i sorgenti, editare manualmente i
file di configurazione, provvedere personalmente alla compilazione del kernel
e installarsi la componente software.
Chiaramente tutto questo insieme di tecnicismi scoraggiava gran parte degli
utenti desktop e fu anche una spinta per gli sviluppatori di creare una pro-
cedura di installazione il piu user friendly possibile.
A questo punto iniziarono a nascere le distribuzioni di Linux (al momento
contiamo piu di 300 progetti in sviluppo1), ovvero delle versioni complete di
pacchetti software e solitamente provviste anche di interfaccia grafica, quindi
dedicate ad ambienti desktop.
2.2 Kernel: la sua architettura
Con il termine kernel indichiamo un software che costituisce il nucleo
di un sistema operativo, il quale ha compito di mediare l’accesso, da parte
dei processi in esecuzione su un calcolatore, all’hardware, in modo sicuro ed
indipendente.
Il kernel di Linux e un kernel monolitico, ovvero definisce un’interfaccia
sull’hardware in grado di implementare tutti i servizi richiesti dal sistema
operativo che possono essere raggruppati in questi gruppi:
• Gestione dei processi
• Comunicazione tra processi
• Gestione della memoria
• Gestione del file system
1http://lwn.net/Distributions/
8 2. GNU/Linux: da ieri ad oggi
• Gestione dell’I/O
• Gestione della rete
http://upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Linux kernel map.png/800px-Linux kernel map.png
Il gestore dei processi e la parte del kernel responsabile per la gestio-
ne dei processi, dalla loro creazione alla esecuzione fino alla loro rimozione
dal sistema mentre il sottoinsieme comunicazione tra processi permette
ai processi sia di scambiarsi informazioni tramite piu tipologie di protocolli
sia di condividere informazioni tra di loro.
Il gestore della memoria gestisce l’accesso in memoria da parte dei pro-
cessi e assegna ad ognuno di loro uno spazio di indirizzamento virtuale in
memoria.
La gestione del file system fa si che l’utente possa navigare ed accedere
ai vari file e directory dislocati lungo l’albero relativo, mentre quando una
2.2 Kernel: la sua architettura 9
chiamata del sistema deve accedere ad un file sfrutta il file system virtuale,
un’interfaccia che permette di accedere al file system (esempio ext2 e NFS ).
Linux fornisce anche una gestione della rete, cioe un insieme di servizi
mirati allo scambio di dati tra piu elaboratori connessi ad una rete. [5]
Capitolo 3
Progettazione e costruzione di
una distribuzione
a fini didattici
3.1 Introduzione a Linux From Scratch
3.1.1 Che cos’e?
Linux From Scratch1 nasce da un’idea di Gerard Beekmans, il quale
decise di scrivere una guida dove venisse affrontato tutto il percorso di in-
stallazione e personalizzazione di un sistema Linux partendo dai sorgenti che
lo compongono.
Dopo i primi appunti che prese durante questa sua analisi, inizio a scri-
verne un libro e ottenne un notevole successo. Cosi creo attorno a se una
cerchia di collaboratori ed una fitta comunita di appassionati che porta-
no avanti questo progetto, rilasciando costantemente nuove versioni (l’ulti-
ma versione al giorno d’oggi e la 7.4, rilasciata nel settembre 2013) e ren-
dendo tutto questo materiale completamente gratuito e scaricabile dal sito
http://www.linuxfromscratch.org/
1http://www.linuxfromscratch.org/
11
123. Progettazione e costruzione di una distribuzione
a fini didattici
3.1.2 Perche Linux From Scratch?
Una delle piu frequenti domande che viene posta agli utenti di LFS2 e il
perche una persona debba intraprendere un percorso cosi lungo e impegnativo
per costruirsi una propria distribuzione Linux quando al giorno d’oggi ne
esistono gia centinaia e centinaia disponibili gratuitamente sul web e adatte
alla maggior parte degli scopi.
Il perche della mia scelta e dovuto principalmente all’interesse personale verso
questo sistema operativo e questo tipo di lavoro, ovvero analisi di GNU/Linux
e progettazione di una distribuzione autonoma e funzionante, mi ha permesso
di approfondire molto questo sistema operativo per capire in effetti come esso
lavori.
Un’ altra motivazione che puo spingere un utente ad affrontare questo tipo
di percorso e che quando installiamo una distribuzione creata da terzi, si
accetta di installare anche pacchetti software e tools che molto spesso non
vengono neanche utilizzati, costringendoci ad una perdita di spazio sul disco
fisso e ad un conseguente calo di prestazioni.
Utilizzando LFS e possibile creare distribuzioni perfettamente funzionanti
che occupano all’incirca 100MB.
3.1.3 Andare oltre Linux From Scratch
L’obiettivo fondamentale di LFS e quello di creare una distribuzione
GNU/Linux minimale ma al tempo stessa autonoma e funzionante.
Arrivato a questo punto l’utente dovra iniziare ad effettuare delle scelte,
ovvero configurare ed installare tutti i pacchetti per costruirsi la propria di-
stribuzione, che sia un server oppure un sistema desktop, l’idea di fondo e:
installa solo quello che ti serve.
Per aiutare l’utente ad affrontare questo percorso di customizzazione del pro-
prio sistema LFS e disponibile la guida Beyond Linux From Scratch di
Randy McMurchy.
2abbreviazione di Linux From Scratch
3.2 Preparazione dell’ambiente di lavoro 13
Questa guida ha una modalita di lettura molto diversa rispetto a LFS in
quanto non si presenta come un percorso lineare da seguire dall’inizio alla
fine ma il lettore deve ricercare direttamente le sezioni che lo riguardano (per
esempio security, disk management o graphics libraries) e procedere alle con-
figurazioni, compilazioni ed installazioni dei pacchetti scelti.
3.2 Preparazione dell’ambiente di lavoro
3.2.1 Prerequisiti
Un sistema LFS viene costruito partendo da una distribuzione GNU/Li-
nux gia presente nella propria macchina (nel mio caso Lubuntu3 13.10, d’ora
in poi chiamato sistema host), il quale viene utilizzato come sistema d’ap-
poggio tramite l’utilizzo di un compilatore, linker e shell per la costruzione
del nostro sistema LFS.
Nella guida e presente un paragrafo introduttivo4 dove vengono introdotti i
pacchetti software che il sistema host deve aver installato per procedere con
la costruzione di LFS, i quali risultano essere nel mio caso:
• Autoconf-2.69
• Automake-1.14
• Bash-3.2
• Binutils-2.17
• Bison-2.3
• Bzip2-1.0.4
• Coreutils-6.9
3http://lubuntu.net/4http://www.linuxfromscratch.org/lfs/view/stable/prologue/hostreqs.html
143. Progettazione e costruzione di una distribuzione
a fini didattici
• Diffutils-2.8.1
• Findutils-4.2.31
• Gawk-4.0.1
• GCC-4.1.2
• Glibc-2.5.1
• Grep-2.5.1a
• Gzip-1.3.12
• Linux Kernel-2.6.32
• M4-1.4.10
• Make-3.81
• Patch-2.5.4
• Perl-5.8.8
• Sed-4.1.5
• Tar-1.18
• Texinfo-4.9
• Xz-5.0.0
Per facilitare il lettore, sempre in questo paragrafo, viene fornito uno
script bash in grado di controllare nel proprio sistema host se tutti que-
sti pacchetti sono gia installati correttamente, altrimenti bisogna procede-
re con l’installazione dei pacchetti mancanti per continuare la procedura di
preparazione dell’ambiente di lavoro.
3.2 Preparazione dell’ambiente di lavoro 15
3.2.2 Creazione della partizione LFS
L’ambiente ideale per la creazione di un sistema LFS, come qualsiasi altro
sistema operativo, e una partizione dedicata vuota in grado di ospitarlo.
La guida ci informa che la grandezza minima della partizione in grado di
contenere i tarballs dei sorgenti e le loro compilazioni e 2.8 GB, mentre se
si ha gia l’intenzione di creare un sistema operativo completo di interfacce
grafiche e software aggiuntivo sta all’utente dare una stima iniziale della
partizione (nel mio caso ho optato per una partizione di 20GB).
Un buona idea, sempre suggerita dalla guida, e quella di costruire una piccola
partizione swap5 secondo i seguenti criteri:
• da 1 fino a 2 volte la ram: per memorie ram comprese tra 256MB e
768MB
• pari o inferiori alla ram: per memorie ram superiori ad 1GB
altrimenti e anche possibile utilizzare la stessa partizione swap del siste-
ma host gia presente nella proprio elaboratore.
La mia scelta e stata quella di creare una partizione swap dedicata di di-
mensione pari alla ram, cioe di 1GB. [6]
3.2.3 Creazione del file system
Ora che la partizione e stata creata, bisogna procedere con la creazione
del file system, un’architettura che comprende tutti i metodi di organizza-
zione dei file e delle directory in un dispositivo di archiviazione.
Per quanto riguarda i sistemi GNU/Linux vengono adottati file system di
tipo ext2, ext3 e ext4.
Quest’ultimo tipo fa parte dei cosiddetti Journaled File System, una ti-
pologia di file system di ultima generazione in grado di gestire dischi fissi di
5estensione della memoria Ram attraverso l’utilizzo di una porzione del disco fisso,
tecnica utile per la gestione della memoria virtuale da parte di un sistema operativo
163. Progettazione e costruzione di una distribuzione
a fini didattici
grandi dimensioni e ridurre i danni causati da malfunzionamenti, come ad
esempio i cali di tensione, utilizzando tecnologie derivate dai database. [7]
Per la creazione di un file system ext4 nella partizione dedicata a LFS si
esegue il seguente comando:
mkfs −v −t ext4 /dev/<xxx>
Poi viene inizializzata la partizione swap nel seguente modo:
mkswap /dev/<yyy>
3.2.4 Montare la nuova partizione
A questo punto occorre scegliere un punto di mounting per la nuova
partizione creata lanciando il seguente comando:
export LFS=/mnt/ l f s
Subito dopo rendiamo effettiva la creazione del punto di mounting :
mkdir −pv $LFS
mount −v −t ext4 /dev/<xxx> $LFS
dove 〈xxx〉 indica il nome della partizione di LFS creata precedendmente.
3.2.5 Pacchetti software e patches
A questo punto la guida suggerisce tutti i pacchetti e patches necessari
per la costruzione di un sistema Linux minimale, facendo particolarmente
attenzione all’utilizzo delle versioni testate in quanto non viene garantito un
ambiente sicuro e funzionante se l’utente sceglie nuove versioni di software
rilasciate dopo la release di LFS corrente.
Il prossimo passo e quello di creare una cartella dentro la partizione LFS in
grado di accogliere tutti i pacchetti che si andranno a scaricare e settare i
giusti permessi per potervi accedere ed effettuare le compilazioni:
mkdir −v $LFS/ sourc e s
chmod −v a+wt $LFS/ sourc e s
3.2 Preparazione dell’ambiente di lavoro 17
Il metodo piu semplice per scaricare tutti i sorgenti e quello di utilizzare
una wget-list6 che contiene gli url dei pacchetti e lanciarlo con il seguente
comando:
wget − i wget− l i s t −P $LFS/ sourc e s
3.2.6 Ultime preparazioni
Siccome in questa guida verra molto spesso utilizzata la variabile $LFS
che contiene il path del punto di mounting, nel mio caso /mnt/lfs, e sempre
buona regola controllare lo stato della variabile (specie quando il calcolatore
viene riavviato).
Creazione della directory $LFS/tools
Questa directory e fondamentale in quanto verra utilizzata per dei tools
temporanei utili durante la costruzione di LFS che pero non faranno parte del
sistema LFS alla fine della sua costruzione, quindi e una buona norma creare
questa directory ed eliminarla solo dopo aver completato tutta la procedura
di installazione descritta dalla guida.
Aggiunta dell’utente LFS
A questo punto e fortemente consigliata la creazione di un nuovo uten-
te con privilegi limitati, in modo da poter proteggere il sistema in caso di
comandi errati che, se venissero eseguiti con privilegi di amministrazione
(root-user) potrebbero compromettere l’intera stabilita dell’ambiente e del
sistema LFS durante la sua costruzione.
Quindi viene creato un gruppo chiamato lfs che conterra l’utente anch’esso
chiamato lfs, si imposta una password, si settano i privilegi necessari nelle
directories utilizzate durante la costruzione di LFS ed infine si effettuera un
login come utente lfs.
6http://www.linuxfromscratch.org/lfs/view/stable/wget-list
183. Progettazione e costruzione di una distribuzione
a fini didattici
groupadd l f s
useradd −s / bin /bash −g l f s −m −k /dev/ n u l l l f s
passwd l f s
chown −v l f s $LFS/ t o o l s
chown −v l f s $LFS/ sourc e s
su − l f s
Configurazione dell’ambiente
Nei sistemi Linux, dopo il login di un utente, la shell legge le sue confi-
gurazioni nei file .bash profile e .bashrc.
Nel caso di LFS la shell andrebbe a leggere le configurazioni di inizializzazione
nel sistema host, quindi viene utilizzato il seguente escamotage:
cat > ˜/ . b a s h p r o f i l e << ”EOF”
exec env − i HOME=$HOME TERM=$TERM PS1=’\u :\w\$ ’ / bin /bash
EOF
In questo modo, tramite il comando exec env ... /bin/bash, viene
avviata una nuova shell con nessuna variabile d’ambiente del sistema host ad
eccezione di HOME, TERM e PS1.
A questo punto creiamo anche un nuovo file .bashrc:
cat > ˜/ . bashrc << ”EOF”
s e t +h
umask 022
LFS=/mnt/ l f s
LC ALL=POSIX
LFS TGT=$ (uname −m)− l f s−l inux−gnu
PATH=/t o o l s / bin : / bin : / usr / bin
export LFS LC ALL LFS TGT PATH
EOF
• set +h: disabilita la funzione hash della shell bash
3.3 Costruzione del sistema LFS 19
• unmask 022: i nuovi files e/o directories saranno accessibili in modalita
scrittura solo dal proprietario, mentre saranno accessibili da tutti in
modalita lettura ed esecuzione
• LFS=/mnt/lfs: imposta la variabile $LFS nel punto di mounting im-
postato precedentemente
• LC ALL=POSIX: controlla la corretta locazione di alcuni programmi
• LFS TGT=$(uname -m)-lfs-linux-gnu: imposta la descrizione della
macchina per la costruzione del cross-compiler e del linker
• PATH=/tools/bin:/bin:/usr/bin: setta la variabile PATH con il nuo-
vo path creato /tools/bin
Infine per avere l’ambiente pronto per la sua costruzione occorre lanciare
il seguente comando per inizializzare le nuove impostazioni appena create:
source ˜/ . b a s h p r o f i l e
3.3 Costruzione del sistema LFS
3.3.1 Introduzione
In questo capitolo verranno descritte le principali e piu significative parti
incontrate durante questo mio percorso di progettazione e realizzazione di un
sistema LFS, tralasciando i dettagli di compilazione dei singoli pacchetti e
focalizzando l’attenzione sui passi fondamentali e sulle principali problema-
tiche che ho affrontato.
Questa costruzione del sistema LFS verra suddivisa in due step:
• costruzione di una nuova toolchain (compilatore, assemblatore, linker,
librerie e qualche tool) indipendente dal sistema host
• utilizzare la toolchain per installare gli altri tools necessari
203. Progettazione e costruzione di una distribuzione
a fini didattici
3.3.2 Costruzione di un sistema temporaneo
L’obiettivo di questa sezione e quello di creare un’area temporanea che sia
in grado di contenere al suo interno una buona serie di strumenti totalmente
isolati dal sistema host (toolchain).
Binutils e GCC
Il primo obiettivo e quello di installare Binutils e GCC.
Binutils7 e una collezione di tools per sistemi GNU/Linux tra i quali spic-
cano per ordine di importanza il linker e l’assemblatore.
GCC invece e un compilatore multi-target. Nato per C oggi dispone di vari
front-end per vari linguaggi come C++, Java e Objective-C e fa parte ormai
delle maggiori distribuzioni del sistema GNU/Linux.
Glibc
Il passo successivo e la configurazione ed installazione di glibc, la libreria
standard di C, ricordando che in questo caso la compilazione verra affrontata
dalla toolchain precedentemente creata e non dal sistema host (notiamo che
il sistema LFS inizia gradualmente il suo percorso di indipendenza).
Infine, come ultimo passaggio, la toolchain verra linkata dinamicamente8
alla glibc appena costruita.
Altri pacchetti
Dopo la costruzione di Binutils, GCC e Glibc si continua con una serie
di pacchetti da installare, suggeriti dalla guida di LFS.
L’installazione di questi pacchetti comporta l’estrazione dei sorgenti, la confi-
gurazione manuale, la compilazione e l’installazione di ognuno di loro, tramite
7http://www.gnu.org/software/binutils/8Il dynamic linking e uno standard dei sistemi GNU/Linux che consiste nel linkare
una funzione di una libreria ad un programma che ne necessita, tramite l’utilizzo di un
reference al nome della libreria, avendo dei notevoli risparmio in termini di spazio
3.3 Costruzione del sistema LFS 21
le linee guida date dal manuale.
Quando tutti questi pacchetti saranno effettivamente installati, il sistema
LFS acquisira un maggiore grado di indipendenza dal sistema host, in quanto
sara completamente indipendente, fatta eccezione del kernel in esecuzione.
Importante modifica all’utente lfs
Arrivati a questo punto e importante ricordare che la directory
$LFS/tools appartiene all’utente lfs, creato precedentemente, utente che esi-
ste solo nel sistema host.
Se non si provvede a sistemare questo problema, i file contenuti in quel-
la directory risultano appartenere ad un id che non e presente nel sistema.
Questo puo essere rischioso in quanto un utente creato successivamente po-
trebbe trovarsi associato lo stesso id e quindi ritrovarsi ad avere privilegi che
in realta non gli spettano.
Tutto cio puo essere risolto semplicemente assegnando all’amministratore
root i privilegi necessari tramite il seguente comando:
chown −R root : root $LFS/ t o o l s
3.3.3 Costruzione di LFS
Introduzione
Ora si inizia con la costruzione vera e propria del sistema LFS.
Si entrera nell’ambiente tramite chroot, si sistemano gli ultimi preparativi
e si iniziera con l’installazione di tutti i pacchetti fondamentali per popolare
il sistema.
La compilazione e l’installazione di questi pacchetti non verranno trattate in
questo scritto, in quanto risulterebbe poco utile ai fini di questa tesi e molto
ripetitivo nei confronti del lettore.
223. Progettazione e costruzione di una distribuzione
a fini didattici
Entrare nell’ambiente di installazione
Come anticipato nel paragrafo precendente, per entrare dentro questo
ambiente viene utilizzato il chroot.
Il chroot, nei sistemi Unix, e un’operazione che e in grado di cambiare il no-
do root, appartenente ad un processo padre ed ai suoi processi figli (change
root). In questo modo i processi coinvolti non potranno operare al di fuori
dell’area designata, limitando cosi i potenziali danni che nel nostro caso ri-
guardano il sistema host.
Per entrare dentro l’ambiente chroot basta eseguire il seguente comando:
chroot ”$LFS” / t o o l s / bin /env − i \HOME=/root \TERM=”$TERM” \PS1=’\u :\w\$ ’ \PATH=/bin : / usr / bin : / sb in : / usr / sb in : / t o o l s / bin \/ t o o l s / bin /bash −−l o g i n +h
In questo modo vengono resettate tutte le variabili d’ambiente, fatta ec-
cezione per HOME, TERM, PS1 e PATH e da questo punto in poi non ci sara piu
modo di utilizzare la variabile $LFS=/mnt/lfs in quanto il path contenuto
nella variabile risultera essere la root dell’ambiente chroot.
Popolazione del file system
In questa fase avviene la vera e propria creazione dell’albero delle direc-
tory che fara parte del sistema LFS:
mkdir −pv /{bin , boot , e t c /{opt , s y s c on f i g } ,home , l i b ,mnt , opt , run}mkdir −pv /{media/{ f loppy , cdrom} , sbin , srv , var}i n s t a l l −dv −m 0750 / root
i n s t a l l −dv −m 1777 /tmp /var /tmp
mkdir −pv / usr /{ , l o c a l /}{bin , inc lude , l i b , sbin , s r c }mkdir −pv / usr /{ , l o c a l /} share /{doc , in fo , l o c a l e ,man}mkdir −v / usr /{ , l o c a l /} share /{misc , terminfo , zone in fo }mkdir −pv / usr /{ , l o c a l /} share /man/man{1 . . 8}f o r d i r in / usr / usr / l o c a l ; do
ln −sv share /{man, doc , i n f o } $d i r
done
case $ (uname −m) in
x86 64 ) ln −sv l i b / l i b 64 && ln −sv l i b / usr / l i b 64 && ln −sv l i b / usr / l o c a l / l i b 6 4 ; ;
e sac
mkdir −v /var /{ log , mail , spoo l }ln −sv /run /var /run
ln −sv /run/ lock /var / lock
mkdir −pv /var /{opt , cache , l i b /{misc , l o c a t e } , l o c a l }
3.3 Costruzione del sistema LFS 23
Creazione file passwd e group
Affinche l’utente root possa eseguire un login, e necessario creare il file
/etc/passwd che contiene tutte le informazioni sugli utenti del sistema. Si
procede con la creazione in questo modo:
cat > / e tc /passwd << ”EOF”
root : x : 0 : 0 : root : / root : / bin /bash
bin : x : 1 : 1 : bin : / dev/ n u l l : / bin / f a l s e
nobody : x : 9 9 : 9 9 : Unpr iv i l eged User : / dev/ n u l l : / bin / f a l s e
EOF
Inoltre e necessario creare anche il file /etc/group che contiene tutti i
gruppi di utenti presenti nel sistema:
cat > / e tc /group << ”EOF”
root : x : 0 :
bin : x : 1 :
sys : x : 2 :
kmem: x : 3 :
tape : x : 4 :
t ty : x : 5 :
daemon : x : 6 :
f l oppy : x : 7 :
d i sk : x : 8 :
lp : x : 9 :
d i a l o u t : x : 1 0 :
audio : x : 1 1 :
v ideo : x : 1 2 :
utmp : x : 1 3 :
usb : x : 1 4 :
cdrom : x : 1 5 :
mail : x : 3 4 :
nogroup : x : 9 9 :
EOF
Per quanto riguarda la gestione dei gruppi in un sistema GNU/Linux,
non esistono particolari standard di creazione, viene solo raccomandato di
utilizzare un GID (Group-Id) per il gruppo root e bin rispettivamente pari
a 0 e 1.
243. Progettazione e costruzione di una distribuzione
a fini didattici
Compilazione ed installazione dei restanti pacchetti
Dopo queste ultime configurazioni effettuate, ritorna una parte del libro
(come descritto della sezione 5.2.4 - Altri pacchetti) dove si chiede all’utente
la configurazione manuale, la compilazione e l’effettiva installazione di una
serie di pacchetti che popoleranno il sistema LFS minimale che si andra a
costruire.
Ricordo che in questa parte della guida ogni passaggio e descritto in maniera
molto precisa, per garantire il minor margine di errore che si puo verificare
durante procedure di questo genere.
Pulizia finale
Arrivati a questo punto, come gia accennato in precedenza nel paragra-
fo 4.6.1 Creazione della directory $LFS/tools, verra effettuata una piccola
modifica all’ambiente chroot:
chroot ”$LFS” / usr / bin /env − i \HOME=/root TERM=”$TERM” PS1=’\u :\w\$ ’ \PATH=/bin : / usr / bin : / sb in : / usr / sb in \/ bin /bash −−l o g i n
La ragione di cio e che la directory tools contiene pacchetti che non ver-
ranno piu utilizzati, si invita infatti all’utente di provvedere alla cancellazione
di quest’ultima.
3.3.4 Impostazione script d’avvio del sistema
Ultime configurazioni
La costruzione del sistema LFS sta per giungere al termine e in questo
punto della guida vengono affrontati i passi per sistemare le ultime configu-
razioni necessarie e per rendere avviabile il sistema.
Le parti piu importanti che andranno ad essere sviluppate sono:
• General Network Configuration9:
9http://www.linuxfromscratch.org/lfs/view/stable/chapter07/network.html
3.3 Costruzione del sistema LFS 25
serie di configurazioni per abilitare l’utilizzo di una o piu schede di rete
nel caso il sistema che si sta costruendo abbia necessita di connettersi
ad Internet
• Customizing the /etc/hosts file10:
anche queste configurazioni trattano la connessione ad Internet, in par-
ticolare viene focalizzata l’attenzione sul file /etc/host, un servizio di
sistema che ha la funzione di tradurre nomi human-friendly in indirizzi
IP
• Device and Module Handling on an LFS System11:
una rassegna di informazioni, piu o meno importanti, riguardante la
gestione dei device da parte del kernel Linux
• Creating Custom Symlinks to Devices12:
sezione molto legata a quella precedente, che pero fa riferimento a soft-
ware aggiuntivo che potrebbe essere aggiunto un domani dall’utente
(esempio software multimediale), mettendolo subito a consapevolezza
della gestioni di periferiche quali CD-ROM e DVD.
Rendere avviabile il sistema LFS
Ora rimangono da affrontare le parti conclusive della guida, ovvero tutte
le configurazioni che servono per rendere il sistema avviabile.
Verra installato il pacchetto LFS-Bootscripts-2013082113, che contiene al
suo interno tutti gli script necessari all’avvio e allo spegnimento del sistema,
poi a seguire verra configurato: il nome del sistema operativo (system-hostname),
l’orologio di sistema e la console Linux.
10http://www.linuxfromscratch.org/lfs/view/stable/chapter07/hosts.html11http://www.linuxfromscratch.org/lfs/view/stable/chapter07/udev.html12http://www.linuxfromscratch.org/lfs/view/stable/chapter07/symlinks.html13http://www.linuxfromscratch.org/lfs/view/stable/chapter07/bootscripts.html
263. Progettazione e costruzione di una distribuzione
a fini didattici
Crezione del file /etc/fstab
Fstab e un file presente nei sistemi GNU/Linux che elenca i dischi e le
partizioni presenti evidenziandone le caratteristiche e com’essi si integrano
al file system.
Per la creazione di questo file si procede nel seguente modo:
cat > / etc / f s t ab << ”EOF”
# Begin / etc / f s t ab
# f i l e system mount−point type opt ions dump f s ck
# order
/dev/<xxx> / < f f f > d e f au l t s 1 1
/dev/<yyy> swap swap pr i=1 0 0
proc /proc proc nosuid , noexec , nodev 0 0
s y s f s / sys s y s f s nosuid , noexec , nodev 0 0
devpts /dev/ pts devpts g id=5,mode=620 0 0
tmpfs /run tmpfs d e f a u l t s 0 0
devtmpfs /dev devtmpfs mode=0755 , nosuid 0 0
# End / etc / f s t ab
EOF
dove 〈xxx〉, 〈yyy〉 e 〈fff〉 verranno rimpiazzati dagli opportuni valori del
nostro sistema LFS.
Compilazione del kernel Linux-3.10.10
Questa risulta essere sicuramente una delle parti piu delicate del percorso
che ho affrontato, ovvero la compilazione del kernel Linux.
Come ho gia descritto in precedenza, il kernel puo essere considerato come il
cuore del sistema operativo, ovvero e un insieme di funzioni essenziali che
lega insieme le risorse hardware dell’elaboratore, la gestione della memoria
primaria e la gestione delle periferiche.
Nel mio caso non ho seguito esclusivamente la sezione dedicata nella guida14
ma ho anche cercato su dei forum dedicati a Linux From Scratch l’esperienza
dei vari utenti per cercare di riassumere la compilazione del kernel nel minor
numero di passaggi e che avesse un riscontro positivo nel mio caso personale.
14http://www.linuxfromscratch.org/lfs/view/stable/chapter08/kernel.html
3.3 Costruzione del sistema LFS 27
Questa e l’esatta successione di comandi che ho utilizzato per la compi-
lazione del kernel Linux:
# copy , untar and s e t pe rmi s s i ons
cp / sourc e s / l inux −3 . 0 . 0 . ta r . xz / usr / s r c /
cd / usr / s r c
ta r l inux −3 . 0 . 0 . ta r . xz
chmod −R 0:0 l inux −3.0 .0
# bu i ld the ke rne l
cd l inux −3.0 .0
make mrproper
make d e f c o n f i g
make menuconfig
# i n s t a l l the ke rne l and a s s o c i a t e d f i l e s
make
make m o d u l e s i n s t a l l
cp −v arch /x86/ boot /bzImage / boot /vmlinuz−3.0.0− l f s −7.0
cp −v System . map / boot /System . map−3.0 .0
cp −v . c o n f i g / boot / con f i g −3.0 .0
• La prima parte dei comandi riguarda essenzialmente l’estrazione dei
sorgenti del kernel nella directory /usr/src e la sua modifica di per-
messi per permetterne la corretta compilazione.
• make mrproper: ci si assicura che l’albero del kernel sia completamente
pulito preparandolo alla sua compilazione.
• make defconfig: crea un config-file basato sulle configurazioni di de-
fault presenti per la propria architettura di sistema.
• make menuconfig: lancia un menu di configurazione, dotato di user-
interface nel quale l’utente puo scegliere quali configurazioni abilitare
oltre quelle di default create nel passaggio precedente.
Nel mio caso ho abilitato queste:
283. Progettazione e costruzione di una distribuzione
a fini didattici
Device Drivers -> Generic Driver Options -> Maintain a
devtmpfs filesystem to mount at /dev
Device Drivers -> Network device support -> Wireless LAN ->
Intel PRO/Wireless 3945ABG/BG Network Connection (iwl3945)
• make, make modules install: compila ed installa il kernel piu i suoi
moduli.
• cp: gli ultimi tre comandi copiano dei file sotto la directory /boot.
Il primo riavvio e le prime impressioni
Si e arrivati dunque alla fine, dove tutto il software di LFS risulta essere
installato. Ora se riavviamo il calcolatore si puo scegliere di avviare il siste-
ma LFS tramite il boot iniziale e finalmente vederlo all’opera. Chiaramente
ancora risulta essere un sistema minimale in quanto non dispone di interfacce
grafiche e di qualsiasi tipo di software aggiuntivo.
Linux From Scratch ha portato a termine il suo compito, cioe e stato creato
un sistema GNU/Linux minimale dal quale l’utente potra portare avanti il
proprio progetto.
A questo punto la mia attenzione si e spostata verso un altro manuale,
Beyond Linux From Scratch15 che ho gia introdotto all’inizio di que-
sta relazione, per continuare il mio percorso di personalizzazione e a dar vita
ad un sistema operativo che sia utile a fini accademici, nel conseguimento di
un titolo in discipline informatiche.
Nel prossimo capitolo descrivero questo percorso, analizzando tutte le prin-
cipali scelte che ho dovuto affrontare analizzando varie tipologie di software
aggiuntivo che si dovranno installare per dar vita ad una nuova distribuzione
GNU/Linux.
15http://www.linuxfromscratch.org/blfs
3.4 Personalizzazione del sistema : Beyond Linux From Scratch 29
3.4 Personalizzazione del sistema : Beyond
Linux From Scratch
3.4.1 Introduzione
Your distro, your rules : da questo momento in poi inizia il vero percorso
di creazione e personalizzazione della propria distribuione.
Beyond Linux From Scratch fornisce un ottimo approccio guidando l’u-
tente nel percorso che dovra affrontare con una serie di capitoli che trattano
diverse tematiche alle quali l’utente puo appellarsi o meno, a sua discrezione
in base al percorso che vuole seguire.
Le sezioni di maggior rilievo in questa guida sono le seguenti:
• Security
• Programming
• Networking
• X and Windows Manager
• Multimedia
• Desktop Environment (Gnome, Xfce, Kde)
3.4.2 Post LFS
L’unica sezione di Beyond Linux From Scratch che utilizza un metodo
di approccio come Linux From Scratch e After LFS Configuration Issues 16,
una sezione che il lettore dovra analizzare dall’inizio alla fine per sistemare le
ultime configurazioni per poi ottenere una maggiore liberta di progettazione
del proprio sistema che andra a ritrovare negli altri capitoli che compongono
questa guida.
Gli ultimi contenuti che dovranno essere affrontati sono i seguenti:
16http://www.linuxfromscratch.org/blfs/view/stable/postlfs/config.html
303. Progettazione e costruzione di una distribuzione
a fini didattici
• Creating a Custom Boot Device:
informazioni per la creazione di un disco di ripristino (rescue-disk)
• Configuring for Adding Users:
come gestire la creazione di nuovi utenti in sistemi GNU/Linux
• About System Users and Groups:
gestione degli utenti e gruppi secondo il Linux Standard Base17
• About Devices:
panoramica sulla gestione delle periferiche
• The Bash Shell Startup Files:
configurazioni sui i file di startup sulla shell /bin/bash
• The /etc/vimrc and /.vimrc Files:
configurazioni per l’utilizzo di Vim18, text-editor di LFS
• Customizing your Logon with /etc/issue:
personalizzazione del messaggio di logon del sistema
• The /etc/shells File:
creazione del file /etc/shell utile per la gestione dei privilegi di un
utente per GDM19 o per demoni FTP20
• Random Number Generation:
programma di gestione dei numeri casuali utile per programmi come
OpenSSH21
17http://www.linuxfoundation.org/collaborate/workgroups/lsb18http://www.vim.org/19Gnome Display Manager: nei sistemi Gnome permette il login di un utente utilizzando
un’interfaccia grafica nel quale inserire username e password.20File Transfer Protocol: e un protocollo per la trasmissione dei dati via web.21Open Secure Shell: insieme di programmi che permetton l’utilizzo di sessioni
crittografate secondo il protocollo SSH
3.4 Personalizzazione del sistema : Beyond Linux From Scratch 31
• Compressing Man and Info Pages:
compressione dei file di documentazione presenti nel sistema per otti-
mizzare lo spazio presente sul disco fisso
• lsb release-1.4:
script che permette di ottenere informazioni sullo stato della propria
distribuzione secondo il Linux Standard Base
3.4.3 Una prima analisi
E’ bene a questo punto fermarsi un attimo e fare il punto della situazione
prima di continuare con l’installazione di software extra, per evitare di tor-
nare indietro ad eliminare pacchetti installati, i quali di solito dipendono da
altri pacchetti (dipendenze) aumentando esponenzialmente i tempi di pulizia
del proprio sistema.
L’idea
L’idea principale che mi ha condotto ad affrontare un percorso del genere,
e stata la progettazione di un sistema GNU/Linux adatto ai principali scopi
di uno studente di informatica, nel mio caso, iscritto all’Universita degli
Studi di Milano-Bicocca.
Il pensiero principale e quello di dotare ogni studente, dal momento della sua
immatricolazione, di un ambiente di lavoro il piu completo e flessibile, in
grado di accompagnarlo durante questo percorso di studi.
L’idea infatti si puo concretizzare con la creazione di una distribuzione molto
snella in grado di poter essere avviata nel maggior numero di calcolatori
presenti al giorno d’oggi (anche i piu datati) tramite un’esecuzione di tipo
live oppure tramite virtualizzazione.
Una volta entrati in questo ambiente, lo studente avra a disposizione una
serie di tools/programmi, guide e materiale didattico catalogate secondo il
suo piano di studi in modo da poter essere velocemente utilizzabile.
323. Progettazione e costruzione di una distribuzione
a fini didattici
Caratteristiche fondamentali
A questo punto del lavoro, ho pensato di soffermarmi ed analizzare un
po’ piu in dettaglio tutte le principali caratteristiche che il sistema operativo
necessitava:
• Completo:
deve garantire la presenza di tutto, o perlomeno della maggior parte
del materiale (software e non), in modo da garantire allo studente un
ottimo strumento che lo accompagnera nel suo percorso di studi.
• Compatibile:
deve essere garantita una compatibilita ad ampio spettro per la maggior
parte dei calcolatori portatili.
• Semplice e performante:
il sistema dev’essere molto leggero in quanto pensato ad un’esecuzio-
ne live o virtualizzata ed anche molto semplice e intuitivo, per non
scoraggiare gli utenti non abituati ad ambienti Unix e derivati.
3.4.4 Interfaccia grafica
X Windows System
Nato nel 1984, X Windows System (detto anche semplicemente X ) e uno
dei gestori grafici piu diffusi e viene addirittura considerato uno standard per i
sistemi Unix e Unix-like (XOrg22 e l’implementazione open-source ufficiale).
Possiamo considerare X come la base sulla quale costruire l’interfaccia grafica
utente, infatti prima di poter installare un semplice gestore di finestre e
opportuno avere un server X funzionante.
La caratteristica fondamentale di questo gestore e l’implementazione di tutte
le funzioni di base che servono per la creazione di ambienti GUI23 ovvero
22http://www.x.org/wiki/23Graphical User Interface: interfaccia grafica tramite la quale un utente interagisce con
un sistema tramite l’utilizzo di strumenti piu convenzionali
3.4 Personalizzazione del sistema : Beyond Linux From Scratch 33
disegnare e muovere le finestre nello schermo ed interagire con l’hardware di
input ovvero mouse e tastiera.
Sara poi compito di un windows manager quello di implementare lo stile
visivo, ovvero come poi il sistema operativo si presentera davanti all’utente.
Desktop Environment
Un ambiente desktop, o Desktop Environment e un insieme di elementi
in grado di gestire l’interfaccia grafica utente.
E’ composto, nella maggior parte dei casi, dai seguenti client X :
• icone
• finestre
• barre degli strumenti
• sfondi e widget
• set applicazioni e servizi di default (es. browser e client email)
Come descritto in precedenza questa distribuzione dovra risultare sem-
plice e performante, ed adatta anche a utenti che non hanno familiarita con
ambienti Unix quindi la scelta di un ambiente grafico l’ho considerata come
una delle scelte piu importanti durante questo percorso.
Ho cercato di analizzare la maggior parte dei desktop-environment piu co-
nosciuti, cercando di confrontarli fra loro, mettendone in evidenza i pro e i
contro e tenendo conto anche della mia esperienza personale, in quanto uten-
te Linux da qualche anno.
Quest’analisi che ho condotto mi ha portato a scegliere LXDE come desktop-
environment in quanto riassume in se la maggior parte delle caratteristiche
che stavo cercando.
LXDE
“Il ’Lightweight X11 Desktop Environment’ e un ambiente desktop estre-
mamente veloce , performante e con un buon risparmio energetico. Gestito
343. Progettazione e costruzione di una distribuzione
a fini didattici
da una comunita internazionale di sviluppatori, si presenta con una bella in-
terfaccia, supporto multi-lingua, tasti di scelta rapida standard e funzionalita
aggiuntive come la navigazione a schede dei file. LXDE utilizza meno CPU e
RAM di altri ambienti desktop. E ’progettato appositamente per i computer
cloud con basse specifiche hardware, come i netbook, i dispositivi MID (Mo-
bile ad esempio) o computer datati.24 ”
Procedendo con l’installazione di LXDE verranno installati i seguenti pac-
chetti:
• gpicview : visualizzatore di immagini
• lxappearance: componente per la configurazione di temi, icone e font
• lxde-common: impostazioni per integrare le varie componenti di lxde
• lxde-icon-theme: tema di icone per lxde
24http://lxde.org/
3.4 Personalizzazione del sistema : Beyond Linux From Scratch 35
• lxlauncher : lanciatore ideato principalmente per i netbook
• lxmenu-data: file per adeguare specifiche a freedesktop.org
• lxpanel : pannello per il desktop di lxde
• lxrandr : gestore per lo schermo
• lxsession-lite: gestore per le fasi di spegnimento/riavvio/sospensione
• lxtask : task-manager molto veloce
• lxterminal : un emulatore di terminale
• menu-cache: demone che genera il menu di lxde
• openbox : il windows-manager di lxde, veloce e molto personalizzabile
• pcmanfm: file-manager predefinito di lxde
Per l’installazione di LXDE, Beyond Linux From Scratch offre una sezione
molto ben strutturata: LXDE DESKTOP25.
Per quanto possa sembrare un procedimento non troppo lungo in realta ogni
pacchetto da installare richiede quasi sempre delle dipendenze (all’inizio non
presenti in un sistema LFS minimale) e molto spesso queste dipendenze a
loro volta hanno bisogno di altre dipendenze e cosı via: si crea un vero e
proprio albero delle dipendenze da risolvere.
Come esempio riporto un ramo di dipendenze del pacchetto lxde icon theme-
0.5.0 :
lxde icon theme −0.5 .0
|−−−> GTK−2.24.22
|−−−> gdk pixbuf −2.30.1
|−−−> l i b j p e g−turbo −1.3 .0
|−−−> NASM−2.10.09
25http://www.linuxfromscratch.org/blfs/view/svn/lxde/lxde-desktop.html
363. Progettazione e costruzione di una distribuzione
a fini didattici
La prima veste grafica
Dopo aver installato lxde come desktop-environment e possibile scaricare
ed installare un’infinita di temi grafici direttamente da internet26.
Per questa distribuzione ho cercato una veste grafica non troppo elaborata e
un wallpaper che rispecchiasse il progetto che ho portato avanti.
Per dare al lettore un’idea finale del sistema operativo completo di interfaccia
grafica, allego un paio di screenshot del desktop.
26http://gnome-look.org/ e uno dei siti con il maggior numero di temi grafici in rete
3.4 Personalizzazione del sistema : Beyond Linux From Scratch 37
I primi software aggiuntivi
Ora l’attenzione si sposta verso la suite di software che il sistema operativo
dovra offrire all’utente.
In questo caso ho preferito suddividere il software aggiuntivo in due categorie:
• Software generico:
in questa categoria intendo tutta la suite di software che un utente deve
avere in un sistema operativo, a prescindere da quale esso sia. Quindi
editor di testo, gestore archivi, visualizzatore di immagini e cosi via.
• Software specifico:
in questa invece fa parte tutta la suite di software mirata alla finalita
del progetto, ovvero utili ad uno studente che intraprende il percorso
accademico di una laurea in informatica presso l’Universita degli Studi
di Milano-Bicocca.
La categoria del software generico e facilmente risolvibile tramite un rapi-
do sguardo a qualche distribuzione GNU/Linux famosa (Ubuntu27 per esem-
27http://www.ubuntu.com/
383. Progettazione e costruzione di una distribuzione
a fini didattici
pio) per farsi un elenco dei software base che una qualsiasi distribuzione deve
avere.
Invece per quanto riguarda il software specifico bisognerebbe avviare una pic-
cola indagine, tra gli iscritti al corso di informatica ed i relativi docenti, dove
viene chiesta una lista di software che questo sistema operativo deve offrire,
suddivisa per anno accademico e area didattica.
Capitolo 4
Conclusioni e sviluppo futuro
Arrivati a questo punto e giusto che mi soffermi sulle ultime conclusioni
del progetto portato avanti fin’ora.
Linux From Scratch e uno strumento molto affascinante ed oltre ad aiu-
tare un utente alla creazione di una propria distribuzione, che risulta unica
nel suo genere, ha anche un altra finalita molto importante: capire tutti i
meccanismi che stanno dietro ad un sistema operativo potente come Linux.
Seguendo poi i consigli di Beyond Linux From Scratch ho approfondito
ed ampliato le mie conoscenze verso un’infinita di personalizzazioni e confi-
gurazioni che Linux offre.
Un altro particolare interessante e stato quello di trovare una comunita di
persone sparse in tutto il mondo molto interessate a nuove persone che si
affacciano sul mondo Linux, disposte ad interagire su problematiche piu o
meno note che vengono fuori durante una progettazione di un sistema Linux,
mantenendo cosi una community molto attiva.
4.1 Problemi incontrati
In questa sezione voglio far presente una lista di problemi piu importanti
che per ragioni di tempistiche non sono stati sistemati ed eventualmente una
riflessione personale:
39
40 4. Conclusioni e sviluppo futuro
• Configurazione della connessione wifi : sono riuscito a connettermi in
rete soltanto tramite connessione ethernet utilizzando il protocollo DH-
CP1, mentre non sono riuscito a completare la configurazione corretta
per l’utilizzo del wifi (e presente un thread aperto dei problemi che ho
riscontrato in linuxquestions.org2)
• Riconoscimento periferica usb e lettore cd
• Scorrimento ad un dito touchpad notebook
• Gestore aggiornamenti dei pacchetti : tema molto delicato che non trova
molto spazio nelle guide ufficiali di LFS e BLFS, ma rimanda ad altro
materiale da analizzare in un secondo momento3
4.2 Possibili sviluppi
Come accennato precedentemente, sarebbe molto interessante iniziare
un’indagine verso studenti e docenti per fare in modo che contribuiscano
a creare una suite di software e materiali utili al fine di ottenere una distri-
buzione il piu completa possibile.
Ottenuto questo potrebbe iniziare un periodo di test nel quale un certo nu-
mero di studenti inizieranno ad utilizzare un prototipo del sistema operativo
per affrontare poi un percorso di ottimizzazione e raffinamento della versione
finale che potra essere rilasciata per un range di utenti ancora piu ampio.
1Dynamic Host Configuration Protocol: protocollo che permette l’acquisizione di
indirizzi IP in maniera dinamica2http://www.linuxquestions.org/questions/linux-from-scratch-13/[blfs-7-4]-wifi-wlan0-
interface-didn’t-recognize-4175486558/3http://www.linuxfromscratch.org/lfs/view/development/chapter06/pkgmgt.html
Bibliografia
[1] Gerard Beekmans. Linux From Scratch - Version
7.4
http://www.linuxfromscratch.org/lfs/
[2] Randy McMurchy - Beyond Linux From Scratch -
Version 7.4
http://www.linuxfromscratch.org/blfs/
[3] Definizione di Live Cd - fonte: Wikipedia
[4] Tanenbaum, A.S.: MINIX: A UNIX Clone with
Source Code, Proc. Uniforum Conf., pp. 185-195,
1987.
[5] H. Deitel, P. Deitel, D. Choffnes - Sistemi operativi
- terza edizione Pearson (Prentiche Hall), pp. 710-
714.
[6] SwapFaq: https://help.ubuntu.com/community/SwapFaq
[7] Anatomy of Linux journaling file systems
http://www.ibm.com/developerworks/library/
l-journaling-filesystems/
41