Embeddable Linux Kernel Subset
C Assembly Roff Makefile Shell Yacc Other
Switch branches/tags
Clone or download
mfld-fr Merge pull request #220 from mfld-fr/gnu
[kernel] Move to full GNU toolchain:
- Rewrite some assembly sources to ATT syntax
- Tune GCC options: small model, no relocations...
- Add LD scripts to output ELKS a.out
- Rework build scripts for full GNU
- Add RAW option for target image
- Warnings and glitches fixes
- Wipe out some BCC related stuff
Latest commit 1b6110b Jun 22, 2018


               ELKS, the Embeddable Linux Kernel Subset

This is a project to write a Linux-like operating system for systems based on
the Intel IA16 architecture (16 bits processors: i8088, i8086, i80188, i80186,
i80286, V20, V30 and compatibles).

Such systems are ancient computers (IBM-PC XT/AT and clones) or more recent
embedded ones that reuse their huge hardware & software legacy.

To build ELKS, you need a cross build chain, mainly based on DEV86 (still used
for the user land) and GCC-IA16 (now used for the kernel).

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


Note: all the scripts must be executed with 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 './build.sh clean'
and it will run 'make clean' in the build directories for you.

The general build procedure for ELKS is as follows:

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

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

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

* 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 './qemu.sh' (will configure QEMU for an ISA system).

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

More information in the Documentation folder: Documentation/index.html