-
./buildbuilds a Linux KernelbzImage(inside a build container, it's just easier for dependencies) and userland demo images such as: (You can use any Docker Container image as User Land, see image2initrd, as long as it has an/init).- hello: a minimal "hello, world"
/initstatic binary runnable in aFROM scratchdemo container - busybox-init: a
busybox-based container with bash as init and working networking
- hello: a minimal "hello, world"
-
./run-qemu hellostarts this Kernel in a virtual machine (using KVM, with QEMU; enable virtualization first), with an initrd containing ourhellodemo. -
./run-qemu busybox-initstarts this Kernel in a virtual machine using the busybox container image plus our owninitas initrd. You can quit it usingpoweroff -f. Also see networking. -
./run-qemu-syslinux hello | busybox-initbuilds a disk image with SYSLINUS bootloader, and starts virtual machine. (Whereasrun-qemuusesqemu* -kernel -initrd.) -
The
/tmp/bzImage-busybox-init.imgdisk image can be written to a USB key (e.g. usingdd, or, easier, GNOME Disks), and will boot on bare metal. -
./run-dev-containerwill run an interactive dev container to explore[tux@kernel-dev ~]. Its root password is empty, so you can e.g.sudo dnf install -y .., but it's (intentionally) ephemeral - script it! ;) -
./test.tclautomatically tests everything that's described above; run it after making any changes (and extend it when adding new features).
docs/ has more background and details; including a Roadmap and TODOs.
Architecture (future, TBD) further describes what's what in this repo.
archlinux has my Arch Linux based distro.