Skip to content
🐧 µLinux (uLinux) is a micro Linux Cloud Native OS designed for high performance, minimal overheads and decreased security footprint attack surface.
Shell Makefile Ruby Dockerfile
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.chglog Fix git-chglog config (again) Apr 7, 2020
.dockerfiles Fix Docker Image building Apr 8, 2020
.github Fixed workflow Apr 3, 2020
clouddrive Fixed a bug with setting passwords from cloudinit Apr 6, 2020
patches Initial Commit Mar 15, 2020
rootfs Fix /dev/ptmx symlink and /tmp mount Apr 9, 2020
tools Update release process to include a GPG signed sha256sums.txt for aut… Apr 8, 2020
.dockerignore Update .dockerignore Apr 2, 2020
.gitattributes Update repo and remove old Git LFS assets Apr 7, 2020
.gitignore Remove .DS_Store Apr 9, 2020
.yamllint.yml Initial Commit Mar 15, 2020
CHANGELOG.md Release 0.0.9 Apr 9, 2020
Dockerfile Fix Docker Image building Apr 8, 2020
Dockerfile.builder Add some color to uLinux 😀 Apr 7, 2020
KConfig Update cached copy of Kernel Config for refernece Apr 9, 2020
Makefile Update Makefile release target to move sha256/gpg steps to release to… Apr 8, 2020
README.md Fix screenshot links to be relative Apr 8, 2020
_config.yml Set theme jekyll-theme-architect Mar 15, 2020
build.sh Update the build and trim some unneeded Kernel options and remove --e… Apr 9, 2020
customize.sh Initial Commit Mar 15, 2020
defs.sh Add sinit as the init process (suckless init) [REFACTOR] (#12) Apr 7, 2020
download.sh Add sinit as the init process (suckless init) [REFACTOR] (#12) Apr 7, 2020
functions.sh Initial Commit Mar 15, 2020
main.sh Fix build_make() and drop into a shelll if we're on a terminal and th… Apr 2, 2020
screenshot-1.png Update screenshots Apr 8, 2020
screenshot-2.png Update screenshots Apr 8, 2020
screenshot-3.png Add sinit as the init process (suckless init) [REFACTOR] (#12) Apr 7, 2020
test.sh Add sinit as the init process (suckless init) [REFACTOR] (#12) Apr 7, 2020

README.md

ulinux

Build

µLinux (uLinux) is a micro (µ)Linux Cloud Native OS designed for high performance, minimal overheads and decreased security footprint attack surface. µLinux is container-ready and is small enough with a lot of fat removed and stripped down you could almost consider it a "Unikernel" of sorts. If you care about performance, footprint, security and minimalism like I do you'll want to use µLinux for your workloads.

NOTE:: µLinux is NOT a full blown Desktop OS nor will it ever likely be. It is also not ever likely to build your favourite GCC/GLIBC/Clang software as it only ships with a very small C compiler and libc (musl). Consider using Alpine for a more feature rich system or any other "heavier" / "full featured" distro.

Supported Platforms

Features

  • Recent Linux Kernel
  • Busybox userland
  • Dropbear SSH
  • Hybrid Live ISO
  • Installer
  • CloudInit
  • Crude (to be replaced) package manager

Toolchain

uLinux currently supports building C and Assembly and ships with the following compilers and tools:

  • Tiny C Compiler
  • Flat Assembler
  • Musl LibC
  • Make

There is no support for GCC/GLIBC.

Screenshots

screenshot-1 screenshot-2 screenshot-3

Getting Started

First make sure you have Docker installed on your system as the build uses this extensively to build the OS reliably across all platforms consistently.

Also make sure you have QEMU installed as this is used for testing and booting the OS into a Guest VM.

Prebuilt

This repo contains prebuilt assets to get you started quickly without having to build anything yourself.

Please see the Release for the latest published versions of:

  • ulinux.iso -- Hybrid Live ISO with Installer.
  • kernel.gz -- The Kernel Image (Linux)
  • rootfs.gz -- The RootFS Image (INITRD)

Installing

Once booted with either the Hybrid Live ISO or Kernel + RootFS you can install uLinux to disk by typing in a shell:

# setup /dev/sda

Assuming /dev/sda is the device path to the disk you want to install to.

WARNING: This will automatically partition, format and install uLinux with no questions asked without hestigation. Please be sure you understand what you are doing.

Building

Just run:

$ make

Testing

Just run:

$ make test

The OS comes pre-shipped with Dropbear (SSH Daemon) as well as a Busybox Userland. The test script (test.sh) also uses QEMU and sets up a User mode network which forwards port 10022 to teh geust VM for SSh access.

You can access the guest with:

$ ssh -p 2222 root@localhost
You can’t perform that action at this time.