L’abc dell’informatica 1

giugno 2, 2007

Il disco fisso, partizioni e file system

discofisso.jpg

Navigando in rete, chiacchierando con amici, chattando su IRC ho osservato che più di 15 anni di monopolio Windows sui sistemi operativi hanno da una parte dato accesso ai PC a molte persone e dall’altra abbassato tragicamente il livello medio di decenza sulle competenze informatiche di base. Le difficoltà riscontrate nell’installazione di sistemi operativi alternativi come GNU/Linux (ma non solo quello!) non sono affatto difficoltà insite nel sistema ma vere e proprie lacune di informatiche di base.

Parto con oggi con una mini serie di guide su questioni elementari. Oggi parlo del disco fisso.

Leggi il seguito di questo post »

Annunci

FreeBSD vs Linux

giugno 2, 2007

GNU/Linux è decisamente il più famoso sistema operativo costruito con software aperto e libero. Tuttavia non è l’unico: anche FreeBSD sta accumulando consensi grazie alla sua stabilità, alla sua robustezza e alla sua sicurezza. In questo articolo cercheremo le similitudini e le differenze tra questi sistemi operativi.

Introduzione

FreeBSD è un sistema operativo basato sulla Berkeley Software Distribution (BSD), che a sua volta è una modifica dello UNIX AT&T, creato dall’Università della California. Durante lo sviluppo di FreeBSD, per evitare problemi legali con i proprietari del codice, gli sviluppatori hanno deciso di ricostruire il BSD originale piuttosto che copiarne il codice.

Diversamente da GNU/Linux, dove ogni singolo componente viene sviluppato separatamente e messo assieme grazie alle distribuzioni, FreeBSD è stato concepito come un completo sistema operativo: il kernel, i drivers per le periferiche, gli strumenti di amministrazione e tutti gli altri componenti del software sono mantenuti nella stessa revisione di sistema.

Lo sviluppo iniziale di Linux risae al 1991 grazie a Linus Torvalds che utilizzò Minixun sistema operativo concepito da Andrew Tanenbaum a fini didattici—come piattaforma di partenza per il suo sistema. Nel 1990 il progetto GNU, iniziato da Richard Stallman nel 1983, aveva già prodotto e messo assieme tutte le librerie, i compilatori, gli editor di testo, le shell e il restro del software per dar vita ad un sistema operativo libero; mancava il kernel. Gli sviluppatori dil Linux decisero di adattare quel kernel in modo tale che potesse lavorare col software GNU per costituire un sistema operativo completo: nacque così GNU/Linux.

Il kernel, gran parte del codice di FreeBSD è stato rilasciato e distribuito sotto licenza BSD anche se diverse componenti del sistema utilizzano altri tipi di licenze come la GPL, la LGPL o la ISC. Il kernel Linux, e la maggioranza dei programmi che fanno parte del progetto GNU vengono proprio rilasciati sotto la GPL (GNU Public Licence) che è stata concepita dalla Free Software Foundation.

Differenze tecniche

Sia FreeBSD che Linux seguono la filosofia UNIX tuttavia permangono delle differenze tra questi sistemi operativi—cerchiamo di evidenziarle da un punto di vista tecnico.

Periferiche

I dispositivi hardware come i dischi, schede di rete, stampanti, schede grafiche, mouse e tastiere vengono classificate usando il termine device nel contesto dei sistemi operativi; Linux e FreeBSD usano una diversa nomenclatura per questi hardware.

Linux usa nomi predefiniti per ogni tipo di periferica e, per questo motivo, eth0 è la prima scheda di rete Ethernet a prescindere dal tipo di chip presente nella scheda. FreeBSD, d’altro canto, utilizza un nome differente per ogni tipo di periferica e per ogni chip presente: ad esempio, una singola scheda di rete con chipset RealTek 8129 viene chiamata rl0 sotto FreeBSD.

Sotto Linux le informazioni hardware possono essere ottenute esaminando il contenuto della directory /proc; in alternativa da linea di comando si può utilizzare lspci o lsusb. Questi comandi non fanno nient’altro che riformattare le informazioni contenute dentro /proc. FreeBSD non usa la directory /proc, bensì il comando sysctl che può essere utilizzato sia per mostrare tutte le informazioni sull’hardware presente che per configurarlo o aggiornarlo.

Runlevels e scripts di avvio

