ELKS, (1) ovvero Embeddable linux kernel subset, è un sistema operativo estremamente ridotto, in grado di funzionare con microprocessori i86 (16 bit), a partire dai primi (i8086 e i8088). Come dichiara il nome, si tratta di un sistema dove il kernel è derivato da Linux.
Le funzionalità disponibili sono minime e difficilmente il suo sviluppo può arrivare a un buon livello di affidabilità. Inoltre, sono sempre di meno i programmatori competenti e interessati a questo tipo di piattaforma; tuttavia, si tratta di un lavoro che potrebbe essere utile a livello didattico e sarebbe un vero peccato che venisse abbandonato del tutto.
Per compilare il kernel e i programmi di servizio che compongono il sistema operativo, è necessario un compilatore apposito, che però si usa su un sistema GNU/Linux standard. Il pacchetto del compilatore e degli strumenti di sviluppo associati è denominato Dev86 ed è distribuito normalmente in forma sorgente, assieme ai sorgenti di ELKS.
Una volta scaricato il pacchetto Dev86, questo può essere espanso in una directory qualunque nell'elaboratore GNU/Linux, come mostrato dall'esempio seguente, dove però, successivamente possa acquisire i privilegi dell'utente root:
$
cd
[Invio]
$
mkdir ELKS
[Invio]
$
cd ELKS
[Invio]
#
tar xzvf Dev86src-0.16.0.tar.gz
[Invio]
Si ottiene la directory dev86-0.16.0/
che si articola ulteriormente. Terminata l'installazione occorre compilare questi sorgenti e installarli. In questo caso si prevede di installare Dev86 a partire da /opt/dev86/
:
$
cd dev86-0.16.0
[Invio]
$
make PREFIX=/opt/dev86/
[Invio]
Viene richiesto di intervenire su alcuni indicatori (flag); in generale dovrebbe andare bene ciò che viene proposto in modo predefinito:
1) (ON) Library of bcc helper functions 2) (ON) Minimal syscalls for BIOS level 3) (ON) Unix error functions 4) (ON) Management for /etc/passwd /etc/group /etc/utmp 5) (OFF) Linux-i386 system call routines GCC 6) (ON) GNU termcap routines 7) (ON) Bcc 386 floating point 8) (ON) Linux-i386 system call routines 9) (ON) Example kernel include files and syscall.dat 10) (ON) Malloc routines 11) (ON) Various unix lib functions 12) (ON) Msdos system calls 13) (ON) Regular expression lib 14) (ON) Stdio package 15) (ON) String and memory manipulation 16) (ON) Linux-8086 system call routines 17) (ON) Termios functions 18) (ON) Unix time manipulation functions. |
Select config option to flip [or quit] >
quit
[Invio]
Al termine della compilazione si passa all'installazione, cominciando dalla creazione della directory /opt/dev86/
. Per fare questo occorrono i privilegi dell'utente root:
$
su
[Invio]
...
#
mkdir -p /opt/dev86
[Invio]
#
make install
[Invio]
La compilazione di un kernel ELKS procede in modo simile a quella di un kernel Linux. Anche in questo caso si segue lo stesso criterio usato per la compilazione degli strumenti di sviluppo, pertanto l'utente fa questo lavoro a partire dalla directory ~/ELKS/
:
$
cd
[Invio]
$
cd ELKS
[Invio]
#
tar xzvf elks-0.1.1.tar.gz
[Invio]
$
cd elks-0.1.1
[Invio]
A questo punto si può procedere con la configurazione di ciò che si vuole nel kernel ELKS da compilare. Si può procedere con i comandi make config o make menuconfig:
$
make menuconfig
[Invio]
|
Terminata la fase di configurazione, si passa alla compilazione:
$
make dep
[Invio]
$
make clean
[Invio]
$
make Image
[Invio]
Al termine della compilazione, se non ci sono problemi, si ottiene il file arch/i86/boot/Image
.
Inizialmente si può cominciare tentando di avviare ELKS a partire da file-immagine già pronti. Per trasferire i file-immagine nei dischetti ci si comporta nel modo solito, esattamente come si fa per le immagini di dischetti di GNU/Linux, con la differenza che ci possono anche essere dischetti che incorporano sia il kernel, sia il file system.
Inizialmente, per fare esperimenti, è meglio usare il metodo tradizionale del kernel in un dischetto che si avvia e il file system principale in un altro, in modo da poter cambiare facilmente sia il kernel, sia il contenuto del file system.
ELKS può essere avviato all'interno di DOSEMU. Ciò richiede un minimo di esperienza con DOSEMU, ma è utile quando si fanno delle modifiche al kernel, per fasi successive, perché l'avvio del sistema operativo è più rapido. A ogni modo, bisogna considerare che l'ambiente offerto da DOSEMU è diverso da quello reale; per esempio, se si sta modificando la mappa della tastiera, DOSEMU non va bene.
Per concludere il funzionamento di un sistema ELKS può darsi che manchi sia il programma halt, sia shutdown. In questa situazione, un modo possibile di agire è il seguente:
#
sync
[Invio]
#
umount /
[Invio]
Dopo questa operazione, il file system principale dovrebbe essere ancora accessibile in sola lettura.
ELKS: the embeddable Linux kernel system
Source Forge: ELKS
http://sourceforge.net/projects/elks/
Il sorgente più recente del kernel e degli altri componenti può essere prelevato con CVS:
$
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/elks co elks
[Invio]
$
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/elks co elksnet
[Invio]
$
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/elks co elkscmd
[Invio]
Daniele Cono D'Elia, ELKS Embeddable Linux Kernel Subset
«a2» 2013.11.11 --- Copyright © Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net