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:







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