The Embeddable Linux Kernel Subset
Creating A Linux Option for
- Palmtop Computers
- Very old PC's
- Single board microcomputers
- Embedded controller systems
- Other older computers
The current ELKS development image needs about 120K of RAM, and a full
running system should require 256K-512K for a full system.
ELKS is a project to build a small kernel subset Linux that can run on small
machines with limited processor and memory resources. The initial proposed
targets are the intel 8086 and maybe the zilog Z80. [Yes Z80 should be
possible - probably needing paged memory. Dave Braun's
*UZI is proof it can
The first question people ask (other than is this for real) is why? Several
The processors chosen reflect those the authors have access to. Doing a
680x0 embeddable kernel capable of running without an MMU would also be an
interesting project, although this would probably rule out swapping and make
the implementation of fork() hard. Minix does this by copying which is messy
but works. 683xx and MIPS R4xxx embedded processors are an obvious further
- An 8/16bit processor kernel is badly needed. There are really no other
options except Minix (research & educational use only). A kernel that can
run on this kind of hardware is useful for embedded systems projects and for
third world deployment where 80x86 x>0 machines are not easily available.
- A Linux kernel small enough to run on such systems ought to be
understandable by one person, and because it is a subset also useful
learning material to then look at the full kernel.
- Various palmtops use an 801C86 or variant embedded processor set. Linux
on the HP palmtops and potentially Psion 3 is a very interesting option.
- Hack Value. I for one would dearly love to end up with a backport to the
PDP-11 that was V7 binary compatible.
The project state so far:
- Key goals have been chosen.
- V7 and as much as possible POSIX compliance
- Minix file system, as this performs best with small buffer cache
- Ability to compile both with its own compiler and standard DOS
- Capable of running programs from ROM.
- 8086 combined I/D and split I/D (ie 64K or 64K code + 64K data) is
a hard to avoid but acceptable limit.
- Initial drivers will be BIOS drivers and real mode.
- Use a vt52 style console (for size)
- We now have the 'bcc' GPL'd K&R compiler for minix running on Linux.
- A system call library builder has been written. This writes 8086 system
call modules from a descriptor file, and in future will also write the
kernel side tables and potentially the function stubs.
- The C library is near enough complete as is emulation and build
environment for testing
- We have curses, ash and other tools built.
- The bootloader is working. It loads split I/D minix binaries+setup
off a floppy disk happily.
- We have task switching/interrupts and a bios console behaving. The disk
driver is now mostly done but has the floppy drive type hard coded.
- The consoles we have include both a bios console and a raw console
that also supports virtual consoles.
We need volunteers to
The mailing list is firstname.lastname@example.org and is majordomo managed.
The FTP archive site is *linux.mit.edu.
- Scan archives and build small free applications to match the GNU ones
used in the bigger Linux systems.
- Join in extracting modules from the main Linux kernel, and in rewriting
the 'oversized/overfeatured' bits.
Page maintained by: Alan Cox