Sei sulla pagina 1di 44

Universit degli Studi di Milano Bicocca Dipartimento di Informatica, Sistemistica e Comunicazione Corso di laurea in Informatica

Progetto e realizzazione di una distribuzione Linux a scopi didattici


Relatore: Luca Bernardinello Co-relatore: Claudio Ferretti Relazione della prova finale di: Federico Valentini Matricola 726584 Anno Accademico 2012-2013

Indice
1 Introduzione 1.1 1.2 1.3 1.4 Problema arontato . . . . . . . . . . . . . . . . . . . . . . . . Obiettivi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Che cos` e una distribuzione Live? . . . . . . . . . . . . . . . . Panoramica distribuzioni Live esistenti . . . . . . . . . . . . . 1.4.1 1.4.2 Tiny Core Linux . . . . . . . . . . . . . . . . . . . . . Kali Linux . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 2 2 3 4 4 5 5 7

2 GNU/Linux: da ieri ad oggi 2.1 2.2 La storia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kernel: la sua architettura . . . . . . . . . . . . . . . . . . . .

3 Progettazione e costruzione di una distribuzione a ni didattici 3.1 3.1.1 3.1.2 3.1.3 3.2 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 11 Introduzione a Linux From Scratch . . . . . . . . . . . . . . . 11 Che cos` e? . . . . . . . . . . . . . . . . . . . . . . . . . 11 Perch e Linux From Scratch? . . . . . . . . . . . . . . . 12 Andare oltre Linux From Scratch . . . . . . . . . . . . 12 . . . . . . . . . . . . . . 13 . . . . . . . . . . . . . 15 Prerequisiti . . . . . . . . . . . . . . . . . . . . . . . . 13 Creazione della partizione LFS Creazione del le system . . . . . . . . . . . . . . . . . 15 Montare la nuova partizione . . . . . . . . . . . . . . . 16 Pacchetti software e patches . . . . . . . . . . . . . . . 16 i

Preparazione dellambiente di lavoro

ii 3.2.6 3.3 3.3.1 3.3.2 3.3.3 3.3.4 3.4 3.4.1 3.4.2 3.4.3 3.4.4

INDICE Ultime preparazioni . . . . . . . . . . . . . . . . . . . . 17 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . 19 Costruzione di un sistema temporaneo . . . . . . . . . 20 Costruzione di LFS . . . . . . . . . . . . . . . . . . . . 21 Impostazione script davvio del sistema . . . . . . . . . 24 Introduzione . . . . . . . . . . . . . . . . . . . . . . . . 29 Post LFS . . . . . . . . . . . . . . . . . . . . . . . . . 29 Una prima analisi . . . . . . . . . . . . . . . . . . . . . 31 Interfaccia graca . . . . . . . . . . . . . . . . . . . . . 32 39

Costruzione del sistema LFS . . . . . . . . . . . . . . . . . . . 19

Personalizzazione del sistema : Beyond Linux From Scratch . . 29

4 Conclusioni e sviluppo futuro 4.1 4.2

Problemi incontrati . . . . . . . . . . . . . . . . . . . . . . . . 39 Possibili sviluppi . . . . . . . . . . . . . . . . . . . . . . . . . 40 41

Bibliograa

Capitolo 1 Introduzione

1.1

Problema arontato

Il problema arontato in questo stage ` e stata la progettazione e la costruzione di un sistema GNU/Linux autonomo e funzionante partendo dalla compilazione dei sorgenti che lo compongono. Per fare ci o 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] Dopodich e la mia attenzione si e spostata verso il libro Beyond Linux From Scratch2 il quale presenta tutta la parte di personalizzazione del proprio sistema precedentemente creato, in base alle proprie esigenze e allobiettivo che si vuole raggiungere. [2] La cosa interessante di questultimo libro e che il lettore risulta essere totalmente indipendente, ovvero pu o approfondire solo le parti che decide essere utili al ne di creare la propria distribuzione, che sia un sistema utente oppure un router o un server. La losoa di questultima guida e appunto: you only install what you need.
1 2

http://www.linuxfromscratch.org http://www.linuxfromscratch.org/blfs/

1. Introduzione

1.2

Obiettivi

Lobiettivo che mi sono pressato e stata la creazione di una distribuzione che possa essere utile in ambito accademico arontando in particolare il caso in cui uno studente si iscriva al corso di Informatica nellUniversit a degli Studi di Milano-Bicocca, anche se potenzialmente potrebbe essere allargata ad un qualsiasi utente iscritto ad una facolt a legata allambito dellinformatica. Per questo motivo la mia idea e stata quella di creare una distribuzione desktop molto snella e veloce ma daltra parte anche completa della parte software che ogni studente di informatica dovrebbe avere a sua disposizione per arontare 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 sso senza dover ricorrere ad una installazione su hard disk in quanto questa distribuzione dovrebbe essere vista dallutente come un ambiente di lavoro e non come un sistema operativo a s e, anche se tecnicamente risulta essere tale.

1.3

Che cos` e una distribuzione Live?

Lespressione LiveCD, Live CD o LiveDistro (per esteso distribuzione live) viene genericamente utilizzata per indicare una distribuzione di un sistema operativo in grado di essere avviato in fase di boot del computer ed eseguito senza richiederne linstallazione su hard disk. [3] Lutilizzo di una distribuzione live nel mio caso risulta molto pi u conveniente in quanto lutente non avr a problemi riguardanti linstallazione di un sistema operativo (es. partizione del disco) inoltre potr a anche utilizzare un software per lesecuzione di una macchina virtuale come ad esempio VirtualBox3 , gratuito ed open-source disponibile per la maggior parte dei sistemi operati3

