EeeBSD setup: installazione FreeBSD 7 da USB (guida pratica per Eee PC)

23 02 2009

[ULTIMO AGGIORNAMENTO 13/03/2009 — revisione 7]


Scrivo attualmente dal mio ultimo acquisto un¬†ASUS EeePC 701, autentico gioiellino con un buon supporto anche per sistemi BSD e Linux. In rete potrete trovare diverse guide sull’installazione di Windows XP e Linux per netbook che come questo non sono dotati di lettore CD, ma difficilmente troverete qualcosa sull’installazione di sistemi BSD (a parte una lista di tentativi falliti su http://encryptio.com/ots/eeebsd ūüėõ ) mi sono cos√¨ dedicato a scrivere questa guida all’installazione di FreeBSD su ASUS EeePC 701 (4G) da penna USB nella speranza di essere di aiuto a tutti coloro che hanno avuto difficolt√† nel cimentarsi in tale “impresa”….vedrete che alla fine non √® poi cos√¨ difficile come sembra, basta solo sapere dove mettere le mani. ūüėČ

Tengo a precisare che questa guida rimane comunque facilmente adattabile anche ad altri modelli di netbook che come l’EeePC non sono dotati di lettore CD ¬†dato che i passaggi sono molto simili, dovrebbero infatti cambiare solamente le scorciatoie per accedere alla utility di configurazione del BIOS, come vengono nominati i dispositivi da FreeBSD in fase di installazione, etc…

In fondo all’articolo √® presente una lista dei modelli di ulteriori netbook su cui ho effettuato i test.




Opzioni di installazione

Qui di seguito sono elencate le possibili configurazioni per l’installazione di FreeBSD, potete ¬†scegliere quale vi sar√† pi√Ļ comoda, durante la guida spiegher√≤ i casi di entrambe le opzioni di installazione:

  1. installazione sulla SSD (o Hard Disk) interna al nostro EeePC (consigliato solo se si vuole dedicare la SSD interamente a FreeBSD, 4G sono pochini per un dual boot :/)
  2. installazione su periferica esterna USB (si pu√≤ eseguire anche su SD Card ma consiglio vivamente USB dato che risulta molto pi√Ļ veloce)

LEGENDA

  • quando si far√† esplicito riferimento a una particolare configurazione di installazione fra quelle elencate sopra (periferica interna/esterna), vedremo la dicitura¬†[1.] o¬†[2.]
  • la guida copre i passi di installazione da sistemi operativi Windows XP e Linux, i passaggi esclusivi per Windows inizieranno con la dicitura –Windows,¬†quelli per Linux con –Linux, termineranno entrambi con un -// finale

NOTA per installazioni Linux

data la moltitudine di distribuzioni Linux ho preferito scrivere i passaggi con operazioni effettuabili da terminale in modo da rendere la guida universale a tutte le distro Linux, le procedure elencate potrebbero richiedere privilegi di root

ATTENZIONE

√® consigliabile eseguire i backup delle periferiche usate prima dell’installazione, anche se si dovesse scegliere l’installazione su USB/SDcard consiglio comunque di eseguire il backup di qualsiasi dato sensibile e della SSD (HD) presente nel vostro netbook




Requisiti minimi

  • Sistema operativo preinstallato su EeePC: Windows XP o Linux
  • 1 pendrive USB da 64M min
  • 1 SD Card da 512M min
  • 1 connessione internet attiva

opzionale:

  • 1 memoria esterna USB da 1G min se abbiamo scelto l’installazione di FreeBSD su periferica esterna [2.]




Step 1 – Preparazioni

Scarichiamo il primo CD dell’ultima release di FreeBSD per i386 dal seguente link:

http://www.freebsd.org/it/where.html

(nel momento in cui scrivo è 7.1-RELEASE-i386-disc1.iso, supporremo di seguito che sia questa la release che userete)

Scarichiamo e installiamo UNetbootin da: http://unetbootin.sourceforge.net/

Scolleghiamo per sicurezza qualsiasi periferica esterna USB dal nostro netbook (controlliamo anche lo slot per la memoria SD)

–Windows

apriamo Risorse del computer

inseriamo la pendrive nella porta USB a sinistra del nostro EeePC e supponiamo che Windows la identifichi come D: (assicuriamoci di questo passaggio poiché andremo a eliminare tutti i dati presenti nel drive specificato D:)

clicchiamo con il tasto destro su D: (la pendrive identificata da Windows) quindi su “Formatta…”

selezioniamo File system FAT32, Dimensioni unita’ di allocazione predefinita e Formattazione veloce, clicchiamo quindi sul bottone “Formatta” e attendiamo che il processo venga completato

–Linux

inseriamo la pendrive nella porta USB a sinistra del nostro EeePC e diamo da terminale il comando:

# dmesg

da qui osserveremo come il device viene identificato da Linux, supponiamo che sia identificato come sda1 (assicuriamoci di questo passaggio poiché andremo a eliminare tutti i dati presenti nel drive specificato)

formattiamo quindi con:

# mkfs -t vfat /dev/sda1

–//

apriamo adesso UNetbootin

selezioniamo la voce Distribuzione, quindi subito a destra nel primo menu a tendina selezioniamo “FreeBSD” e nel secondo “7.0”. In fondo alla finestra specifichiamo Tipo “USB”, su Drive mettiamo l’identificativo che avevamo usato precedentemente (su Risorse del computer nell’esempio usato era D:, per Linux era /dev/sda1) e clicchiamo su OK

attendiamo la copia dei file, al termine ci verrà chiesto se riavviare o no (Riavvia/Esci), scegliamo di NON riavviare (Esci)

–Windows

apriamo Risorse del Computer e inseriamo la SD Card nello slot apposito del nostro EeePC e supponiamo che Windows la identifichi come E: (assicuriamoci di questo passaggio poiché andremo a eliminare tutti i dati presenti nel drive specificato E:)

clicchiamo con il tasto destro su E: quindi su¬†“Formatta…”

selezioniamo File system FAT32, Dimensioni unità di allocazione predefinita e Formattazione veloce, clicchiamo quindi su Formatta e attendiamo che il processo venga completato

apriamo la ISO di FreeBSD scaricata precedentemente (possiamo usare un programma come 7zip o WinRAR per aprirla) ed estraiamo tutta la cartella 7.1-RELEASE in E:

ancora da¬†Risorse del computer,¬†entriamo su E: e¬†rinomiano la cartella 7.1-RELEASE appena copiata in¬†freebsd (assicuriamoci che il contenuto della cartella freebsd sia “base”, “catpages”, “dict”, etc…)

–Linux

ci serviremo di due cartelle su /mnt per il montaggio

/mnt/usb per montare la penna usb

/mnt/iso per montare la iso

diamo quindi:

# mkdir -p /mnt/usb
# mkdir /mnt/iso

inseriamo adesso la SD Card per i file di installazione nello slot apposito del nostro EeePC e supponiamo che Linux la identifichi come /dev/sda2 da dmesg

formattiamola:

# mkfs -t vfat /dev/sda2

montiamola su /mnt/usb:

# mount -t vfat /dev/sda2 /mnt/usb

creiamo all’interno la cartella freebsd

# mkdir /mnt/usb/freebsd

spostiamoci adesso dove abbiamo precedentemente scaricato la ISO di FreeBSD

# cd <path-to-iso>

montiamo la ISO

# mount -t iso9660 -o loop 7.1-RELEASE-i386-disc1.iso /mnt/iso

copiamo infine il contenuto dalla cartella 7.1-RELEASE nella cartella freebsd creata precedentemente sulla pendrive

# cp -vfr /mnt/iso/7.1-RELEASE/* /mnt/usb/freebsd

–//

lasciamo la pendrive USB e la SD Card inserite e riavviamo

NOTA

non abbiamo bisogno di impostare dal BIOS OS Installation su Start, consiglio anzi di verificare che sia impostato su Finished, per accelerare i tempi di installazione




Step 2 – Installazione

alla schermata del BIOS premiamo subito ESC, ci verrà presentata una schermata simile a questa

scegliamo di avviare dalla pendrive USB a sinistra

attendiamo quindi che venga avviato l’installer di FreeBSD (se siete impazienti potete premere INVIO quando vedete ¬†i timer)

alla prima schermata di installazione ci verrà chiesta la lingua, scegliamo Italiano (la 108)

adesso scegliamo il layout della tastiera, selezioniamo “Italian ISO Keymap” (dovrebbe essere l’opzione di default)

ed eccoci finalmente alle impostazioni di installazione


selezioniamo¬†“Custom”, ci verr√† presentata adesso una schermata con le opzioni di installazione

ecco le impostazioni da applicare a ciascuna delle seguenti voci:

2 Options


scendiamo con i tasti direzionali fino alla voce Release Name e premiamo SPAZIO, cambiamo quindi la stringa da “7.0-RELEASE” in “any”

[2.] se abbiamo scelto l’installazione su periferica esterna, inseriamo adesso la memoria USB su cui andremo a installare FreeBSD in uno degli slot¬†a destra del nostro EeePC, andiamo quindi in Re-scan devices e premiamo SPAZIO per farla riconoscere all’installer

usciamo con Q

3 Partition

su EeePC le opzioni possibili dovrebbero essere:

  • ad2 (√® la SSD)
  • da0 (la pendrive con l’installer)
  • da1 (la SD Card con i file di installazione)
  • da2 (solo per [2.] √®¬†la periferica esterna su cui andremo a installare FreeBSD)

selezioniamo da2 se vogliamo installare su USB¬†[2.],¬†ad2 se vogliamo installare nella SSD dell’EeePC [1.] e diamo OK

ATTENZIONE

verifichiamo che le dimensioni del disco su cui vogliamo scrivere corrispondano alle dimensioni riportate in alto a destra in questa schermata (in questo esempio 8063MB)

premiamo A per partizionare tutto il disco con FreeBSD, quindi Q per uscire

ci verrà adesso chiesto cosa scrivere sul MBR

scegliamo Standard per non installare boot manager (dato che abbiamo scelto di installare solo FreeBSD, non avremmo bisogno di opzioni di boot) e diamo OK

4 Label

digitiamo C per creare una nuova label, inseriamo quindi come dimensioni 128M e¬†selezioniamo “swap”


digitiamo nuovamente C per creare un’altra label, usiamo le dimensioni restanti premendo INVIO, selezioniamo stavolta FS e assegniamogli la root /


premiamo Q per uscire da disklabel

5 Distributions

se avete abbastanza spazio e volete una installazione completa potete qui scegliere direttamente¬†“All” e passare avanti, lo spazio occupato superer√† i 2G

dato che in generale nei netbook lo spazio scarseggia, ho selezionato qui di seguito solo le componenti necessarie, andiamo quindi all’ultima voce “Custom” e alla schermata successiva selezioniamo le seguenti voci:

  • base
  • kernels -> GENERIC
  • man
  • local
  • ports¬†(consigliato per l’installazione delle applicazioni da sorgenti, occuper√† 400M in pi√Ļ nell’installazione)
  • src -> base/sys (consigliato per l’installazione dei driver per EeePC, i sorgenti peseranno 200M in pi√Ļ nell’installazione)

diamo OK per uscire, quindi X per Exit e nuovamente OK

6 Media

selezioniamo¬†5 DOS, alla prossima schermata ci verr√† chiesto da quale partizione selezionare i file per l’installazione, selezioniamo la SD Card con i file di installazione, che dovrebbe essere¬†da1s1

7 Commit

ATTENZIONE

da questo momento tutte le modifiche saranno apportate ai dischi selezionati

diamo YES per procedere con l’installazione

…….attendiamo l’installazione di FreeBSD…….

completata l’installazione andiamo rispettivamente su No,¬†Exit, Exit Install, ¬†comparir√† infine una schermata di conferma con Yes/No

[1.] (installazione su SSD/HD) scolleghiamo tutte le periferiche esterne

[2.] (installazione su periferica esterna) scolleghiamo tutte le periferiche esterne (non dimentichiamoci della SD Card) tranne la pendrive USB a destra su cui abbiamo installato FreeBSD

diamo Yes




Step 3 – Primo avvio

[2.] alla schermata del BIOS premiamo ESC per avviare dalla pendrive USB a destra

se al boot vediamo questa schermata, è un buon segno

[1.] se abbiamo installato FreeBSD nella SSD (o hard disk) non abbiamo bisogno di impostare altro, ci baster√† entrare con “root” (non verr√† richiesta alcuna password)

[2.] se abbiamo installato FreeBSD su una periferica esterna USB/SDcard, durante il boot dovrebbe presentarsi il seguente prompt

è un prompt un pò sinistro ma niente panico!

mountroot>
in pratica FreeBSD sa di essere stato installato sulla seconda periferica esterna (da1s0a) ma in realtà noi adesso lo stiamo avviando dalla prima, ci basterà quindi farglielo presente:
mountroot> ufs:da0s1a
attendiamo che init completi lo stage finale di boot, alla schermata di login entriamo con “root” (non sara’ necessario immettere alcuna password) e diamo il comando:
# vi /etc/fstab

da qui andiamo a modificare le entry con:

/dev/da0s1b

e

/dev/da0s1a

da vi possiamo fare tutto in colpo solo con il seguente comando

:%s/da2s/da0s/g

diamo quindi Shift+ZZ per salvare e uscire

infine

# reboot

dal prossimo avvio non dovremmo pi√Ļ avere prompt sinistri e si presenter√† direttamente la schermata di login.

NOTE FINALI  [2.]

  • con queste impostazioni FreeBSD dovr√† essere avviato sempre dalla prima periferica esterna (da0), consiglio quindi di inserire la pendrive sempre dalla porta USB¬†a sinistra del nostro EeePC (in caso vogliare avviare dallo slot SD Card, consiglio invece di scollegare qualsiasi periferica esterna prima del boot e inserire il tutto al prompt di login)
  • se abbiamo installato su periferica esterna possiamo impostare alla configurazione del BIOS la priorit√† di boot alla periferiche USB sotto la voce Hard Disk Drives (ricordo¬†F2 per accedere al BIOS setup, F10 per salvare le impostazioni)




Conclusione

L’installazione √® finalmente completata, il sistema dovrebbe occupare sui 684M con ports o sui 280M se abbiamo scelto di non installarli, il prossimo passo sar√† l’installazione dei driver per EeePC, vi baster√† seguire questa semplice guida:

AsusEee – FreeBSD Wiki

oppure

http://nighthack.org/wiki/EeeBSD

per i nuovi utenti di FreeBSD consiglio ovviamente di leggere l’handbook ufficiale disponibile in italiano al seguente link

http://www.freebsd.org/doc/it_IT.ISO8859-15/books/handbook/index.html

Buon divertimento! ¬†ūüėČ


–Stay Free, stay BSD


AGGIORNAMENTI

–12/03/2009

la guida è stata testata con successo sui seguenti notebook:

  • ASUS EeePC 701
  • Toshiba NB100-11R

poster√≤ qui i test effettuati su altre macchine, tenete d’occhio il tag in testa all’articolo per eventuali aggiornamenti.

— 13/03/2009

Pubblicato un video di dimostrazione per ASUS EeePC 701:







Eventi BSD: meetBSD 2008

25 11 2008

Si √® concluso la settimana scorsa l’evento meetBSD 2008 tenutosi¬†in onore del quindicesimo anniversario di FreeBSD a Mountain View in California, esattamente al Googleplex, sede di Google, che √® stato lo sponsor principale di questo evento.

lo stupendo parco all'interno del Googleplex

MeetBSD è un evento che si tiene ogni anno in onore dei sistemi BSD, nato in Polonia nel 2004 e rivolto principalmente a programmatori UNIX, alla conferenza sono solitamente discusse vecchie e nuove tecnologie sui sistemi operativi in ambito UNIX e BSD.

Quest’anno meetBSD √® uscito per la prima volta fuori dalla Polonia, la partecipazione alla conferenza √® stata totalmente gratuita (era richiesta solo la registrazione al sito), inoltre per pruomovere l’evento √® stato offerto uno sconto speciale presso alcuni hotel locali.

 

Come sempre sono stati protagonisti della manifestazione molti guru BSD:

Alcuni guru *BSD

Alcuni guru *BSD (da sinistra mi sembra di riconoscere Robert Watson, Philip Paeps, Brooks Davis, ...(boh?) e Matthew Dillon)

non potevano mancare come di tradizione le stupende “devilette”:

ecco le devilette (no, il tipo a destra è un infiltrato)

 

Alla manifestazione sono state presentate una serie di conferenze, suddivise in pi√Ļ giornate, accompagnate¬†il sabato notte¬†da un mega party finale, durante il quale se so pure magnati na bella torta per l’anniversario di FreeBSD.

il mega-party featuring "ammazza quante belle gnocche"

 

torta freebsd

un'autentica delizia...la torta FreeBSD

 

Tra gli argomenti trattati in questa edizione:

  • Certificazione BSD
  • PC-BSD
  • Il file system ZFS
  • Ottimizzazioni e performance in FreeBSD
  • Soluzioni embedded¬†(picobsd, tinybsd, nanobsd, …)
  • Clustering

unica nota: si è parlato di GEOM e ZFS ma non si è fatto assolutamente cenno al nuovo file system HAMMER di DragonFly BSD. Anche se HAMMER era già stato presentato questo ottobre al NYCBSDCon 2008, sarebbe stato interessante un confronto fra le tecnologie di ZFS e HAMMER.

 

Come segnalato da Dru Lavigne, le slide possono essere scaricate da qui:

http://meetbsd.com/images/slides/

 

Altre immagini e video ai seguenti link:

http://flickr.com/photos/bitgeist/tags/meetbsd/

http://www.flickr.com/photos/srf21c/tags/meetbsd/

http://flickr.com/photos/matthewdillon/sets/72157609384723817/

http://www.evilmofo.com/images/meetbsd/





Un sistema operativo chiamato Inferno

21 10 2008

Rieccomi finalmente tornato al mondo dei blogger con un nuovo articolo strettamente informatico.

Mi scuso in anteprima per eventuali errori e mancanze in questo post, ma mi ritrovo attualmente a scrivere dal mio Nintendo DS dato che l’alimentatore del mio amatissimo MacBook ha deciso di abbandonarmi con uno spettacolo di luci e suoni davvero indimenticabile (in altre parole si e’ bruciato), ho avuto cosi’ la necessita’ di riuscire a trovare un dispositivo che sostituisse almeno in parte cio’ che mi permetteva di fare il mio portatile, ecco quindi che entra in scena il Nintendo DS: 67 MHz di CPU x 4+32MB di RAM, Flashcart M3DS Real e SDHC da 8GB.

Ebbene spero non mi si bruci anche l’alimentatore del DS dato che lo uso 24 ore su 24 per fare praticamente di tutto: dalle operazioni piu’ semplici come navigare su internet, leggere email e ebook, guardare video e ascoltare musica, a cose piu’ complesse come programmazione e networking, il tutto ovviamente grazie ad applicazioni come Opera, DSLinux e Sakura (il nuovo sistema operativo di M3DS Real orientato al multimedia), ma considerate che con 67 MHz di CPU ci vuole davvero tanta tanta pazienza, l’altro giorno sono stato quasi un’ora per scompattare un file ZIP di 166 MB!

La scarsa stabilita’ di DSLinux mi ha spinto alla ricerca di nuovi port di sistemi operativi per Nintendo DS ed e’ proprio cercando nella mailing list di NetBSD che scopro InfernoDS, recentissimo port di Inferno per la console di casa Nintendo.



Inferno DS



InfernoDS si presenta davvero bene, parte immediatamente con l’interfaccia grafica, le finestre e il resto sono comandabili dal touch screen, mentre lo schermo superiore rimane finora inutilizzato.

Presenta naturalmente una shell con comandi simil-Unix, ma il toolkit grafico Wm (che a moltiricordera’ immediatamente Fluxbox) presenta ancora evidenti problemi in questo port.

Per i possessori di Nintendo DS piu’ curiosi ecco il link della release che ho personalmente testato¬†icds.nds, mentre se volete visionare altre release piu’ recenti (viene aggiornato abbastanza spesso) andate qui.



Ma diamo un’occhiata piu’ da vicino alle origini di questo sistema operativo, per chi ancora non lo conoscesse.



Tutto ebbe inizio in America verso la meta’ degli anni 80ad opera di un centro di ricerca chiamato CSRC (Computing Sciences Research Center) internoalla Bell Labs, che faceva ancora parte della AT&T.

Al CSRC furono partoriti i sistemi e i linguaggi che hanno influenzato il mondo dell’informatica fino ai giorni nostri, Unix e i linguaggi C e C++, per non parlare di strumenti fondamentali per la programmazione e la compilazione come make, lex e yacc.

Il CSRC ha vantato la presenza di diversi guru dell’informatica, tra cui Ken Thompson, Dennis Ritchie e Brian Kernighan. Dennis Ritchie in particolare ha diretto per diversi anni un gruppo di ricerca nello sviluppo di un sistema operativo chiamato Plan 9, progettato come successore di Unix e che ha visto la sua prima release pubblica nel 1992.

logo Plan 9

I sistemi a kernel monolitico sono ormai considerati obsoleti (vedi Tanenbaum vs Torvalds), Plan 9 non eredita infatti codice da Unix ma viene riscritto “from scratch” e progettato come sistema distribuito a kernel ibrido, diventando subito il sistema operativo primario su cui vengono concentrate le ricerche del CSRC, prendendo quindi a tutti gli effetti il posto di Unix.

Spiego il termine “distribuito” per chi non fosse ancora molto addentrato in questo campo: fermatevi un attimo a guardare la macchina da cui state leggendo questo blog: vedete un monitor, una tastiera, un mouse…tutto controllato da un sistema operativo. Immaginate adesso tante di queste macchine, tutte collegate in rete, ma ancora con un unico sistema operativo che le controlli ed ecco la configurazione base di Plan 9: diversi terminali per l’interazione con il sistema operativo (i vostri mouse, tastiere, monitor), dei fileserver per l’immagazzinamento dei dati in dispositivi di memoria non volatile (il vostro hard disk), cpuserver dedicati alle computazioni (il vostro processore) e altri server di uso generale.

plan9 configurazione base

Dopo la quarta e ultima release di Plan 9, denominata Brazil e progettata per macchine piu’ moderne e reti molto piu’ veloci, Dennis Ritchie decide di passare a un nuovo capitolo, siamo nel 1995, e’ cosi’ che nasce Inferno.



Inferno banner

Logo Inferno 4



Inferno prende il suo nome dalla Divina Commedia di Dante Alighieri, cosi’ come Vita Nuova Holdings che nel 1997 collabora strettamente con Bell Labs, ormai passata a Lucent, e che nel 2000 ne ottiene i copyright.

Vita Nuova si occupa quindi della produzione e distribuzione di Inferno e Plan 9, che vengono rilasciati sotto licenza Open Source.



Inferno, che eredita gran parte dei principi del design di Plan 9, e’ un sistema distribuito con kernel a macchina virtuale e puo’ girare nativamente in diverse piattaforme come x86, XScale, PowerPC, SPARC e ARM, risulta anche molto compatto e puo’ girare persino in dispositivi con soli 1 MB di RAM.

Inoltre Inferno puo’ essere eseguito anche come host in altri sistemi operativi tra cui Windows, Mac OS X, FreeBSD, Linux, Irix, Solaris, AIX, HP/UX, UnixWare e Plan 9.



Un anteprima di Inferno hosted sotto un plugin per Internet Explorer

Un'anteprima di Inferno eseguito come plugin su Internet Explorer



Ma vediamo le peculiarita’ di questo sistema operativo.

La progettazione di Inferno, come per il suo antecedente Plan 9, si basa su tre principi fondamentali:

  • Un unico protocollo standard per la comunicazione, chiamato Styx (identico a 9P2000, successore di 9P in Plan 9), viene usato per l’accesso a qualsiasi risorsa, sia essa in locale o in remoto.
  • Tutte le risorse vengono rappresentate come dei file, ordinati gerarchicamente in un filesystem, a cui le applicazioni possono accedere con delle semplici istruzioni di read e write. Programmatori di ambienti Unix-like vedranno familiare questo aspetto, dato che e’ una caratteristica comune a Unix seppure qui ancora piu’ estesa. Consideriamo ad esempio l’ambiente grafico di un sistema operativo comune (anche Unix-like), un’applicazione deve usare particolari interfacce per fare riferimento alla proprieta’ di una delle sue finestre, in Inferno invece anche le finestre di un’applicazione vengono rappresentate come un file system privato, accessibile quindi solo dall’applicazione che “possiede” la finestra, possiamo quindi accedere anche in questo caso alle proprieta’ di una finestra con delle semplici istruzioni di read e write.
  • Anche la rete viene rappresentata come un singolo coerente namespace, apparendo alle applicazioni come un file system gerarchico che puo’ rappresentare risorse sia locali che remote, in pratica qualsiasi risorsa di rete remota viene vista come un file in locale.

Se in Inferno il core e’ scritto come di tradizione in linguaggio C, per il resto del sistema (librerie, moduli e driver) e’ stato usato Limbo, un linguaggio type-safe progettato appositamente per la scrittura di applicazioni in Inferno.

Diretto successore di Alef in Plan 9,Limbo e’ un linguaggio di programmazione che viene compilato in byte-code: un particolare tipo di p-code, codice oggetto a 3 indirizzi simile al linguaggio macchina ma che risulta indipendente dalla sua architettura. Quando il codice byte-code deve essere caricato in memoria per l’esecuzione, questo viene interpretato da una macchina virtuale a 3 indirizzi chiamata Dis.

Byte-code puo’ essere opzionalmente compilato in codice macchina prima dell’esecuzione o durante (on-demand) tramite un compilatore JIT in modo da renderne l’esecuzione molto piu’ veloce.

Sia l’interprete che il compilatore JIT sono caricati nel kernel.

Caricamento di unapplicazione

Esecuzione del codice di un'applicazione in Inferno





E a proposito di byte-code, questa parola avra’ fatto suonare il campanello Java nella testa di qualcuno, andiamo ad osservare le differenze fra i concetti di Inferno e le tecnologie Java un po’ piu’ da vicino.

Anche Java viene compilato in byte-code ed eseguito per mezzo di una macchina virtuale, denominata JVM (Java Virtual Machine), che -come Dis – utilizza la compilazione JIT per ottimizzare l’esecuzione di byte-code, esistono inoltre particolari processori detti “Java processor” che comprendono Java byte-code direttamente nel loro Instruction Set, trasformando quindi di fatto JVM da macchina virtuale a macchina concreta. Un esempio molto diffuso di questo tipo di processore e’ ARM926EJ-S, che guarda caso e’ la CPU usata proprio da Nintendo DS (vedi ARM9E).

Inoltre nel 1996 Sun crea JavaStation, un particolare tipo di “Network Computer”, un thin-client che potete considerare come un comune PC low-cost ottimizzato per la navigazione web. Niente dischi quindi per JavaStation (i file venivano memorizzati in server remoti), un semplice sistema operativo chiamato JavaOS, un browser chiamatoHotJavae altre eventuali applicazioni Java a scelta dell’utente.

Con architettura a microkernel e scritto principalmente in Java, JavaOS usa la Java Virtual Machine come sua componente principale. JVM si occupa infatti di gestire persino i driver, scritti anch’essi in limguaggio Java, in modo simile a quanto visto precedentemente con Dis e Inferno.

JavaStation viene infine abbandonata nel 2000 e con essa muore anche JavaOS, ma esistono comunque altri sistemi simili, tra cui il degno di nota JX, sistema open source a microkernel, scritto anch’esso in Java e sviluppato in Germania ad opera dell’Universita’ di Erlangen.



In conclusione, Java risulta ormai uno standard indiscusso per sistemi embedded, dato che offre la comodita’ di codice portabile su qualsiasi piattaforma e senza il bisogno di ricorrere a cross-compiler (alcuni dispositivi possono essere talmente scarsi come capacita’ di memoria e computazione da rendere praticamente impossibile la compilazione in locale),concetto su cui si basa la progettazione di Inferno e Limbo.

Inferno e’ indubbiamente un sistema operativo particolarmente interessante per i concetti avanzati su cui si fonda, ma per la sua minimalita’ e compattezza non e’ orientato all’usabilita’ come sistema desktop, inoltre rimane ancora poco utilizzabile dalla massa a causa dello scarso parco software che presenta il linguaggio Limbo.

Una grave pecca a mio avviso rimane la mancanza di un compilatore C, C++ per byte-code eseguibile da Dis, il che permetterebbe un porting piu’ facile dei software piu’ diffusi dalla comunita’ open source anche su Inferno.

Esiste comunque il set di compilatori xc (0c, 1c, 2c, 5c, 6c, 7c, 8c, kc, qc e vc) per linguaggio C, ma che producono codice dipendente dall’architettura, rompendo quindi la filosofia del codice portabile su tutti i sistemi Inferno anche se installati in diverse architetture.

Allo stato attuale, l’unico strumento per la “portabilita’(?)” di codice C su Inferno rimane c2l, che si occupa di tradurre fin dove possibile un sorgente da linguaggio C in Limbo, sara’ poi il compilatore limbo a mostrare eventuali problemi nel sorgente tradotto, eventualita’ che diventa una certezza nella presenza di stringhe e di altri costrutti che non sono facilmente traducibili in Limbo.

Cito direttamente dalla man page di c2l :

“C2l translates the named Cfileinto Limbo. The translated code should be almost always syntactically correct but will certainly never be semantically correct as certain constructs in C (strings for example) are almost impossible to convert automatically into Limbo. Otherwise it tries to do a good job of translating the C constructs that have some sort of equivalence in Limbo.”





Collegamenti utili:

http://www.vitanuova.com/inferno/

http://cm.bell-labs.com/cm/cs/who/bwk/interps/pap.html

http://doc.cat-v.org/inferno/4th_edition/

http://ftp.bme.hu/OS/inferno/faq.html

http://www.adityabansod.net/things/papers/infernointro.htm

http://code.google.com/p/inferno-os

http://www.vitanuova.com/inferno/design.html

http://kny.iki.fi/inferno/

http://tldp.org/HOWTO/JavaStation-HOWTO/whatischapter.html







Numbers Stations: spionaggio via etere

4 08 2008

In questo articolo voglio parlarvi delle Numbers Stations, una vera chicca per DXer, radioamatori e informatici, ma prima un p√≤ di storia…

 

Chi di voi mi conosce saprà della mia passione per le radio.

Questa risale a quando, da bambino, andavo a villeggiare durante il periodo estivo in campagna dai miei nonni a Punta Raisi, dove, lontano dal mio caro vecchio Commodore 64, portavo con me alcuni numeri di Topolino.

Probabilmente qualche vecchio lettore di Topolino ricorder√† ai tempi una serie di numeri con un Walkie Talkie azzurro in allegato da montare in pi√Ļ parti, beh…io avevo appena acquistato il primo numero, quello con il “core” (la parte meccanica). Alla mia vista si presentavano soltanto una scheda verde con delle saldature, due cavetti con un attacco per batteria a 9V, un altoparlante, un interruttore e due pulsantini (il Morse-key e il PTT per la comunicazione in half-duplex).

Iniziai cos√¨ a smanettare con questo meraviglioso giocattolo, scoprendone a poco a poco il funzionamento e riuscii a stabilire una comunicazione con un apparecchio radio pi√Ļ grande che avevo da mio nonno, una radio ShortWave.

 

Mi dedicai quindi per caso all’ascolto di questa banda davvero curiosa, di giorno sentivo solo il Walkie Talkie ma di notte come per incanto riuscivo ad ascoltare le trasmissioni pi√Ļ strane, in particolare dei beep beep che scoprii poco dopo essere codice Morse e delle voci che recitavano numeri in inglese o sempre le stesse parole come “whiskey”, “charlie” e “hotel” terminate tutte da un “end of message”.

 

Potete dare un ascolto a una di queste registrazioni al seguente link:

http://dharma.homeunix.org/shared/E10%2003041999.mp3

 

Ma cosa c’entra con l’informatica direte voi? Ci sto arrivando…

A diversi anni di distanza, quando finalmente internet sbarc√≤ anche a casa mia, scoprii di non essere l’unico radioascoltatore incuriosito da queste trasmissioni, scoprii che queste trasmissioni vengono identificate con il nome di¬†Numbers Stations e che si tratta di trasmissioni cifrate per mezzo di un algoritmo il cui nome √®¬†One-Time Pad¬†(in breve OTP)¬†detto anche “cipher di Vernam”.

 

Ebbene queste trasmissioni sono avvolte da un alone di fascino e di mistero, spuntano la notte come dal nulla in frequenze e orari quasi sempre inaspettati, vengono talvolta introdotte e intervallate da suoni di carillon o chimes e la loro durata è molto breve, in media dai 2 ai 3 minuti, per poi sparire di nuovo nel nulla.

Esistono svariati tipi di Numbers Stations: il messaggio pu√≤ essere recitato¬†in diverse lingue¬†da una voce umana o sintetizzata, possono essere trasmessi numeri o lettere dell’alfabeto fonetico, talvolta viene fatto uso di codice Morse (come per i Letter Beacon di cui parler√≤ meglio in futuro) o addirittura vengono trasmessi solo dei suoni come per le Workshop, in cui si sentono suoni come provenienti da un’officina, le¬†Polytones, in cui vengono trasmesse delle musiche in multitono come quelle suonate alla tastiera di un telefono a toni DTMF, o le Backwards Music Stations, in cui vengono trasmessi dei brani musicali al contrario.

 

E’ comune credenza che si tratti di trasmissioni di spionaggio risalenti al periodo della guerra fredda ad opera di enti segreti governativi, come la CIA o il MOSSAD, ma esistono attualmente poche prove al riguardo.

 

Ecco un filmato molto istruttivo che ho sottotitolato appositamente qualche tempo fa:

 

Come avete potuto notare i radioamatori hanno non poche difficolt√† nel riuscire a tracciare la provenienza di questi segnali, l’anonimit√† di queste stazioni √® infatti garantita dal range di frequenza usato per queste trasmissioni: la HF (High Frequency).

Le onde radio in HF, denominate ShortWave (3-30 MHz) possiedono la proprietà di riuscire a propagarsi in tutto il globo terrestre senza il supporto di ripetitori o amplificatori, risultando difficilmente tracciabili a meno che non ci si trovi nelle vicinanze della stazione che sta trasmettendo.

E’ infatti la ionosfera che si occupa di riflettere le onde elettromagnetiche, soprattutto durante la notte o in presenza di E-sporadico. La ionosfera √® a sua volta condizionata dalle attivit√† solari, il fenomeno √® conosciuto come “propagazione Skywave”, √® difficile quindi stabilire se la trasmissione ascoltata arrivi da un continente¬†vicino o dall’altra parte del pianeta.

 

 

Un gruppo di studio e monitoraggio per queste trasmissioni di cui faccio parte anche io √®¬†ENIGMA2000, progetto nato dall’ormai defunto¬†ENIGMA, in cui i vari membri, prima dell’avvento di internet, comunicavano i loro studi per via postale.

ENIGMA2000¬†cataloga ogni Numbers Station a seconda della lingua usata, del gruppo di figure presenti nel codice cifrato¬†e di altri fattori, grazie a questa catalogazione si pu√≤ risalire alla presunta provenienza del messaggio. Un classico esempio fatto anche nel video precedente √®¬†Lincolnshire Poacher, catalogata come E3 (vedi pagina relativa nel database spynumbers), la cui stazione √® stata scoperta trasmettere dall’isola di Cipro dalle parti del villaggio¬†Akrotiri. Le segnalazioni sono arrivate da un gruppo di radioamatori della zona che, grazie all’uso di radiogoniometri (RDF), sono riusciti a individuare la provenienza del segnale e a localizzare cos√¨ la stazione responsabile, appartenente alla RAF (Royal Air Force, aeuronautica militare britannica), stazione che dal mese scorso pare abbia cessato di operare dopo 20 anni di attivit√†.

 

Ma torniamo al lato informatico della questione: il One-time pad, un sistema di crittografia che si √® guadagnato il titolo di “crittografia perfetta” grazie alle dimostrazioni di Teoria dell’Informazione a cura del matematico e ingegnere Claude Shannon.

Questo tipo di cifratura √® infatti famoso proprio per le comunicazioni di spionaggio e pu√≤ essere decodificato solamente tramite una chiave che viene comunicata al ricevente per mezzo di un minuscolo“blocco” (pad) in cui ogni pagina contiene una chiave che pu√≤ essere usata soltanto una volta per la decodifica del messaggio (da cui One-Time pad), dopo il suo utilizzo la pagina contenente la chiave deve essere distrutta.

Un esempio di messaggio codificato è il seguente:

 

Un programma open source¬†per la creazione di Numbers Stations (tramite sample dell’alfabeto fonetico NATO presi da E10) √® stato pubblicato da un membro di ENIGMA2000,¬†flcardone,¬†italiano anche lui¬†(colgo l’occasione per salutare Flavio).

Il programma si chiama Papazulu ed è scaricabile al seguente indirizzo:

http://sourceforge.net/projects/papazulu/

 

E’ fondamentale nel One-Time Pad che la chiave venga utilizzata una volta soltanto. E’ infatti ormai storia come il Venona Project, progetto di collaborazione britannico-statunitense per la crittoanalisi dei messaggi sovietici, sia riuscito a decodificare i messaggi del KGB proprio a causa di una stessa chiave ripetuta nella codifica di pi√Ļ trasmissioni.

 

Una storia simile ebbe Bletchley Park (detta anche Stazione X) durante la seconda guerra mondiale in cui si riunirono matematici, astrologi, crittoanalisti e giocatori di scacchi internazionali.

Nel gruppo di crittoanalisti venne assoldato anche Alan Turing, padre della moderna informatica, al fine di decifrare messaggi tedeschi trasmessi in codice morse.

Il giovane Alan Turing migliorò una macchina già esistente (denominata Bombe) che faceva uso di tecniche di brute-force per la decifrazione dei messaggi tedeschi.

 

I tedeschi a loro volta per cifrare i messaggi usavano una macchina denominata Enigma (da cui il nome del gruppo di studio di cui parlavo prima).

Come potete vedere Enigma presenta una tastiera “qwertz” come quella di una macchina da scrivere tedesca, sopra invece possiamo vedere una serie di lampade con delle lettere e ancora sopra infine 3 rotori da regolare per cambiare la chiave da usare nella codifica del messaggio.

L’uso di questa macchina era piuttosto semplice: bastava – prima di ogni messaggio –¬†impostare i¬†rotori¬†per settare la chiave, a quel punto quindi a ogni pressione di una lettera sulla tastiera, la lampadina relativa alla lettera codificata si sarebbe illuminata.

Agli operatori di codifica del messaggio Enigma veniva fornito ogni mese un “codebook”, una sorta di registro con su scritto il codice che doveva essere utilizzato ogni giorno.¬†Al contrario del One-Time Pad quindi, la chiave veniva fornita su cartaceo solo al trasmittente. Per gli operatori che ricevevano il messaggio invece, la chiave veniva trasmessa in codice morse¬†2 volte consecutive¬†prima di ogni messaggio, ovviamente¬†non in chiaro¬†ma codificata con la chiave precedente, bastava quindi scoprire una sola chiave per potere exploitare tutte le trasmissioni.

L’algoritmo usato era interno alla macchina e risultava anch’esso abbastanza semplice dato che si basava sulla permutazione delle lettere a seconda della posizione dei rotori.

La versione commerciale (ebbene s√¨ Enigma fu messa in commercio) era abbastanza semplice e non troppo difficile da violare, nella versione militare invece vennero effettuate alcune modifiche tra cui l’aggiunzione di altri rotori e infine una Plugboard, ovvero¬†una mappa della tastiera con degli spinotti che eseguiva lo scambio di lettere a scelta,¬†in modo da rendere la decodifica molto pi√Ļ complessa.

Il messaggio cifrato veniva infine inviato in codice Morse e decifrato dal ricevente usando un’altra macchina Enigma con i rotori posizionati secondo la chiave trasmessa prima del messaggio.

 

Gli inglesi di contro usavano delle stazioni di ascolto (dette Stazioni Y) per ricevere la stringa cifrata in codice morse, questa veniva quindi comunicata alla Stazione X (Bletchley Park) che si occupava della crittoanalisi del messaggio.

 

Un film che è stato girato al riguardo e che consiglio a tutti di vedere è: Enigma РIl codice che cambiò la storia del 2001, in cui il protagonista Alan Turing è impersonato dal matematico Tom Jericho.

PS: la mia parte preferita del trailer √® a 1:28 “she was the mystery he couldn’t solve” (le donne sono sempre un mistero :P)

 

Per chi volesse approfondire l’argomento segnalo i seguenti link:

http://www.spynumbers.com — database, log e altre risorse sulle Numbers Stations

http://mailman.qth.net/mailman/listinfo/spooks¬†— Spooks, mailing list su NS e crittografia in generale

http://www.youtube.com/user/capnsonic¬†— canale youtube dove posto i miei video sulle NS

http://www.simonmason.karoo.net/page30.html¬†— sito di¬†Simon Mason, autore del libro¬†“Secret Signals”

in questa pagina¬†potrete trovare un sacco di risorse utili, brani musicali in cui vengono usati sample di Numbers Stations (fra i quali alcune tracce dei Boards of Canada) e video relativi alle NS¬†(ringrazio con l’occasione Simon per avere postato il mio video di Persephone).

Segnalo infine The Conet Project, eccezionale raccolta di Numbers Stations in un set di 4 CD liberamente scaricabile da internet, che potete ascoltare e scaricare al seguente indirizzo:

http://www.archive.org/details/ird059

 

End Of Message.

End Of Transmission.