Runlevel è il termine utilizzato per descrivere la modalità operativa di un sistema come il riavvio, lo spegnimento, modalità singolo utente o multiutente. Sotto GNU/Linux il file /etc/inittab descrive questi diversi runlevel e il processo init (inizializzazione) permette il sistema di passare da uno all’altro.

FreeBSD usa comandi come reboot o shutdown -h per cambiare i runlevel invece del comando telinit utilizzato da GNU/Linux.

Sotto GNU/Linux ogni runlevel ha una sottodirectory in /etc/ o /etc/rc.d/, a seconda della distribuzione in uso: Debian, ad esempio, usa /etc/. Queste sottodirectory sono rc0.d, rc1.d e così via fino all’ultimo runlevel (abitualmente sono sette). Ogni directory rcx.d contiene link simbolici a script di avvio che risiedono nella directory /etc/init.d/. (Uno Unix con tale tipo di init viene chiamato SysV n.d.t.)

Sotto FreeBSD gli scripts di avvio risiedono nella directory /etc/rc.d/ se riguardano il sistema e nella directory /usr/local/etc/rc.d/ se riguardano applicativi di terze parti. Questi scripts usano parametri come start o stop per controllare quale servizio debba esser lanciato all’avvio (start e reboot) e quali allo spegnimento. (Uno Unix con tale tipo di init viene chiamato BSD n.d.t.)

Anche se gran parte delle distribuzioni GNU/Linux utilizzano un init di tipo SysV come debian, redhat, mandrake e le loro derivate (Ubuntu, Fedora e Mandriva) ve ne sono diverse che o usano init in stile BSD (Slackware o Crux) o usano un init del tutto originale non assimilabile né a SysV né a BSD come il caso di gentoo. n.d.t.

Kernel

Ovviamente il disegno dei kernel Linux e FreeBSD presentano differenze, ma ci sono anche caratteristiche comuni:

  • Moduli: supporto per la carica e la scarica dei moduli senza dover ricompilare il kernel o riavviare la macchina.
  • Versioni: ogni kernel ufficiale usa un numero di versione.
  • Costruzione di un kernel personalizzato: tra i benefici che si possono rilevare ricompilando un kernel personalizzato possiamo citare una maggiore velocità di avvio, un consumo inferiore di memoria e un supporto migliore all’hardware.

I comandi per caricare e scaricare i moduli del kernel, come quello per elencare i moduli caricati sono diversi in ogni sistema. Chi utilizza Linux usufruisce del comando modprobe per caricare un modulo e per elencare quali moduli sono disponibili; lsmod si limita a mostrare i moduli caricati all’interno del kernel mentre rmmod scarica dal kernel i moduli indesiderati. Chi utilizza FreeBSD usufruisce di kldstat per elencare i moduli caricati, kldload per caricare un modulo e kldunload per scaricarlo.

Il kernel Linux usa tre numeri per ogni versione: il prima rappresenta la cosidetta major version—al momento tale numero è ‘2’; il secondo numero indica se è stabile (numeri pari) o una versione sperimentale di sviluppo (numeri dispari) mentre l’ultimo numero indica la versione della patch. Lo si può osservare nella versione più recente: 2.6.21. In FreeBSD il kernel ha due numeri di cui il primo rappresenta la major version mentre il secondo l’aggiornamento.

Costruire un kernel personalizzato in entrambi i sistemi richiede una compilazione da sorgenti. Comunque, i passi per la costruzione differiscono da sistema a sistema.

  1. La prima tappa consiste nello scaricare il codice sorgente oppure ottenerlo da un supporto fisico come un DVD o un CD—questa tappa è necessaria in entrambi i sistemi.
  2. Come seconda tappa occorre creare il file di configurazione del kernel al fine di stabilire quali parti del kernel compilare, quale driver hardware supportare e quanti moduli debba avere il kernel. In Linux questa configurazione avviene grazie alla presenza di un’interfaccia che si preoccupa di creare al posto nostro il .config. Sempre sotto Linux se desideriamo una GUI (Graphic User Interface) daremo il comando make menuconfig o make xconfig se invece ci basta una CLI (Command Line Interface) eseguiremo il comando make config. FreeBSD utilizza un approccio diverso: è presente un file di configurazione standard che va personalizzato utilizzando un qualsiasi editor di testo grazie al quale sarà possibile commentare o decommentare le opzioni che controllano i processi.
  3. Alla fine, in entrambi i sistemi, si utilizzerà il comando make per compilare e installare il kernel.

Installazione del software

