Commenti sull’Info Age

Diari sull’informatica e dintorni

Archivio per Novembre 2007

Disk RAID con NVIDIA su Ubuntu 7.04 e 7.10 (e Linux in genere)

Pubblicato da orter su Novembre 18, 2007

I secchioni li chiamano fake raid. Sono i raid array gestiti dai bios delle moderne schede madri SATA.

Si chiamano “fake” (ovvero fasulli) per distinguerli dai disk array gestiti da opportuna interfaccia hadrware U-PCI/PCI.

Se i fake array permettono RAID 0, 1, 2, o JBOD con opzioni di gestione veramente di base, gli array hardware permettono RAID 0, 1, 2, 5, 10, JBOD e scalabilità da 5 a 10 dischi.

Ma i fake array sono veramente economici. Gli array hardware sono costosi (si parte da € 250 per un controller da tre dischi), e non tutti sono compatibili con Linux, anzi solo alcuni sono utilizzabili a pieno, per molti occorre rinunciare a funzioni pagate fior di quattrini e ci sono casi di piena incompatibilità.

Ci sono diverse guide per gestire i fake raid array su Linux, per esempio:

In quasi tutte queste guide si mostra anche come installare una distribuzione Linux su un disk array.

Ma i fortunati possessori di fake array, oltre a risparmiare soldi, si trovano a risparmiare fatica. Adottando la gestione del disk array offerta dal bios, l’utilizzo del comando mdadm (amministrazione disk array) diveta inutile.

Comunque, per completezza, si elencano prerequisiti all’uso di mdamd ed esempi commentati.

Su Ubuntu/Debian occorre installare mdadm

apt-get install mdadm

Sia però chiaro che il metapackage raidtools2, citato in alcune guide, è obsoleto.

Per creare un disk array di tipo 1 (mirror):

mdadm --create /dev/md0 --level=1 --raid-device=2 /dev/sdb1 /dev/sdc1

Cambiando –level si impostano raid di tipo 0, 10 o 5.
Naturalmente occorre elencare i device voluti.

Ma per chi usa il setup da bios? Le guide sono fuorvianti.

Si deve impostare l’array usando il pannello di configurazione richiamato al boot della macchina solitamente premendo f10, per capire come cosa fare è bene darsi una letta al manuale della piastra madre, comunque, mediamente, si tratta di elencare quali dischi compongono l’array e che tipo di array (0, 1, 10, jbod) si vuole installare.

Una volta creato l’array ed eseguito il boot di Linux, in /dev/mapper appare un apposito device che si deve utilizzare per

  1. creare una partizione con fdisk o gparted
  2. formattare com mkfs.ext2 o mkfs.ext3 o mkfs.raiser (o qualsiasi fs supporti i RAID)

Il nome del device varia in base al chipset in scheda. Personalmente mi trovo un /dev/mapper/nvidia_gccjfcbf.

Addirittura, il bios rende resistente l’array ad eventuali usi errati di fdisk o mdamd. Ho provato a cancellare la partizione dal device e crearne una nuova e ci sono pure risscito.

 Al primo riavvio di macchina ho potuto comunque ricostruire l’array precedentemente creato senza perdere un solo file.

L’unico appunto è che fdisk -l non lista il device mapper. E’ comunque di aiuto gparted:

gparted mostra il mio disk array fake

Una volta formattato il disk array va montato con

sudo mount -t reiserfs  /dev/mapper/nvidia_gccjfcbf /home/data

Ultima nota: se si tenta di usare madm su di un array gestito da scheda madre si otterrà l’errore ‘device busy’.

Pubblicato su Uncategorized | Lascia un commento »

La guida galattica alle Unix Shell parte 3: Script Warm Up

Pubblicato da orter su Novembre 13, 2007

Le nostre mani sullo Unix Scripting

Shell Script Warm Up.

Piccolo riassunto delle parti componenti questa guida:

Parte 1. Perchè esistono le shell.
Parte 2. I primi esperimenti con i comandi Unix.
Parte 3. Script Warm Up.

Per imparare velocemente occorre fare domande, queste sono le più comuni:

Ma io come scrivo le shell script?

Utilizzando l’editor preferito! Che sia il vecchio, ma sempre verde, VI, che sia EMACS o i più prosaici KWrite, Kate, Gedit va bene lo stesso. Scegliete una cartella dove salvare la script (fare una sottodirectory della propria home va benissimo) ed iniziate a lavorare. Un unica accortezza: dopo aver salvato la prima volta la shell, proprio prima del primo lancio, sulla linea di comando digitare

chmod 744 nomeshell.

In questo modo potete lanciare la shell digitando

./nomeshell

il ./ non è un errore di battitura, ce lo dovete mettere.

