MicroKernel for mobile devices?

LK (Little Kernel) is a tiny operating system suited for small embedded devices, bootloaders, and other environments where OS primitives like threads, mutexes, and timers are needed, but there’s a desire to keep things small and lightweight. On embedded ARM platforms the core of LK is typically 15-20 KB.

LK is available from https://github.com/littlekernel/lk and is Open Source software, provided under the MIT license.

Who is using LK?

LK is the Android bootloader and is also used in Android Trusted Execution Environment – „Trusty TEE“ Operating System.

Newer Android phones have some chance of LK running all the time alongside Linux.

A few ARM SoC manufacturers use LK as their default bootloader such as DragonBoard 410c based on Qualcomm Snapdragon 410 processor.

The Fuchsia Operating System’s microkernel, Magenta is based on LK.

http://newos.org/

NewOS is a open source operating system with an emphasis on design and portability. It is largely implemented in C/C++, with a small amount of assembly. Full source is available.Currently, the system is mostly a kernel with a minimal amount of user space libraries and applications. Thus far, most of the work has been put into the kernel and other underlying support. As a result the system isn’t that interesting from an end-user point of view (no gui, simple commands on a command line), but that can change given a moderate amount of work by the maintainers or any volunteers.

The main developer is Travis Geiselbrecht (geist@newos.org). You can get in contact with him in a variety of ways. Also see the acknowledgements page for a list of other contributors.

Goals

  • Explore some areas of modern OS design
  • Provide a flexible framework to build other systems out of
  • Cross-platform portability
  • Provide a clean implementation that can be used as a learning tool for others
  • Provide an educational opportunity for developers
  • To have fun!

Implemented Features:

The following is a short list of implemented design features that you’d expect on a modern operating system:

  • Multithreaded
  • Multiprocessor
  • Strict architecture-independance layer to allow clean porting to multiple cpu architectures
  • Fully reentrant kernel
  • Protected memory
  • Separate user and kernel space, multiple address spaces
  • Full locking primitives
  • Kernel debugging support with installable debugger commands and remote gdb support
  • Modern VM design (demand paging, swapping, memory mapping), with support for full filesystem cache integration
  • Dynamically loadable kernel modules: drivers, filesystems, generic modules
  • Full virtual filesystem layer, device file system
  • Initial support for iso9660, nfs, ext2fs filesystems
  • Full user space shared lib support
  • Kernel based network stack (full TCP/IP)
  • Remote block device
  • Basic VESA mode support with generic framebuffer console
  • Text-based console
  • TTY
  • Shell with scripting support
  • POSIX signals
  • process groups, session groups
  • Network cards: Realtek 8139, AMD PCNet32

In-Progress Features:

  • Native FS
  • Full IDE/ATAPI stack
  • Full libc implementation
  • Graphics driver architecture
  • GUI
  • USB

Planned Features

  • Self hosting (requires more POSIX)
  • Anything anyone has the time for!

  Ports

Current Ports

The system currently can be built to run on the follwing systems:

  • Intel IA-32 (x86) – Tested on desktops through 4-way servers
  • Sega Dreamcast – Hitachi SH-4
  • PPC based machines – G3/G4 Macs, Pegasos

Planned Ports

Many ports of the system are waiting to happen when we get the time (hardware is purchased, documents have been found, just need to dedicate a few weeks):

  • ARM dev board – TI OMAP based dev board
  • Sun Blade 100 – UltraSPARC IIe in 64-bit mode
  • NeXT B&W slab – Motorola 68040 based
  • SGI Indy – MIPS R5000 based Indy in 32- and 64-bit mode
  • DEC Multia – Alpha 21064

Links:

https://itsfoss.com/fuchsia-os-what-you-need-to-know/

admin