Skip to content
Embeddable Linux Kernel Subset
C Assembly Makefile Shell Roff Yacc Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.


               ELKS, the Embeddable Linux Kernel Subset

What is this ?

This is a project to write a Linux-like OS for systems based on the Intel
IA16 architecture (16 bits processors: 8088, 8086, 80188, 80186, 80286,
Nec V20, V30 and compatibles).

Such systems are ancient computers (IBM-PC XT / AT and clones), or more
recent SBC / SoC / FPGA that reuse the huge hardware & software legacy
from that popular platform.

How to build ?

To build ELKS, you need a cross build tool chain, mainly based on the latest
GCC-IA16 (DEV86 including BCC was used for previous versions, but has been
dropped because it was obsolete and no more actively maintained).

Among the dependencies there are packages (for Debian and Ubuntu distros):
texinfo bison flex libgmp-dev libmpfr-dev libmpc-dev libncurses5-dev

A script is provided to automatically download and build that tool chain:


Note: all the scripts must be executed within the top folder 'elks/' as the
current one.

A script is provided to automate the whole build process (configuration,
kernel, user land and target image) and make it easier for ELKS newbies:


If you want to clean everything up afterwards, run './ clean'
and it will run 'make clean' in the build directories for you.

The general build procedure for ELKS is as follows:

* Set up your environment (PATH, TOPDIR and CROSSDIR):

  '. tools/' (note the '.' before the script)

* Build the cross chain in 'cross/' (see above)

* Configure the build chain, the kernel, the user land and the target image

  'make menuconfig'

* Build the kernel, the user land and the target image:

  'make all'

The target root folder is built in 'target/', and depending on your
configuration, that folder is packed as either a floppy disk image (fd1440,
fd1680, fd1200, fd720, fd360, without MBR), a hard-disk image (hd, with MBR),
or a file image (ROM, TAR), into the '/image' folder.

Before writting the image on the real device, you can test it first on QEMU
with './' (will configure QEMU as an ISA system).

More information

Questions? Problems? Patches? Open an issue in this project! You can also join
and email the 'Linux-8086' list at

More information in the Documentation folder: Documentation/index.html
You can’t perform that action at this time.