Ma io come lancio le shell script?

Leggendo il punto precedente dovrebbe essere chiaro: da una shell occorre entrare nella cartella dove c’è la script e lanciarla con ./nomeshell dopo averne cambiato le permission. Una alternativa è lanciare la shell digitando: bash ./nomeshell (in Linux) o ksh ./nomeshell (in AIX e HP/UX) o csh ./nomeshell se siete tra i pochi che usano la c shell. Sì, è pure possibile lanciare la shell da un Window Manager, ma non è pratico per il debugging.

Quali sono gli interpreti disponibili, (ovvero, nello slang dei secchioni, le shell disponibili)?

Brutta notizia: in ambiente Unix non c’è un unico linguaggio script, ci sono vari interpreti e quindi vari dialetti. Buona notizia: i più usati sono due: in ambiente Linux la Bash (che a volte nele guide è semplicemente chiamata sh), in ambiente Aix (lo Unix di IBM) e HP/Ux (lo Unix di Hp) la Ksh (la Korn Shell, disponibile comunque anche per Linux, ma non è spesso inclusa nelle distribuzioni, va installata).

Ci sono altri linguaggi script diffusi: c’è csh che deriva dal linguaggio c, la sh classica (Bash sta per Bourne Again Shell, è un riscrittura della sh). Ma i sono anche il Perl ed il Tcl, che permettono potenza ed affidabilità.

Come faccio a capire quale interprete sto usando?

Bella domanda! Digitare dal promt di comando

 env | grep SHELL

Questo vi dirà quale shell è il default dell’utenza. Se si lancia una script questa verrà interpretata dall’interprete di default. A meno che non si lanci esplicitamente lo script con i comandi:

 ksh ./nomeshell

o

 sh ./nomeshell oppure  bash ./nomeshell

E’ anche possibile indicare quale interprete si vuole adoperare all’interno della shell stessa inserendo come prima riga del codice

#!/bin/nomeiterprete (esempio #!/bin/bash).

Quali sono i comandi di una shell script?

Sono tutti i comandi Unix ed alcuni ‘controllori di flusso’. In Informatica i controllori di flusso sono le istruzioni condizionali ed i cicli.

E adesso finalmente….

La prima shell: hello World

E’ tradizione, questa è la shell:

#!/bin/bash echo "Hello World"

Variabili

Le variabili possono avere nomi composti da caratteri alfanumerici, ma devono iniziare con caratteri alfabetici. Vanno bene variabili come foo, pippo, andrea, lucano, tina132, ma non 2ina.
Per valorizzare una variabile basta porre nomevariabile=valore, esempio foo=”ciccio formaggio” oppure foo = 1. I valori numerici non sono compresi tra doppi apici, quelli testuali sì.
Per leggere il valore di una variabile basta premettere alla medesima il carattere $. Quindi:

foo="ciccio formaggio" echo $foo

mostra a video…. ciccio formaggio.

Variabili speciali

E’ possibile passare dei parametri alla script: ovvero chiamare la shell così

./miashell par1 par2 par3

Per capire basta guardare questo esempio. Questo è il testo della script stampaparametri.sh

#!/bin/bash  echo "Primo parametro:" $1

echo "Secondo parametro:" $2echo "Terzo parametro:" $3

echo "Hai inserito " $# " parametri"

Lanciando

./stampaparametri.sh cuccu ruccucu paloma

si ottiene

cuccuruccucupaloma

3

Quindi è abbastanza chiaro che la variabile $1 è la prima stringa che segue il nome della shell nel richiamo, $2 la seconda, ecc. La variabile $# fornisce il numero di parametri passati. Una curiosità: $0 è valorizzato….con il nome della shell.

Istruzioni condizionali (e concatenamento delle istruzioni).

Danno la possibilità di condizionare l’esecuzione di alcune istruzioni. Per esempio, se si vuole copiare il particolare file dalla cartella /var/log/scrollkeeper.log alla /tmp, ma solo se quest’ultimo esiste, si può scrivere questa script:

#!/bin/bashif [ -f /var/log/scrollkeeper.log ]then

cp /var/log/scrollkeeper.log /tmp

else

echo "Impossibile copiare"

fi

Quindi il formato delle istruzioni condizionali è

if [ condizione ]   thenistruzioni da eseguire se la condizione è vera

else

istruzioni da eseguire se la condizione è falsa

fi

Attenzione, then deve andare a capo, oppure è possibile scrivere così:

if [ condizione ];then

Per cui ‘;’ è alternativo all’andata a capo per indicare all’interprete che può considerare l’istruzione finita. Si possono concatenare più istruzioni separandole con ‘;’ se si vuole scrivere codice illegibile. Per esempio:

echo "tre";echo "due"; echo "uno"; echo "sciacquone!!".