Il software sviluppato da terze parti può esser distribuito o tramite binari o tramite sorgenti. Abitualmente questo software viene pacchettizzato utilizzando strumenti di archiviazione e compressione come tar e gzip. Tuttavia, la gran parte delle distribuzioni GNU/Linux utilizzano un loro formato particolare di pacchettizzazione e prevedono uno strumento per l’installazione, la rimozione e la configurazione del software. Debian, ad esempio utilizza i pacchetti dal formato .deb e strumenti come apt o dpkg per maneggiarli; Fedora, Mandriva e Suse utilizzano invece pacchetti .rpm e strumenti come yum, urpmi e yast. Utilizzando questi applicativi il processo di installazione di un software da linea di comando è piuttosto semplice; il seguente esempio mostra come installare il programma di manipolazioni di immagini The GIMP:

# apt-get install gimp

su Debian o

# urpmi gimp

su Mandriva.

FreeBSD prevede due strumenti interessanti per l’installazione del software:

Pacchetti

Un pacchetto è un singolo file compresso che contiene binari precompilati, documentazione e files di configurazione, comprese le informazioni che permettono al sistema di installare il software nelle directory giuste del filesystem. Strumenti come pkg_add, pkg_delete, pkg_info, ecc., vengono utilizzate per maneggiare i pacchetti. Caricare e installare automanticamente un pacchetto è piuttosto facile se si utilizza il comando pkg_add:

# pkg_add -r gimp

Ports

In FreeBSD il termine port significa una collezione di files destinati al fine di automatizzare il processo di compilazione e installazione di un programma a partire dal suo codice sorgente.

L’abilità che hanno gli applicativi che si occupano della gestione del software di capire le dipendenze è una caratteristica ad entrambe le metodologie: pacchetti e ports. I ports sono molto utili quando abbiamo bisogno di un controllo completo sui parametri di compilazione per ottenere il massimo dell’ottimizzazione per la nostra macchina; il pacchetto ha l’indubbio vantaggio rispetto al port di esser di dimensioni più ridotte dal momento che non contiene codice sorgente. Inoltre, l’installazione di un pacchetto non prevede che l’utente abbia nessun tipo di comprensione sui processi di compilazione. Dal momento che entrambe le strategie sono possibili sta all’utente scegliere, di volta in volta, quale tecnologia usare.

Si può installare un applicativo dal suo sorgente in entrambi i sistemi utilizzando i classici metodi di compilazione e installazione utilizzando la sequenza:

  1. # ./configure
  2. # make
  3. # make install

Shell

Bash (Bourne-Again SHell) è la shell di default in quasi tutte le distribuzioni GNU/Linux. In una installazione di default FreeBSD non prevede comunque bash. Ovviamente non si pone nessun problema dal momento che è possibile installarla:

# pkg_add -r bash

Le distribuzioni GNU/Linux scelgono la shell bash perché è stata scritta per il progetto GNU; FreeBSD usa csh, in linea con i sistemi UNIX tradizionali.

Nel caso in cui si preferissero altre shell come tcsh o csh, si possono installare in entrambi i sistemi operativi utilizzando le modalità sopra descritte. La scelta della shell è una decisione del tutto personale che dipende dal tipo di esperienza che si possiede e la tipologia di lavoro che si intende mettere in pratica.

Installazione

Come detto sopra, Linux e FreeBSD possono essere installati su diverse piattaforme. Si può anche scegliere di installare entrambi i sistemi operativi sullo stesso PC. Prima di tutto vediamo quali sono procedure coinvolte nel processo di installazione di ognuno di questi sistemi e dopo vedremo come farli coesistere sulla stessa macchina.

Installare GNU/Linux

La procedura per installare questo sistema operativo differisce a seconda della distribuzione, ma i passi basilari sono piuttosto simili tra loro:

  • Scegliere il mezzo di installazione, ovvero DVDs, CDs o installazione dalla rete.
  • Ottenere informazioni complete sulla macchina su cui verrà destinato il sistema.
  • Avviare l’installazione.
  • Scegliere lingua, paese e layout di tastiera.
  • Partizionare il disco rigido e scegliere il tipo di filesystem.
  • Lanciare l’installazione automatica del software di base.
  • Configurare le periferiche hardware devices e installare software di terze parti.

Ogni distribuzione possiede strumenti propri per muoversi in questi passi e alcune sono più facili di altre: YaST è uno strumento completo piuttosto semplice da usare dotato di una interfaccia grafica (GUI). Viene usato per l’amministrazione e l’installazione utilizzata da SUSE e altre distribuzioni GNU/Linux; Debian o Slackware, diversamente, utilizzano interfacce meno intuitive per gli utenti alle prime armi.

