Tilck Project, a simplified kernel compatible with Linux

tick

Tilck is an educational monolithic x86 kernel designed to be compatible with Linux at the binary level.

The news was released of a new development that has the name «Project Tilck», in which a VMware employee is developing a monolithic kernel that is fundamentally different from Linux, but designed to be compatible binary with Linux and capable of running applications built for Linux.

The development aims to implement the minimum required characteristics, avoiding functionality overload, simple and understandable architecture, maximum code simplification, small size of binary files, predictable (deterministic) behavior, ensuring minimum delays, achieving high reliability, and simplifying development and testing processes.

Tilck is fundamentally different from Linux in that it doesn't target multi-user servers or desktop machines, not at all because that wouldn't make sense: Linux isn't big and complex because of poor implementation, but because of the incredible number of features it has. offers and the intrinsic complexity they require. In other words, Linux is great given the problem it solves. Tilck will offer fewer features in exchange for:

simpler code (by far)
smallest binary size
extremely deterministic behavior
ultra low latency
easier development and testing
additional robustness

The project not intended for use in multi-user server environments or desktop systems. Of the file systems, FAT16 and FAT32 are supported in read mode, as are ramfs, devfs, and sysfs. Block devices have not yet been implemented; everything is in memory.

VFS is provided to abstract the operations of FS. Multithreading at the current stage of development is only available at the kernel level (not yet provided in user space).

The kernel supports preemptive multitasking and implements about 100 basic calls. to the Linux system, such as fork(), waitpid(), read(), write(), select() and poll(), which are sufficient to run console applications such as BusyBox, Vim, TinyCC, Micropython and Lua, as well as framebuffer-based graphical applications like the game fbDOOM. To create programs for Tilck, a set of tools based on the Musl library is provided.

It is mentioned that the proposed driver set allows running Tilck both in the QEMU environment as in conventional systems booting from a USB drive. In addition to this, it is also noted that there is support for SSE, AVX and AVX2 extended instruction sets. It offers its own interactive bootloader that supports BIOS and UEFI systems, but it is also possible to use third-party bootloaders such as GRUB2. When loaded into QEMU, the kernel can run in an environment with 3 MB of RAM.

Currently, the project is positioned as an educational project, but in the long term it is possible that Tilck will grow to a level suitable for use as a kernel for embedded systems that require predictable behavior and low latency.

While Tilck internally uses the concept of a thread, multithreading is not currently exposed to user space (kernel threads exist, of course). Both fork() and vfork() are implemented correctly and copy-on-write is used for forked processes. The waitpid() system call is fully implemented (which implies process groups, etc.).

One interesting feature in this area deserves a special mention: despite the lack of userspace multithreading, Tilck has full support for TLS.

It is expected that Tick bridge the gap between Linux kernel-based solutions and dedicated real-time operating systems, like FreeRTOS and Zephyr. Plans include migrating Tilck to ARM and non-Memory Management Unit (MMU) processors, adding a network subsystem, support for block devices, and additional file systems like ext2.

The code is written in C and is distributed under the BSD license. At the current stage of development, the kernel only supports the x86 architecture, but the code is designed with universality and implementation in mind for future support for other architectures.

finally if you are interested in knowing more about it, you can check the details In the following link.


Leave a Comment

Your email address will not be published. Required fields are marked with *

*

*

  1. Responsible for the data: AB Internet Networks 2008 SL
  2. Purpose of the data: Control SPAM, comment management.
  3. Legitimation: Your consent
  4. Communication of the data: The data will not be communicated to third parties except by legal obligation.
  5. Data storage: Database hosted by Occentus Networks (EU)
  6. Rights: At any time you can limit, recover and delete your information.