http://www.virtualbox.org/

1.4 Panoramica distribuzioni Live esistenti

vi attualmente in circolazione come Windows, Linux, Macintosh e Solaris.

1.4

Panoramica distribuzioni Live esistenti

Possiamo aermare che i primi sistemi operativi nati, come ad esempio le prime versioni di MS-DOS e APPLE DOS, erano tecnicamente dei sistemi live in quanto venivano eseguiti su un supporto di archiviazione esterno, ovvero i vecchi Floppy Disk. Possiamo per o iniziare a parlare di vere e proprie distribuzioni live con lavvento dei CD-ROM. La prima distribuzione live che ebbe una notevole notoriet a 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 trov o largo utilizzo anche come sistema desktop per unutenza media e diede anche la possibilit a di scegliere se essere usato in modalit a 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 utilizzabili per i pi u variegati scopi, da sistemi per lanalisi forense a sistemi specializzati in rilevamenti di vulnerabilit a, 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 Linux per fare capire al lettore la potenza e la elasticit a che questo sistema operativo pu o orire 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.

http://www.knoppix.org/

1. Introduzione

1.4.1

Tiny Core Linux


1 400

Tiny Core Linux 5 e sicuramente una delle distribuzioni Linux pi u minimali mai create. Se viene messo a confronto risulta essere da 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 pi u 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. a
1 100

della

1.4.2

Kali Linux

Una qualsiasi persona interessata allambiente legato alla sicurezza informatica avr a 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 giorno doggi conta pi u di 300 tools di penetration testing divisi per tipologia: dallanalisi di vulnerabilit a ai tools di exploitation, dallo sning agli attacchi a rete wireless no al reverse engineering e agli stress testing.

5 6

http://www.tinycorelinux.net http://www.backtrack-linux.org/ 7 http://www.ubuntu-it.org/ 8 http://www.debian.org/index.it.html 9 http://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 ni didattici dal professore Andrew S. Tanenbaum dellUniversit a Vrije di Amsterdam. [4] Immediata fu la decisione, da parte di Linus, di rendere disponibile il codice sorgente del sistema operativo appena creato e questo diede vita ad una comunit a costantemente impegnata a vericare i codici sorgenti, apportare modiche e produrre miglioramenti. Le prime versione del kernel Linux erano molto instabili e non poteva considerarsi ancora un sistema operativo completamente autonomo in quanto dipendeva ancora da Minix per la compilazione dei sorgenti. Inoltre mancavano molte funzionalit a 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

2. GNU/Linux: da ieri ad oggi

I primi sviluppi
Con il passare dei primi rilasci Linux acquist o una notevole popolarit a tra gli sviluppatori e la comunit a inizi o a crescere in maniera esponenziale sistemando i principali bug che ancora lo caratterizzavano. In questo momento Linux inizi o ad essere considerato per la prima volta una vera e propria alternativa ai sistemi operativi gi a esistenti, quali Windows, Unix e Solaris. Anche se questo sistema operativo si stava man mano consolidando e stava creando intorno a s e una realt a propria, il suo utilizzo trovava riscontro perlopi u in realt a accademiche in quanto le procedure di installazione e congurazione risultavano molto complesse e poco adatte ad un generico utente desktop.

La crescita
Durante la ne degli anni 90, il kernel di Linux arriv o alla versione 2.2 e port o numerose novit a quali: supporto TCP/IP, multiprogrammazione, gestione memoria virtuale, supporto audio e le system e gestione della rete che permetteva lanalisi del traco a livello di singoli pacchetti. Tutti questi miglioramenti non furono decisivi per entrare nel mercato desktop in quanto lutenza preferiva un prodotto caratterizzato dallestetica e da una interfaccia graca curata, piuttosto che da un set di congurazioni kernel alle quali potenzialmente non avrebbe mai messo mano. Questi sviluppi per o portarono molto interesse da parte di aziende quali IBM, Compact e Oracle che iniziarono a credere in questo progetto, chiedendo per o una maggiore compatibilit a per sistemi di fascia alta e anche sistemi embedded. Tutto questo arriv o con la nuova versione 2.4 del kernel Linux.

2.2 Kernel: la sua architettura

Larrivo delle distribuzioni


Nonostante la notoriet a 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 le di congurazione, 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 procedura di installazione il pi u user friendly possibile. A questo punto iniziarono a nascere le distribuzioni di Linux (al momento contiamo pi u di 300 progetti in sviluppo1 ), ovvero delle versioni complete di pacchetti software e solitamente provviste anche di interfaccia graca, 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 laccesso, da parte dei processi in esecuzione su un calcolatore, allhardware, in modo sicuro ed indipendente. Il kernel di Linux e un kernel monolitico, ovvero denisce uninterfaccia sullhardware 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 le system
1

http://lwn.net/Distributions/

2. GNU/Linux: da ieri ad oggi

