-
./build
builds 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"
/init
static binary runnable in aFROM scratch
demo container - busybox-init: a
busybox
-based container with bash as init and working networking
- hello: a minimal "hello, world"
-
./run-qemu hello
starts this Kernel in a virtual machine (using KVM, with QEMU; enable virtualization first), with an initrd containing ourhello
demo. -
./run-qemu busybox-init
starts this Kernel in a virtual machine using the busybox container image plus our owninit
as initrd. You can quit it usingpoweroff -f
. Also see networking. -
./run-qemu-syslinux hello | busybox-init
builds a disk image with SYSLINUS bootloader, and starts virtual machine. (Whereasrun-qemu
usesqemu* -kernel -initrd
.) -
The
/tmp/bzImage-busybox-init.img
disk image can be written to a USB key (e.g. usingdd
, or, easier, GNOME Disks), and will boot on bare metal. -
./run-dev-container
will 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.tcl
automatically 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.