LinuxKit is a toolkit for building custom minimal, immutable Linux distributions designed specifically for container workloads. Written in Go, it provides a complete system for creating secure, portable, and lean operating systems that can run on various platforms from local hypervisors to cloud providers and baremetal hardware. The project supports x86_64, arm64, and s390x architectures, making it flexible across different computing environments.
The core philosophy of LinuxKit centers on immutable infrastructure applied to Linux distribution building. Rather than creating traditional mutable systems, LinuxKit enables users to define their entire operating system configuration in YAML files that specify a kernel, init system, system containers for onboot execution, long-running services, and additional files. This approach ensures reproducible builds and makes systems manageable through code, aligning with infrastructure-as-code principles. Everything in LinuxKit is replaceable and customizable, allowing users to swap components while maintaining secure defaults without sacrificing usability.
The toolkit includes the linuxkit command-line tool for building, pushing, and running VM images. Users can build images using make or go install, then customize them by modifying YAML configuration files. The build system supports multiple output formats including raw BIOS images, EFI bootable ISOs, and cloud-specific formats. Once built, images can be executed using linuxkit run with automatic platform detection or explicit backend selection across supported hypervisors like QEMU, HyperKit, Hyper-V, and Virtualization.Framework on macOS, as well as cloud platforms including AWS, Google Cloud, Microsoft Azure, and OpenStack.
LinuxKit maintains several related subprojects that extend its capabilities. LinuxKit Kubernetes focuses on building minimal and immutable Kubernetes images, while LinuxKit LCOW provides images and utilities for Microsoft's Linux Containers on Windows. The project also maintains a Linux kernel repository with LinuxKit-specific branches, a virtsock library for virtio and Hyper-V socket communication, and rtf, a regression test framework used in LinuxKit's CI pipeline. A Homebrew tap provides convenient installation on macOS systems.
According to GitGenius activity tracking, the repository shows median issue and pull request response latency of 18.7 hours across 69 tracked items, though mean latency extends to 6724.6 hours reflecting some longer-running discussions. The most active contributors include deitch with 181 tracked events, followed by Smithx10 and ChrisIgel. The project maintains connections with related repositories including lima-vm/lima, knative/serving, and containerd/containerd through overlapping contributor networks. Most active issue labels tracked include area/networking, status/0-triage, and platform/qemu, indicating ongoing work in networking functionality, issue triage processes, and QEMU platform support.
The project was originally developed from experience building Docker Editions but redesigned as a general-purpose toolkit. It is designed to be managed by external tooling such as Infrakit or similar infrastructure management systems. LinuxKit includes collaborative projects focused on kernel and userspace innovations, particularly around security. The system is completely stateless by default but supports persistent storage attachment when needed. Released under the Apache 2.0 license, LinuxKit maintains an adopters list and publishes monthly development reports documenting ongoing work.