Gestione dellI/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 gestione dei processi, dalla loro creazione alla esecuzione no alla loro rimozione dal sistema mentre il sottoinsieme comunicazione tra processi permette ai processi sia di scambiarsi informazioni tramite pi u tipologie di protocolli sia di condividere informazioni tra di loro. Il gestore della memoria gestisce laccesso in memoria da parte dei processi e assegna ad ognuno di loro uno spazio di indirizzamento virtuale in memoria. La gestione del le system fa si che lutente possa navigare ed accedere ai vari le e directory dislocati lungo lalbero relativo, mentre quando una

2.2 Kernel: la sua architettura

chiamata del sistema deve accedere ad un le sfrutta il le system virtuale, uninterfaccia che permette di accedere al le system (esempio ext2 e NFS ). Linux fornisce anche una gestione della rete, cio e un insieme di servizi mirati allo scambio di dati tra pi u elaboratori connessi ad una rete. [5]

10

2. GNU/Linux: da ieri ad oggi

Capitolo 3 Progettazione e costruzione di una distribuzione a ni didattici


3.1
3.1.1

Introduzione a Linux From Scratch


Che cos` e?

Linux From Scratch1 nasce da unidea di Gerard Beekmans, il quale decise di scrivere una guida dove venisse arontato tutto il percorso di installazione e personalizzazione di un sistema Linux partendo dai sorgenti che lo compongono. Dopo i primi appunti che prese durante questa sua analisi, inizi o a scriverne un libro e ottenne un notevole successo. Cosi cre o attorno a se una cerchia di collaboratori ed una tta comunit a di appassionati che portano avanti questo progetto, rilasciando costantemente nuove versioni (lultima versione al giorno doggi e la 7.4, rilasciata nel settembre 2013) e rendendo tutto questo materiale completamente gratuito e scaricabile dal sito http://www.linuxfromscratch.org/
1

http://www.linuxfromscratch.org/

11

12

3. Progettazione e costruzione di una distribuzione a ni didattici

3.1.2

Perch e Linux From Scratch?

Una delle pi u frequenti domande che viene posta agli utenti di LFS2 e il perch e una persona debba intraprendere un percorso cosi lungo e impegnativo per costruirsi una propria distribuzione Linux quando al giorno doggi ne esistono gi a centinaia e centinaia disponibili gratuitamente sul web e adatte alla maggior parte degli scopi. Il perch e della mia scelta e dovuto principalmente allinteresse 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 eetti come esso lavori. Un altra motivazione che pu o spingere un utente ad arontare 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 sso e ad un conseguente calo di prestazioni. Utilizzando LFS e possibile creare distribuzioni perfettamente funzionanti che occupano allincirca 100MB.

3.1.3

Andare oltre Linux From Scratch

Lobiettivo fondamentale di LFS e quello di creare una distribuzione GNU/Linux minimale ma al tempo stessa autonoma e funzionante. Arrivato a questo punto lutente dovr a iniziare ad eettuare delle scelte, ovvero congurare ed installare tutti i pacchetti per costruirsi la propria distribuzione, che sia un server oppure un sistema desktop, lidea di fondo e: installa solo quello che ti serve. Per aiutare lutente ad arontare questo percorso di customizzazione del proprio sistema LFS e disponibile la guida Beyond Linux From Scratch di Randy McMurchy.
2

abbreviazione di Linux From Scratch

3.2 Preparazione dellambiente di lavoro

13

Questa guida ha una modalit a di lettura molto diversa rispetto a LFS in quanto non si presenta come un percorso lineare da seguire dallinizio alla ne ma il lettore deve ricercare direttamente le sezioni che lo riguardano (per esempio security, disk management o graphics libraries) e procedere alle congurazioni, compilazioni ed installazioni dei pacchetti scelti.

3.2
3.2.1

Preparazione dellambiente di lavoro


Prerequisiti

Un sistema LFS viene costruito partendo da una distribuzione GNU/Linux gi a presente nella propria macchina (nel mio caso Lubuntu3 13.10, dora in poi chiamato sistema host), il quale viene utilizzato come sistema dappoggio tramite lutilizzo 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
3 4

http://lubuntu.net/ http://www.linuxfromscratch.org/lfs/view/stable/prologue/hostreqs.html

14

3. Progettazione e costruzione di una distribuzione a ni didattici

Diutils-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 questi pacchetti sono gi a installati correttamente, altrimenti bisogna procedere con linstallazione dei pacchetti mancanti per continuare la procedura di preparazione dellambiente di lavoro.

3.2 Preparazione dellambiente di lavoro

15

3.2.2

Creazione della partizione LFS

Lambiente 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 gi a lintenzione di creare un sistema operativo completo di interfacce grache e software aggiuntivo sta allutente 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 no 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 sistema host gi a presente nella proprio elaboratore. La mia scelta e stata quella di creare una partizione swap dedicata di dimensione pari alla ram, cio e di 1GB. [6]

3.2.3

Creazione del le system

Ora che la partizione e stata creata, bisogna procedere con la creazione del le system, unarchitettura che comprende tutti i metodi di organizzazione dei le e delle directory in un dispositivo di archiviazione. Per quanto riguarda i sistemi GNU/Linux vengono adottati le system di tipo ext2, ext3 e ext4. Questultimo tipo fa parte dei cosiddetti Journaled File System, una tipologia di le system di ultima generazione in grado di gestire dischi ssi di
5

estensione della memoria Ram attraverso lutilizzo di una porzione del disco sso,

tecnica utile per la gestione della memoria virtuale da parte di un sistema operativo

16

3. Progettazione e costruzione di una distribuzione a ni 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 le system ext4 nella partizione dedicata a LFS si esegue il seguente comando: mkfs v t e x t 4 / 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: e x p o r t LFS=/mnt/ l f s Subito dopo rendiamo eettiva la creazione del punto di mounting : mkdir pv $LFS mount v t e x t 4 / 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 allutilizzo delle versioni testate in quanto non viene garantito un ambiente sicuro e funzionante se lutente 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 eettuare le compilazioni: mkdir v $LFS/ s o u r c e s chmod v a+wt $LFS/ s o u r c e s

3.2 Preparazione dellambiente di lavoro

17

Il metodo pi u 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/ s o u r c e s

3.2.6

Ultime preparazioni

Siccome in questa guida verr a 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 verr a utilizzata per dei tools temporanei utili durante la costruzione di LFS che per o non faranno parte del sistema LFS alla ne 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 dellutente LFS A questo punto e fortemente consigliata la creazione di un nuovo utente 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 lintera stabilit a dellambiente e del sistema LFS durante la sua costruzione. Quindi viene creato un gruppo chiamato lfs che conterr a lutente anchesso chiamato lfs, si imposta una password, si settano i privilegi necessari nelle directories utilizzate durante la costruzione di LFS ed inne si eettuer a un login come utente lfs.
6

http://www.linuxfromscratch.org/lfs/view/stable/wget-list

18

3. Progettazione e costruzione di una distribuzione a ni didattici

groupadd l f s useradd s / bi n / 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/ s o u r c e s su l f s

Congurazione dellambiente Nei sistemi Linux, dopo il login di un utente, la shell legge le sue congurazioni nei le .bash profile e .bashrc. Nel caso di LFS la shell andrebbe a leggere le congurazioni di inizializzazione nel sistema host, quindi viene utilizzato il seguente escamotage:
c a t > / . b a s h p r o f i l e << EOF e x e c env i HOME =$HOME TERM =$TERM PS1= \ u : \ w\ $ / b i n / bash EOF

In questo modo, tramite il comando exec env ... /bin/bash, viene avviata una nuova shell con nessuna variabile dambiente del sistema host ad eccezione di HOME, TERM e PS1. A questo punto creiamo anche un nuovo le .bashrc: c a t > / . b a s h r c << EOF s e t +h umask 022 LFS=/mnt/ l f s LC ALL=POSIX LFS TGT=$ ( uname m) l f s l i n u x gnu PATH=/ t o o l s / bi n : / b i n : / u s r / bi n e x p o r t 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 les e/o directories saranno accessibili in modalit a scrittura solo dal proprietario, mentre saranno accessibili da tutti in modalit a lettura ed esecuzione LFS=/mnt/lfs: imposta la variabile $LFS nel punto di mounting impostato 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 nuovo path creato /tools/bin Inne per avere lambiente pronto per la sua costruzione occorre lanciare il seguente comando per inizializzare le nuove impostazioni appena create: source /. bash profile

3.3
3.3.1

Costruzione del sistema LFS


Introduzione

In questo capitolo verranno descritte le principali e pi u signicative parti incontrate durante questo mio percorso di progettazione e realizzazione di un sistema LFS, tralasciando i dettagli di compilazione dei singoli pacchetti e focalizzando lattenzione sui passi fondamentali e sulle principali problematiche che ho arontato. Questa costruzione del sistema LFS verr a 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

20

3. Progettazione e costruzione di una distribuzione a ni didattici

3.3.2

Costruzione di un sistema temporaneo

Lobiettivo di questa sezione e quello di creare unarea 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 spiccano per ordine di importanza il linker e lassemblatore. 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 congurazione ed installazione di glibc, la libreria standard di C, ricordando che in questo caso la compilazione verr a arontata dalla toolchain precedentemente creata e non dal sistema host (notiamo che il sistema LFS inizia gradualmente il suo percorso di indipendenza). Inne, come ultimo passaggio, la toolchain verr a 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. Linstallazione di questi pacchetti comporta lestrazione dei sorgenti, la congurazione manuale, la compilazione e linstallazione di ognuno di loro, tramite
7 8

http://www.gnu.org/software/binutils/ Il 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 lutilizzo 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 eettivamente installati, il sistema LFS acquisir a un maggiore grado di indipendenza dal sistema host, in quanto sar a completamente indipendente, fatta eccezione del kernel in esecuzione.

Importante modica allutente lfs Arrivati a questo punto e importante ricordare che la directory $LFS/tools appartiene allutente lfs, creato precedentemente, utente che esiste solo nel sistema host. Se non si provvede a sistemare questo problema, i le contenuti in quella directory risultano appartenere ad un id che non e presente nel sistema. Questo pu o essere rischioso in quanto un utente creato successivamente potrebbe trovarsi associato lo stesso id e quindi ritrovarsi ad avere privilegi che in realt a non gli spettano. Tutto ci o pu o essere risolto semplicemente assegnando allamministratore root i privilegi necessari tramite il seguente comando: chown R r o o t : r o o t $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 entrer a nellambiente tramite chroot, si sistemano gli ultimi preparativi e si inizier a con linstallazione di tutti i pacchetti fondamentali per popolare il sistema. La compilazione e linstallazione di questi pacchetti non verranno trattate in questo scritto, in quanto risulterebbe poco utile ai ni di questa tesi e molto ripetitivo nei confronti del lettore.

22

3. Progettazione e costruzione di una distribuzione a ni didattici

Entrare nellambiente di installazione Come anticipato nel paragrafo precendente, per entrare dentro questo ambiente viene utilizzato il chroot. Il chroot, nei sistemi Unix, e unoperazione che e in grado di cambiare il nodo root, appartenente ad un processo padre ed ai suoi processi gli (change root). In questo modo i processi coinvolti non potranno operare al di fuori dellarea designata, limitando cosi i potenziali danni che nel nostro caso riguardano il sistema host. Per entrare dentro lambiente chroot basta eseguire il seguente comando:
c h r o o t $LFS / t o o l s / b i n / env i \ HOME=/r o o t TERM=$TERM PS1= \ u : \ w\ $ / t o o l s / b i n / bash l o g i n +h \ \ \

PATH=/b i n : / u s r / b i n : / s b i n : / u s r / s b i n : / t o o l s / b i n \

In questo modo vengono resettate tutte le variabili dambiente, fatta eccezione per HOME, TERM, PS1 e PATH e da questo punto in poi non ci sar a pi u modo di utilizzare la variabile $LFS=/mnt/lfs in quanto il path contenuto nella variabile risulter a essere la root dellambiente chroot. Popolazione del le system In questa fase avviene la vera e propria creazione dellalbero delle directory che far a parte del sistema LFS:
mkdir pv / { bin , boot , e t c / { opt , s y s c o n f i g } , home , l i b , mnt , opt , run } mkdir pv / { media / { f l o p p y , cdrom } , s b i n , s r v , v a r } i n s t a l l dv m 0750 / r o o t i n s t a l l dv m 1777 /tmp / v a r /tmp mkdir pv / u s r / { , l o c a l / }{ bin , i n c l u d e , l i b , s b i n , s r c } mkdir pv / u s r / { , l o c a l / } s h a r e / { doc , i n f o , l o c a l e , man} mkdir v for done c a s e $ ( uname m) x86 64 ) esac mkdir v / v a r / { l o g , m a i l , s p o o l } l n s v / run / v a r / run l n s v / run / l o c k / v a r / l o c k mkdir pv / v a r / { opt , c a c h e , l i b / { misc , l o c a t e } , l o c a l } l n s v in lib / l i b 6 4 && l n s v lib / u s r / l i b 6 4 && l n s v lib / usr / l o c a l / lib64 ;; dir / u s r / { , l o c a l / } s h a r e / { misc , t e r m i n f o , z o n e i n f o } i n / u s r / u s r / l o c a l ; do mkdir pv / u s r / { , l o c a l / } s h a r e /man/man { 1 . . 8 } l n s v s h a r e / { man , doc , i n f o } $ d i r

3.3 Costruzione del sistema LFS

23

Creazione le passwd e group Anch e lutente root possa eseguire un login, e necessario creare il le /etc/passwd che contiene tutte le informazioni sugli utenti del sistema. Si procede con la creazione in questo modo:
c a t > / e t c / passwd << EOF r o o t : x : 0 : 0 : r o o t : / r o o t : / b i n / bash b i n : x : 1 : 1 : b i n : / dev / n u l l : / b i n / f a l s e nobody : x : 9 9 : 9 9 : U n p r i v i l e g e d User : / dev / n u l l : / b i n / f a l s e EOF

Inoltre e necessario creare anche il le /etc/group che contiene tutti i gruppi di utenti presenti nel sistema:
c a t > / e t c / group << EOF root : x : 0 : bin : x : 1 : sys : x : 2 : kmem : x : 3 : tape : x : 4 : tty : x : 5 : daemon : x : 6 : floppy : x : 7 : disk : x : 8 : lp : x : 9 : dialout : x :10: audio : x : 1 1 : video : 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.

24

3. Progettazione e costruzione di una distribuzione a ni didattici

Compilazione ed installazione dei restanti pacchetti Dopo queste ultime congurazioni eettuate, ritorna una parte del libro (come descritto della sezione 5.2.4 - Altri pacchetti ) dove si chiede allutente la congurazione manuale, la compilazione e leettiva installazione di una serie di pacchetti che popoleranno il sistema LFS minimale che si andr a 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 pu o vericare durante procedure di questo genere. Pulizia nale Arrivati a questo punto, come gi a accennato in precedenza nel paragrafo 4.6.1 Creazione della directory $LFS/tools, verr a eettuata una piccola modica allambiente chroot:
c h r o o t $LFS / u s r / b i n / env i \ HOME=/r o o t TERM=$TERM PS1= \ u : \ w\ $ \ PATH=/b i n : / u s r / b i n : / s b i n : / u s r / s b i n \ / b i n / bash l o g i n

La ragione di ci o e che la directory tools contiene pacchetti che non verranno pi u utilizzati, si invita infatti allutente di provvedere alla cancellazione di questultima.

3.3.4

Impostazione script davvio del sistema

Ultime congurazioni La costruzione del sistema LFS sta per giungere al termine e in questo punto della guida vengono arontati i passi per sistemare le ultime congurazioni necessarie e per rendere avviabile il sistema. Le parti pi u importanti che andranno ad essere sviluppate sono: General Network Configuration9 :
9

http://www.linuxfromscratch.org/lfs/view/stable/chapter07/network.html

3.3 Costruzione del sistema LFS

25

serie di congurazioni per abilitare lutilizzo di una o pi u schede di rete nel caso il sistema che si sta costruendo abbia necessit a di connettersi ad Internet Customizing the /etc/hosts file10 : anche queste congurazioni trattano la connessione ad Internet, in particolare viene focalizzata lattenzione sul le /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, pi u 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 per o fa riferimento a software aggiuntivo che potrebbe essere aggiunto un domani dallutente (esempio software multimediale), mettendolo subito a consapevolezza della gestioni di periferiche quali CD-ROM e DVD.

Rendere avviabile il sistema LFS Ora rimangono da arontare le parti conclusive della guida, ovvero tutte le congurazioni che servono per rendere il sistema avviabile. Verr a installato il pacchetto LFS-Bootscripts-2013082113 , che contiene al suo interno tutti gli script necessari allavvio e allo spegnimento del sistema, poi a seguire verr a congurato: il nome del sistema operativo (system-hostname), lorologio di sistema e la console Linux.
10 11

http://www.linuxfromscratch.org/lfs/view/stable/chapter07/hosts.html http://www.linuxfromscratch.org/lfs/view/stable/chapter07/udev.html 12 http://www.linuxfromscratch.org/lfs/view/stable/chapter07/symlinks.html 13 http://www.linuxfromscratch.org/lfs/view/stable/chapter07/bootscripts.html

26

3. Progettazione e costruzione di una distribuzione a ni didattici

Crezione del le /etc/fstab Fstab e un le presente nei sistemi GNU/Linux che elenca i dischi e le partizioni presenti evidenziandone le caratteristiche e comessi si integrano al le system. Per la creazione di questo le si procede nel seguente modo:
c a t > / e t c / f s t a b << EOF # Begin / e t c / f s t a b # file # / dev/<xxx> / dev/<yyy> proc sysfs devpts tmpfs devtmpfs / swap / proc / sys / dev / p t s / run / dev <f f f > swap proc sysfs devpts tmpfs defaults p r i =1 1 0 system mount p o i n t type options dump fsck order 1 0 0 0 0 0 0

n o s u i d , n o e x e c , nodev 0 n o s u i d , n o e x e c , nodev 0 g i d =5 ,mode=620 defaults 0 0 0

d e v t m p f s mode =0755 , n o s u i d

# End / e t c / f s t a b EOF

dove xxx , yyy e f f f verranno rimpiazzati dagli opportuni valori del nostro sistema LFS. Compilazione del kernel Linux-3.10.10 Questa risulta essere sicuramente una delle parti pi u delicate del percorso che ho arontato, ovvero la compilazione del kernel Linux. Come ho gi a descritto in precedenza, il kernel pu o essere considerato come il cuore del sistema operativo, ovvero e un insieme di funzioni essenziali che lega insieme le risorse hardware dellelaboratore, 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 lesperienza 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.

14

http://www.linuxfromscratch.org/lfs/view/stable/chapter08/kernel.html

3.3 Costruzione del sistema LFS

27

Questa e lesatta successione di comandi che ho utilizzato per la compilazione del kernel Linux:
# copy , u n t a r and s e t p e r m i s s i o n s cp / s o u r c e s / l i n u x 3 . 0 . 0 . t a r . xz / u s r / s r c / cd / u s r / s r c t a r l i n u x 3 . 0 . 0 . t a r . xz chmod R 0 : 0 l i n u x 3 . 0 . 0 # build the k e r n e l cd l i n u x 3 . 0 . 0 make mrproper make d e f c o n f i g make menuconfig # i n s t a l l t h e k e r n e 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 a r c h / 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 / c o n f i g 3 . 0 . 0

La prima parte dei comandi riguarda essenzialmente lestrazione dei sorgenti del kernel nella directory /usr/src e la sua modica di permessi per permetterne la corretta compilazione. make mrproper: ci si assicura che lalbero del kernel sia completamente pulito preparandolo alla sua compilazione. make defconfig: crea un cong-le basato sulle congurazioni di default presenti per la propria architettura di sistema. make menuconfig: lancia un menu di congurazione, dotato di userinterface nel quale lutente pu o scegliere quali congurazioni abilitare oltre quelle di default create nel passaggio precedente. Nel mio caso ho abilitato queste:

28

3. Progettazione e costruzione di una distribuzione a ni 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 pi u i suoi moduli. cp: gli ultimi tre comandi copiano dei le sotto la directory /boot.

Il primo riavvio e le prime impressioni Si e arrivati dunque alla ne, dove tutto il software di LFS risulta essere installato. Ora se riavviamo il calcolatore si pu o scegliere di avviare il sistema LFS tramite il boot iniziale e nalmente vederlo allopera. Chiaramente ancora risulta essere un sistema minimale in quanto non dispone di interfacce grache e di qualsiasi tipo di software aggiuntivo. Linux From Scratch ha portato a termine il suo compito, cio e e stato creato un sistema GNU/Linux minimale dal quale lutente potr a portare avanti il proprio progetto. A questo punto la mia attenzione si e spostata verso un altro manuale, Beyond Linux From Scratch15 che ho gi a introdotto allinizio di questa relazione, per continuare il mio percorso di personalizzazione e a dar vita ad un sistema operativo che sia utile a ni accademici, nel conseguimento di un titolo in discipline informatiche. Nel prossimo capitolo descriver o questo percorso, analizzando tutte le principali scelte che ho dovuto arontare analizzando varie tipologie di software aggiuntivo che si dovranno installare per dar vita ad una nuova distribuzione GNU/Linux.
15

http://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 lutente nel percorso che dovr a arontare con una serie di capitoli che trattano diverse tematiche alle quali lutente pu o 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
16

Lunica sezione di Beyond Linux From Scratch che utilizza un metodo di approccio come Linux From Scratch e After LFS Conguration Issues , una sezione che il lettore dovr a analizzare dallinizio alla ne per sistemare le ultime congurazioni per poi ottenere una maggiore libert a di progettazione del proprio sistema che andr a a ritrovare negli altri capitoli che compongono questa guida. Gli ultimi contenuti che dovranno essere arontati sono i seguenti:
16

http://www.linuxfromscratch.org/blfs/view/stable/postlfs/cong.html

30

3. Progettazione e costruzione di una distribuzione a ni 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: congurazioni sui i le di startup sulla shell /bin/bash The /etc/vimrc and /.vimrc Files:

congurazioni per lutilizzo 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 le /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
17 18

http://www.linuxfoundation.org/collaborate/workgroups/lsb http://www.vim.org/ 19 Gnome Display Manager: nei sistemi Gnome permette il login di un utente utilizzando uninterfaccia graca nel quale inserire username e password. 20 File Transfer Protocol: e un protocollo per la trasmissione dei dati via web. 21 Open Secure Shell: insieme di programmi che permetton lutilizzo di sessioni crittografate secondo il protocollo SSH

3.4 Personalizzazione del sistema : Beyond Linux From Scratch

31

Compressing Man and Info Pages: compressione dei le di documentazione presenti nel sistema per ottimizzare lo spazio presente sul disco sso 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 linstallazione di software extra, per evitare di tornare indietro ad eliminare pacchetti installati, i quali di solito dipendono da altri pacchetti (dipendenze ) aumentando esponenzialmente i tempi di pulizia del proprio sistema.

Lidea Lidea principale che mi ha condotto ad arontare 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 allUniversit a 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 pi u completo e essibile, in grado di accompagnarlo durante questo percorso di studi. Lidea infatti si pu o concretizzare con la creazione di una distribuzione molto snella in grado di poter essere avviata nel maggior numero di calcolatori presenti al giorno doggi (anche i pi u datati) tramite unesecuzione di tipo live oppure tramite virtualizzazione. Una volta entrati in questo ambiente, lo studente avr a 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.

32

3. Progettazione e costruzione di una distribuzione a ni didattici

Caratteristiche fondamentali A questo punto del lavoro, ho pensato di soermarmi ed analizzare un po pi u 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 accompagner a nel suo percorso di studi. Compatibile : deve essere garantita una compatibilit a ad ampio spettro per la maggior parte dei calcolatori portatili. Semplice e performante : il sistema devessere molto leggero in quanto pensato ad unesecuzione 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 graca

X Windows System Nato nel 1984, X Windows System (detto anche semplicemente X ) e uno dei gestori graci pi u diusi e viene addirittura considerato uno standard per i sistemi Unix e Unix-like (XOrg22 e limplementazione open-source uciale). Possiamo considerare X come la base sulla quale costruire linterfaccia graca utente, infatti prima di poter installare un semplice gestore di nestre e opportuno avere un server X funzionante. La caratteristica fondamentale di questo gestore e limplementazione di tutte le funzioni di base che servono per la creazione di ambienti GUI23 ovvero
22 23

http://www.x.org/wiki/ Graphical User Interface: interfaccia graca tramite la quale un utente interagisce con

un sistema tramite lutilizzo di strumenti pi u convenzionali

3.4 Personalizzazione del sistema : Beyond Linux From Scratch

33

disegnare e muovere le nestre nello schermo ed interagire con lhardware di input ovvero mouse e tastiera. Sar a poi compito di un windows manager quello di implementare lo stile visivo, ovvero come poi il sistema operativo si presenter a davanti allutente. Desktop Environment Un ambiente desktop, o Desktop Environment e un insieme di elementi in grado di gestire linterfaccia graca utente. E composto, nella maggior parte dei casi, dai seguenti client X : icone nestre barre degli strumenti sfondi e widget set applicazioni e servizi di default (es. browser e client email) Come descritto in precedenza questa distribuzione dovr a risultare semplice e performante, ed adatta anche a utenti che non hanno familiarit a con ambienti Unix quindi la scelta di un ambiente graco lho considerata come una delle scelte pi u importanti durante questo percorso. Ho cercato di analizzare la maggior parte dei desktop-environment pi u conosciuti, cercando di confrontarli fra loro, mettendone in evidenza i pro e i contro e tenendo conto anche della mia esperienza personale, in quanto utente Linux da qualche anno. Questanalisi che ho condotto mi ha portato a scegliere LXDE come desktopenvironment in quanto riassume in s e la maggior parte delle caratteristiche che stavo cercando. LXDE Il Lightweight X11 Desktop Environment e un ambiente desktop estremamente veloce , performante e con un buon risparmio energetico. Gestito

34

3. Progettazione e costruzione di una distribuzione a ni didattici

da una comunit a internazionale di sviluppatori, si presenta con una bella interfaccia, supporto multi-lingua, tasti di scelta rapida standard e funzionalit a aggiuntive come la navigazione a schede dei le. LXDE utilizza meno CPU e RAM di altri ambienti desktop. E progettato appositamente per i computer cloud con basse speciche hardware, come i netbook, i dispositivi MID (Mobile ad esempio) o computer datati.24

Procedendo con linstallazione di LXDE verranno installati i seguenti pacchetti: gpicview : visualizzatore di immagini lxappearance : componente per la congurazione di temi, icone e font lxde-common : impostazioni per integrare le varie componenti di lxde lxde-icon-theme : tema di icone per lxde
24

http://lxde.org/

3.4 Personalizzazione del sistema : Beyond Linux From Scratch

35

lxlauncher : lanciatore ideato principalmente per i netbook lxmenu-data : le per adeguare speciche 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 : le-manager predenito di lxde Per linstallazione di LXDE, Beyond Linux From Scratch ore una sezione molto ben strutturata: LXDE DESKTOP25 . Per quanto possa sembrare un procedimento non troppo lungo in realt a ogni pacchetto da installare richiede quasi sempre delle dipendenze (allinizio 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 theme0.5.0 :
lxde icon theme 0.5.0 |> GTK 2 . 2 4 . 2 2 |> gdk pixbuf 2.30.1 |> l i b j p e g turbo 1 . 3 . 0 |> NASM 2 . 1 0 . 0 9
25

http://www.linuxfromscratch.org/blfs/view/svn/lxde/lxde-desktop.html

36

3. Progettazione e costruzione di una distribuzione a ni didattici

La prima veste graca

Dopo aver installato lxde come desktop-environment e possibile scaricare ed installare uninnit a di temi graci direttamente da internet26 . Per questa distribuzione ho cercato una veste graca non troppo elaborata e un wallpaper che rispecchiasse il progetto che ho portato avanti. Per dare al lettore unidea nale del sistema operativo completo di interfaccia graca, allego un paio di screenshot del desktop.

26

http://gnome-look.org/ e uno dei siti con il maggior numero di temi graci in rete

3.4 Personalizzazione del sistema : Beyond Linux From Scratch

37

I primi software aggiuntivi Ora lattenzione si sposta verso la suite di software che il sistema operativo dovr a orire allutente. 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 specico : in questa invece fa parte tutta la suite di software mirata alla nalit a del progetto, ovvero utili ad uno studente che intraprende il percorso accademico di una laurea in informatica presso lUniversit a degli Studi di Milano-Bicocca. La categoria del software generico e facilmente risolvibile tramite un rapido sguardo a qualche distribuzione GNU/Linux famosa (Ubuntu 27 per esem27

http://www.ubuntu.com/

38

3. Progettazione e costruzione di una distribuzione a ni didattici

pio) per farsi un elenco dei software base che una qualsiasi distribuzione deve avere. Invece per quanto riguarda il software specico bisognerebbe avviare una piccola indagine, tra gli iscritti al corso di informatica ed i relativi docenti, dove viene chiesta una lista di software che questo sistema operativo deve orire, suddivisa per anno accademico e area didattica.

Capitolo 4 Conclusioni e sviluppo futuro


Arrivati a questo punto e giusto che mi soermi sulle ultime conclusioni del progetto portato avanti nora. Linux From Scratch e uno strumento molto aascinante ed oltre ad aiutare un utente alla creazione di una propria distribuzione, che risulta unica nel suo genere, ha anche un altra nalit a 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 uninnit a di personalizzazioni e congurazioni che Linux ore. Un altro particolare interessante e stato quello di trovare una comunit a di persone sparse in tutto il mondo molto interessate a nuove persone che si aacciano sul mondo Linux, disposte ad interagire su problematiche pi u 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 pi u importanti che per ragioni di tempistiche non sono stati sistemati ed eventualmente una riessione personale: 39

40

4. Conclusioni e sviluppo futuro

Congurazione della connessione wi : sono riuscito a connettermi in rete soltanto tramite connessione ethernet utilizzando il protocollo DHCP1 , mentre non sono riuscito a completare la congurazione corretta per lutilizzo del wi ( e presente un thread aperto dei problemi che ho riscontrato in linuxquestions.org 2 ) 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 uciali 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 unindagine verso studenti e docenti per fare in modo che contribuiscano a creare una suite di software e materiali utili al ne di ottenere una distribuzione il pi u completa possibile. Ottenuto questo potrebbe iniziare un periodo di test nel quale un certo numero di studenti inizieranno ad utilizzare un prototipo del sistema operativo per arontare poi un percorso di ottimizzazione e ranamento della versione nale che potr a essere rilasciata per un range di utenti ancora pi u ampio.

Dynamic Host Conguration Protocol: protocollo che permette lacquisizione di

indirizzi IP in maniera dinamica 2 http://www.linuxquestions.org/questions/linux-from-scratch-13/[blfs-7-4]-wi-wlan0interface-didnt-recognize-4175486558/ 3 http://www.linuxfromscratch.org/lfs/view/development/chapter06/pkgmgt.html

Bibliograa
[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] Denizione 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. Chones - Sistemi operativi - terza edizione Pearson (Prentiche Hall), pp. 710714. [6] SwapFaq: https://help.ubuntu.com/community/SwapFaq [7] Anatomy of Linux journaling le systems http://www.ibm.com/developerworks/library/ l-journaling-filesystems/

41