Corso di Laurea Triennale in Ingegneria Informatica e dell'automazione Sistemi Operativi Progettazione di un OS GNU/Linux dedicato: FLiOS
Cos'è e perché creare un OS dedicato Siamo abituati a concepire un PC come una macchina tuttofare. SO come MS Windows o Mac OSX sono nati per permettere l'utilizzo facilitato e generico di un PC, consegnando all'utente una piattaforma pronta ad eseguire qualsiasi tipo di programma. In ambiti di uso particolari, però, è molto più efficiente e sicuro per l'utente avere a disposizione esclusivamente le funzioni richieste, riducendo allo stretto necessario l'interfaccia, ottimizzando e automatizzando la configurazione e l'interazione tra le applicazioni e riducendo al minimo le possibilità di errore. Avere un SO standardizzato e semplificato facilita notevolmente la manutenzione e l'aggiornamento di questi sistemi. 2
Perché scegliere un sistema GNU/Linux? I sistemi Linux non sono intesi come un prodotto finito per l'utente, sono piuttosto una scatola di montaggio dove, al di sopra del kernel, è possibile inserire mattoncini (pacchetti software) pescando dalle repository open source, per costruire un sistema per le proprie funzionalità. I sistemi che mettono a disposizione compilation di software già installato e configurato si chiamano distro (es. Ubuntu, Fedora, Mint) 3
Cosa ci serve? FliOS, il sistema che prendiamo come esempio, è una distro contenente tutto il software e le configurazioni necessarie a realizzare con un PC e periferiche audio USB una vera e propria regia radiofonica per trasmettere in streaming su www.frequenzalibera.it, la radio studentesca del Politecnico di Bari. Usa come base di partenza Debian, una distro affidabile (su di essa sono basate Ubuntu e molte altre) e che permette l'installazione di un sistema minimale. La distro dovrà essere adatta ad hardware non recenti e configurare in automatico i dispositivi sonori che possono variare in numero e tipologia ad ogni avvio. 4
Debian, cosa la caratterizza? Debian gestisce il software tramite i pacchetti deb. Questi sono file compressi che possiedono al loro interno i dati e i file eseguibili del software che vogliamo installare e le informazioni delle dipendenze, ovvero i deb da installare affinche il nostro programma funzioni. I pacchetti deb sono gestiti da un software apposito chiamato apt che recupera e installa (e nel caso disinstalla) i deb e ne risolve le dipendenze. Aptitude fa uso di repository, ovvero server centralizzati che mettono a disposizione i pacchetti deb per il download.
Come Partire? Installiamo sul nostro PC un software di virtualizzazione. Come Virtualbox. Usare una macchina virtuale ci permeterà di evitare qualsiasi problema di incompatibilità che potrebbe insorgere sul nostro pc fisico. Creiamo una macchina virtuale e scarichiamo una Debian Stable nella versione netist usando la iso liberamente scaricabile da http://www.debian.org/distrib/netinst Carichiamo la iso nel lettore cd virtuale della nostra macchina appena creata e avviamola Eseguiamo l'installazione passo passo, ricordando di partizionare l'hard disk virtuale in una partizione dove mettere (quindi montata come directory /) e una piccola (1 GB o meno) partizione per lo swap della RAM Quando l'installazione richiede di installare componenti aggiuntivi (interfaccia grafica predefinita e server vari deselezioniamo ogni elemento. Al termine dell'installazione avremo un sistema minimale con la sola linea di comando bash. 6
Le repository Debian Installando Debian in versione netinst e stable il nostro sitema userà come repository l'archivio dei pacchetti deb con dentro le versioni del software più stabili. L'attuale branca Stable di Debian è denominata Wheezy. Esistono anche le branche testing (chiamata Jenny e futura stable) e unstable denominata sempre Sid. Possiamo modificare le repository usate da Apt per istallare software non fornito da Debian stessa o non open source (ad esempio spotify o skype che hanno i loro server di repository) Per modificare le repository dobbiamo editare la configurazione di apt col comando # nano /etc/apt/sources.list Ogni repository è definita con la riga deb [Server] [versione di debian] [sottobranche] Le sottobranche possono essere: main (open supportate dalla comunità debian) contrib (supportate da terze parti) non-free (non open come i driver proprietari) Una volta terminate le modifiche diamo # apt-get update per aggiornare apt.
Realizziamo l'interfaccia grafica Siamo abituati a vedere su Windows o Mac che l'interfaccia grafica è intesa come un unico blocco software, anche su molte distro l'interfaccia grafica è intesa come Gnome, Kde, Unity etc. In realtà queste non sono altro che raggruppamenti di componenti tra di loro indipendenti e sostituibili con software alternativi (chiamati Desktop Environments). Alla base di tutto c'è il server X, vero e proprio disegnatore che riceve le informazioni degli elementi da rappresentare dalle applicazioni e le realizza comunicando direttamente con la scheda video. Per fornire la nostra distro del server grafico installiamo il pacchetto xorg (installerà molti pacchetti da cui dipende, compresi i driver specifici e generici per interfacciarsi con le schede video) dando il comando # apt-get install xorg 8
Display Manager e Windows Manager Ora tocca installare il componente che avvia il server X all'avvio dal S.O. bypassando la linea di comando e richiede il login dell'utente, questo si chiama Display Manager. Per la nostra distro abbiamo scelto il pacchetto slim, semplice e altamente personalizzabile. # apt-get install slim Slim è un demone, ovvero un provcesso avviato subito dopo il boot con permessi di root. Per controllare la sua esecuzione sun un terminale non grafico (ad esempio premendo la combinazione CTRL+ALT+F1) usate il comando # service slim start (oppure stop o restart) A login avvenuto sarà avviato un Windows Manager, ovvero il componente che gestisce posizione e dimensione delle finestre delle applicazioni. Noi abbiamo scelto openbox. Installiamo openbox e il suo tool di configurazione grafico obconf con # apt-get install openbox obconf 9
Costruiamo la nostra interfaccia Ora che abbiamo le fondamenta popoliamo la schermata delle componenti di un desktop che sia per quanto possibile simile al familiare ambiente windows. Avviato OpenBox clicchiamo col tasto destro sullo sfondo e avviamo il terminale per dare i comandi di shell. OpenBox può avviare uno script di autorun da ~/.config/openbox/autorun.sh (o solo autorun in versioni più recenti), in esso andremo a inserire i comandi per avviare le componenti del nostro desktop. Noi abbiamo scelto: Pannello delle applicazioni: tint2 (include anche tray bar e icona menu, altri pacchetti forniscono queste funzionalità anche separatamente) Gestore file: pcmanfm Gestore icone desktop: assente (avremmo potuto usare lo stesso pcmanfm per questo ruolo) Gestore sfondo Desktop: feh Gestore connessioni: wicd 10
GUI pcmafm menu tint2 Traybar 11
Programmi di utilità Anche se la distro deve essere quanto più possibile essenziale non possiamo dimenticare software fondamentali come browser, editor di testo o il gestore di file compressi. Le alternative per questi software e per quelli citati precedentemente sono molte e le combinazioni che ne possiamo fare sono innumerevoli, dipedenti dal nostro solo gusto. Apt mette a disposizione un ottimo strumento per cercare i pacchetti che potrebbero servirci. Usando il comando $ apt-cache search browser ad esempio apt ci listerà tutti i pacchetti che contengono la parola browser nella descrizione. Una buona fonte per conoscere alcuni dei pacchetti disponibili è questa pagina della Wiki della distro Arch https://wiki.archlinux.org/index.php/list_of_applications 12
Sistema audio L'intermediario tra le applicazioni e l'hardware audio è l'alsa, installiamolo tramite il metapacchetto alsa. Le applicazioni di solito non usano direttamente l'alsa ma un server intermedio chiamato PulseAudio, installiamo anch'esso I software di equalizzazione, effettistica e regia sono software indipendenti connessi tra loro e con l'hardware fisico tramite un server di gestione chiamato jack che anch'esso si poggia su alsa. Una volta installato jack dobbiamo deviare l'input e l'output di pulseaudio da alsa a jack o i due sistemi entreranno in conflitto. A questo punto installiamo idjc, jamin e tutti i software necessari alla regia radiofonica. 13
Script di autoconfigurazione di FliOS Ora che il sistema base è pronto è il momento di pensare ad un sistema di autoconfigurazione dell'hardware audio, che può cambiare da PC a PC o persino da avvio ad avvio, e il server jack che necessita di sapere su quali dispositivi deve essere avviato. Per ovviare a queste problematiche FliOS dispone di una serie di script scritti ad hoc che all'avvio della GUI individuano l'hw audio connesso e richiedono all'utente il ruolo da affidare ai vari dispositivi. Jack permette di connettere gli I/O audio dei programmi e dell'hardware arbitrariamente tra loro, altri script sviluppati per l'occorrenza memorizzano e recuperano le informazioni a seconda del profilo hardware predefinito prescelto. 14
Esempio connessioni I/O su Jack 15
Approfondimenti Il progetto FliOS è portato avanti dai ragazzi di Radio Frequenza Libera (www.frequenzalibera.it) ed è aperto a tutti gli studenti del Politecnico interessati a contribuire o imparare qualcosa in più sui sistemi GNU/Linux. Per maggiori informazioni su FliOS scrivete a m.benedetto@email.it Per maggiori informazioni sul progetto Radio Frequenza Libera scrivete a info@frequenzalibera.it