Le condizioni (i secchioni li chiamano test) che si possono mettere nella if sono molteplici. Il test appena visto verifica la presenza di un file. Questo

if [ -d /tmp ]

verifica la presenza di directory. Naturalmente è possible confrontare numeri e stringhe, per esempio:

#!/bin/bashset $pippo="ciao"if [$pippo="ciao"];then

echo "ciao ciao"

else

echo "maleducato"

è una shell che, una volta lanciato stampa a video la stringa “ciao ciao”. Il carattere ‘=’ serve a confrontare stringhe, ma anche numeri:

#!/bin/bashset $pippo=1if [$pippo=1];then

echo "ciao ciao"

else

echo "maleducato"

Per confrontare numeri, la Bash, oltre all’operatore ‘=’, accetta anche l’operatore ‘-eq’:

#!/bin/bashset $pippo=1if [$pippo-eq1];then

echo "ciao ciao"

else

echo "maleducato"

Attenzione: occorre rispettare le spaziature (o l’assenza di spaziature indicata nell’esempio.
Non è corretto scrivere:

if [$pippo -eq 1];then

Gli operatori di confronto utilizzabili sono = < > e -eq (sta per =) -gt (sta per >) -lt (sta per <) -ge (sta per =>) -le (sta per =<). In ksh è obbligatorio utilizzare -ge, -le, -gt, -lt, -eq per i valori numerici e =, >, < per le stringhe.

Cicli e ricicli (ma non bicicli).

Per terminare questa sezione del manuale ecco un esempio di script che usa un ciclo:

#!/bin/bashwhile truedo

echo "pippo"

done

Se la lanciate dovrete terminarla con la pressione dei tasti ctrl+c. Naturalmente while può essere seguito da un test uguale a quelli usati per le istruzioni condizionali.
Ma, come nei cartoni animati, nei telefilm e negli articoli (ma mai nei film porno) si vedrà tutto la prossima volta.

Pubblicato su unix script | 3 Commenti »

Ubuntu 7.10 Fa Schifo

Pubblicato da orter su Novembre 3, 2007

Ubuntu in prospettiva diversa

Linux, nei vari gusti offerti via via nel tempo, è sempre stato un sistema operativo per secchioni. Per utilizzarlo occorre studio, passione, precisa volontà.

Ultimamente alcune aziende propongono delle distribuzioni che hanno l’obiettivo di rendere utilizzabile Linux anche dagli utonti (cioè le persone normali, i non secchioni).

Ubuntu (nome che, nonostante l’assonanza, non indica l’apparato riproduttivo africano, vuol dire umanità vista dagli altri) è la distribuzione proposta da un’azienda che si chiama Canonical. Questa distribuzione, più di altre, fa dell’usabilità un vessillo da sbandierare e questa strategia ha il pieno supporto di un manipolo di secchioni che chiama sè stesso comunità.

Devo dire che la precedente versione (la 7.04) ha svolto il suo compito abbastanza bene: si installa e propone all’utente un sistema tutto sommato immediatamente usabile anche se nei limiti di produttività offerti da Open Office, dai vari tool di configurazione e dal windows manager stesso. Addirittura i possessori di schede grafiche accellerate (cioè quasi tutti gli utenti) possono godere di effetti speciali che appaiono quando si fa uno switch tra finestre o quando si minimizza/massimizza un programma o quando si cambia desktop. Stì effetti non servono a nulla, o quasi,ma piacciono molto ai secchioni. Con 7.04 le attività da ufficio si svolgono effettivamente senza l’aiuto di un secchione. Ma un pò più difficile è vedere i puffi da un DVD. Occorre cercare il da farsi in qualche forum, blog o documentazione sparsi nella rete, capire che occorre utilizzare il sistema di scarico ed installazione pacchetti per mettere nel proprio PC un affare che si chiama metapacchetto. Durante l’istallazione, molto difficile per il normoutonto, il sistema avverte che si sta attivando un’opzione insicura e potezialmente illegale. Tutto questo piace molto ai secchioni, ma spaventa i normoutonti. Io volevo solo vedere i Puffi! E mi tocca installare qualcosa di illegale?

Da qualche giorno Canonical offre la distribuzione Ubuntu 7.10 che non è riuscita proprio benissimo. L’installazione o l’upgrade dalla precedente sono alquanto facili, ma dopo questi l’utente si può trovare di fronte a qualche fastidio. Alcuni non riscono ad accedere a parti del disco rigido, ad altri (tra cui a me accidenti) Firefox si impianta a tratti. Ad altri (tra cui sempre a me, che culo) gli effetti grafico/inutili non sono disponibili.

Poco male (insomma) per il secondo problema, ma il primo è vitale. Come risovere? Anzi…perchè risolvere? Perchè si fa una nuova distribuzione e mi si lascia nel guano? Non bastava tenere la vecchia? Canonical mi ricorda Microsoft degli anni peggiori, solo che M$ la lezione l’ha imparata: rilascia sistemi dopo anni e dopo vari test (che tra l’altro non bastano). Canonical non ci è ancora arrivata.

Comunque, dopo l’upgrade da 7.04, visti i problemi, mi sono dato da fare. Per cercare informazioni mi sono rivolto a Canonical, ma ho scoperto che informazioni su 7.10 non ce ne sono. Esattamente come M$ ai tempi di Windows 98 ME(rda) edition. Bene! Allora mi sono rivolto ai vari blog (ultima moda del web) mantenuti dai secchioni.

Qui ci sono vari articoli dove, a fronte del difetto di Firefox, si fa appello a mantra secchioni che, putroppo, spesso vedo apparire nei blog. Per esempio:

il freeze a singhiozzo di Firefox sarebbe colpa alternativamente di

  • Un Bug Noto (e quindi non c’è nulla da fare, sopporta e ciucciati il calzino, perdente!)
  • Dei driver Proprietari Di Invida (che essendo proprietari sono il male)
  • Xorg E’ Cofigurato Male (non ci azzecca nulla, ma fa figo)
  • Della Goolge bar (che io non ho)

e consimili. In realtà, essendoun po’ secchione anch’io, sospetto che Canonical abbia compilato Firefox utilizzando le librerie Gnome 64 Bit che sono in beta da un anno. Ottima scelta! Quindi non ho fatto altro che reinstallare Firefox riscaricandomelo dal sito proprietario. Non ho disinstallato quello proposto di Canonical, perchè voglio godermi la differenza e voglio capire quando verrà scaricata la patch che sistema il tutto, ho messo la versione scaricata nella mia home dir e woila! Tutto funziona come in 7.04. Certo devo reinstallarmi plug-in vari.

Ed ecco il frutto della mia pazienza:

Firefox senza i freeze a singhiozzo su Ubuntu 7.10!

Risolto il primo problema, mi sono concentrato sugli effetti 3d per le finestre. Che non servono quasi a nulla, ma che diavolo! Ci sono!

Visto che non riuscivo a girare il mitico cubetto, il primo passo è stato cercare un tool per configuare compiz (il sistema per gestire gli effetti grafici 3d). Che sorpresa, Canonical non ha pensato di includerlo nella distribuzione.

Mi sono rivolto ai soliti blog secchioni e ho trovato il tool Advanced Desktop Effect Setting (ogni volta che affronto Gnome sento la mancanza del Control Panel che M$ Windows ha dalla versione 3.0.) Installato questo, nulla è cambiato. Eppure Ubuntu mi dice che il cattivo driver proprietario è installato e attivo.

A questo punto mi ricordo di come mi sentivo quando Windows 3.1 non utilizzava la mia strapagata Ultra Vga a 65.000 colori. E quindi ho disattivato e riattivato il suddetto driver, l’informatico è così, se l’automobile gli si rompe lui scende, risale e riprova a metterla in moto….e di solito ha ragione. In questo caso, dopo la riattivazione del Xserver con un bel crtl+alt+backspace mi sono ritrovato ad una risoluzione di 640×480. E ho anche scoperto che in questa risoluzione è difficile schiacciare system, Gnome funziona male.

Bello schifo, driver attivato….ma niente 1040×768, altro che compiz. Stavo per disintegrare la partizione Ubuntu per passare a Fedora, quando mi sono ricordato di quando facevo cose analoghe su Windows 3.51 e ho dato uno sguardo alla configurazione del monitor. Ubuntu mi diceva che stavo usando un Monitor Plug&Pray (e quindi tutto bene no?). Io gli ho detto di usare il mio vecchio Philiphs 105S (9 anni di vita) e BUM improvvisamente ecco disponibili tutte le risoluzioni. Riavviato Xwindows (altra morsa di strangolamento vulcaniano crtl+alt+backspace) ed ecco apparire il logo NVidia.

Ed ecco il risultato del mio sforzo:

Ma allora Compiz serve

Quindi Ubuntu avrà pure avuto i driver installati, ma non li usava. Il bello che ho usato gli stessi trucchetti per Windows di quando ero giovane. Che nostalgia!

Mi dispiace Canonical, il tuo prodotto nella versione 7.10 è ben lungi dall’essere usabile, è un gioco per secchioni. Per essere chiaro: Ubuntu 7.10 fa schifo, è meglio 7.04, nonostante i buoni pareri che appaiono su vari blog, magari anche seguiti come questo.

Pubblicato su distribuzioni linux | 54 Commenti »