Devotd Github
NewDeveloper tools

usbarmory/eggshell — A Go unikernel for Linux binaries

usbarmory/eggshell is an experimental unikernel that takes the Go runtime as its kernel in order to run statically linked Linux executables and dynamically linked ones using musl.

Repositoryusbarmory/eggshell ↗

usbarmory/eggshell is an experimental unikernel that takes the Go runtime as its kernel in order to run statically linked Linux executables and dynamically linked ones using musl.

GitHub description: Bare metal Go kernel for Linux binaries

stars
★ 94
Forks
5
Language
Go
License
NOASSERTION
Read original source ↗View on GitHub ↗

usbarmory/eggshell is a Go-based unikernel that seeks to run Linux executables without a general-purpose operating system. No public release version is given in FACTS, and this post covers the repository itself rather than the changes of any specific version. The README describes the project as an early-stage experiment. It aims to implement the Linux ABI on top of TamaGo so as to run statically linked executables as well as dynamically linked executables that use musl.

The Linux ABI is the calling convention between a program and an operating system. In eggshell, the Go runtime takes on the role of the kernel and handles the program's system calls according to the Linux specification. User programs run in a hardware-isolated, unprivileged region. Besides system calls, it provides processes and signals, a virtual file system, terminals, pipes and sockets. According to the README, a QEMU micro virtual machine is used for building and running. The core is therefore implementing operating system functionality in order to accommodate Linux programs within a Go execution environment.

That said, the stage revealed by the README is an early experiment. The license information for judging actual usage conditions is marked NOASSERTION in FACTS. The described way of running and the features should therefore be read as the scope of an experiment that is still under development, and the range in which it can be used stably cannot be confirmed from the given information alone.