Installare FreeBSD

FreeBSD è munito di un programma che si chiama sysinstall che funge da assistente per il processo di installazione: è un programma che gira in console suddiviso in menù e semplici schermate che controllano e configurano il sistema durante tutte le fasi dell’installazione.

Non appena il PC viene avviato, parte sysinstall e FreeBSD è pronto per esser installato. sysinstall possiede diverse opzioni di installazione ma per la maggior parte degli utenti è consigliabile usare quella “standard”, scelta che si può fare direttamente dal menù come mostrato in figura 1.

Begin standard installation for sysinstall menu

Figura 1: Iniziare l’installazione standard dal menù di sysinstall

Le fasi principali dell’installazione di FreeBSD sono:

  • Liberare spazio sul disco e installare il boot manager: FreeBSD usa le slices per partizionare un disco rigido.
  • Scegliere cosa installare: il software è suddiviso in insiemi, ad esempio, l’insieme User provvede all’installazione del software per un utente standard compresi i binari e la documentazione. Nel caso in cui abbiate dubbi scegliere All è la scelta migliore poiché contiene tutti i sorgenti del sistema, i binari la documentazione e il sistema X-Windows.
  • Scegliere il mezzo di installazione: sysinstall prevede diverse modalità come CD/DVD, FTP, HTTP o NFS.
  • Avvio dei processi: questa rappresenta l’ultima possibilità di annullare il processo di installazione e non effettuare alcuna modifica alla macchina nel caso abbiate ripensamenti.
  • Post-installazione: il processo di configurazione parte quando il software è stato installato. In questa fase è possibile configurare le schede di rete, i servizi, i server FTP, l’ora, la zona geografica, la tastiera e tutte le altre periferiche hardware.

Installare entrambi i sistemi: GNU/Linux e FreeBSD sullo stesso PC

Entrambi i sistemi operativi possono coesistere sulla stessa macchina e l’utente può scegliere quale lanciare durante il processo di avvio. Per procedere a questa convivenza dobbiamo tenere in considerazione i seguenti fatti:

  • Boot manager: ovviamente dobbiamo poter scegliere quale sistema avviare.
  • Spazio sul disco: GNU/Linux e FreeBSD usano diversi tipi di filesystem e organizzano i dischi fissi in modo diverso.

Linux usa le lettere hd per i dischi rigidi IDE mentre FreeBSD usea la lettera s per le slices, che sono le porzioni in cui è suddiviso il disco fisso (diverse dalle partizioni DOS, n.d.t.), pertanto i metodi di gestione del disco fisso sono diversi da caso a caso. Sotto Linux hda1 rappresenta la prima partizione del primo disco IDE; sotto FreeBSD invece, una slice viene suddivisa in diverse sottopartizioni: per questo motivo il primo disco IDE è ad0 mentre ad0s1a è la sottopartizione a della prima silce del primo disco.

Per installare entrambi i sistemi sulla stessa macchina bisogna pur partire da uno dei due— partiamo ad esempio da GNU/Linux. Quando si arriva alla fase in cui occorre partizionare il disco, occorre creare almeno due partizioni primarie: la prima per GNU/Linux e la seconda per FreeBSD (mentre si può installare GNU/Linux su una partizione logica-estesa non è possibile farlo con FreeBSD, n.d.t.). Ricordiamoci che un disco può avere non più di quattro partizioni primare, o tre primarie e una estesa (suddivisa a sua volta in partizioni logiche, una per ogni file system).

Un semplice schema di partizionamento del disco a tale scopo può essere il seguente:

  • Una primaria per l’avvio.
  • Una primaria per il filesystem root.
  • Una primaria per l’area di swap.
  • Una primaria per FreeBSD.

Una volta che GNU/Linux è operativo siamo pronti a installare FreeBSD nella partizione primaria libera prevista. In questa partizione, che abbiamo già costruito con GNU/Linux, bisognerà creare almeno una slice per FreeBSD. Questa slice avrà almeno quattro partizioni:

  1. Partizione a per il filesystem di root.
  2. Partizione b per l’area di swap.
  3. Partizione e per il filesystem /var.
  4. Partizione f per il filesystem /usr.

La dimensione di ogni partizione dipende strettamente dalle dimensioni del disco fisso: si può assegnare lo spazio per ogni partizione a seconda delle convenienze (lo spazio non è più un problema sui moderni PC che abitualmente sono muniti di dischi da 100GB e oltre).

