ELKS: introduzione

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.

Strumenti di sviluppo

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]

Compilazione del kernel

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]

.------------------------------- Main Menu -------------------------------.
|  Arrow keys navigate the menu.  <Enter> selects submenus --->.          |
|  Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes, |
|  <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help.     |
|  Legend: [*] built-in  [ ] excluded  <M> module  < > module capable     |
| .---------------------------------------------------------------------. |
| |  --- Just accept the defaults unless you know what you are doing    | |
| |  Advanced - for Developers and Hackers only  --->                   | |
| |  Architecture  --->                                                 | |
| |  Hardware Facilities  --->                                          | |
| |  Driver Support  --->                                               | |
| |  Kernel hacking  --->                                               | |
| |  ---                                                                | |
| |  Load an Alternate Configuration File                               | |
| |  Save Configuration to an Alternate File                            | |
| |                                                                     | |
| |                                                                     | |
| `---------------------------------------------------------------------' |
|-------------------------------------------------------------------------|
|                    <Select>    < Exit >    < Help >                     |
`-------------------------------------------------------------------------'

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.

Immagini di dischetti già pronti

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.

Avvio di ELKS all'interno di DOSEMU

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.

Spegnimento

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.

Riferimenti


1) ELKS   GNU GPL

«a2» 2013.11.11 --- Copyright © Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net