(Eventualmente è possibile condividere le partizioni di swap tra FreeBSD e GNU/Linux, come spiegato nel Linux+FreeBSD mini HOWTO.)

Per avviare i sistemi operativi abbiamo bisogno di un bootmanager. Quando si installa GNU/Linux abitualmente ci viene chiesto di scegliere tra GRUB o LiLo. Se abbiamo installato e configurato GRUB durante il processo di installazione di GNU/Linux non abbiamo bisogno di aggiungere alcun bootmanager durante il processo di installazione di FreeBSD: possiamo configurare GRUB all’interno della nostra distribuzione GNU/Linux in modo da far comparire anche FreeBSD tra le scelte dei sistemi da avviare. Qui sotto c’è un esempio del file /boot/grub/menu.lst (il file di configurazione di GRUB) che permette l’avvio di FreeBSD e Debian:

default    0
timeout    5

title       Debian GNU/Linux
root        (hd0,0)
kernel      /boot/vmlinuz-2.6.8-2-386 root=/dev/hda1 ro
initrd      /boot/initrd.img-2.6.8-2-386
savedefault
boot

title    FreeBSD
root     (hd0,2,a)
kernel   /boot/loader
KDE running under Debian GNU/Linux
KDE che gira sotto Debian GNU/Linux
KDE running under FreeBSD
KDE che gira sotto FreeBSD

Conclusioni

FreeBSD e GNU/Linux sono davvero due grandi opzioni: la scelta di uno o l’altro dipende da molti fattori. Abitualmente FreeBSD viene utilizzato nei server web: compagnie come Yahoo! o Sony Japan ripongono piena fiducia in FreeBSD e sopra vi fanno girare i loro portali internet; grazie alla sua licenza permissiva la stessa Microsoft include porzioni di codice BSD dentro Windows.

Nonostante il fatto che recentemente FreeBSD abbia iniziato a prender piede anche sui desktop, in quell’ambito GNU/Linux ha decisamente ancora la meglio, tuttavia anche GNU/Linux viene utilizzato per molti server web. Gli utenti che hanno familiarità con sistemi tradizionali UNIX scopriranno di poter utilizzare entrambi i sistemi senza grossi problemi. FreeBSD e Linux: un regalo di qualità, robustezza, sicurezza e stabilità dalla comunità opersource al mondo dei sistemi operativi.

Chi ha bisogno di X?

aprile 25, 2007

fb11.pngfb21.pngfb3.png

Come si può velocizzare l’avvio del nostro computer? Ecco una panoramica di alcune piccole applicazioni da console che ci permettono di effettuare le attività più comuni senza caricare pesanti interfaccie. Può capitare di dover accendere il computer solo per cercare un’informazione su google, solo per ascoltare musica o vedersi un film, solo per dover vedere le foto della macchina fotografica digitale o solo per masterizzare un CD. Eppure tutte le volte che accendiamo il nostro PC vengono caricati i driver di TUTTE le periferiche, dobbiamo aspettare l’avvio di una pesante interfaccia grafica e di tante altre cose di cui il più delle volte non abbiamo bisogno. La domanda a questo punto sorge spontanea: se voglio masterizzare un CD di dati perché prima di poterlo fare devo aspettare che il mio pc carichi il driver per la webcam o per la stampante? Perché devo aspettare che si carichi KDE o Gnome? Voglio solo masterizzare un disco, quindi l’unica cosa che mi serve è un programma che scriva sul CD e l’accesso ai dati da masterizzare. Viene in mente il DOS. Infatti rispetto ai sistemi operativi moderni, multimediali e multitasking il vecchio DOS aveva un grosso, un enorme vantaggio: non caricava nulla che non ti servisse. Il fatto è che Windows c’ha abituato a queste icone, ci ha abituato alle finestre, il che non ha nulla di male ma se non ne abbiamo bisogno? Inoltre, più sono raffinati e belli i nostri desktop più richiedono un dispendio di risorse. E’ paradossale: abbiamo masterizzatori che viaggiano a 52x ma per poterli utilizzare dobbiamo aspettare per caricare un’interfaccia a milioni di colori. Quello che voglio mostrare è che se usiamo Linux o un qualsiasi sistema BSD al posto di Windows non siamo obbligati a caricare cose che non ci servono, possiamo dire al nostro computer: carica SOLO quello di cui ho bisogno e fai SOLO quello. Pratica impossibile (o a me sconosciuta) su windows. Leggi il seguito di questo post »