Repository navigation
Getting started
miroslaw edited this page Sep 29, 2026
·
1 revision
Linux host with:
-
gcc,ld,nasm,objcopy— toolchain -
cpio— builds the initrd archive -
grub-mkrescue— builds the bootable ISO -
qemu-system-x86_64with KVM — runs the result
On Debian/Ubuntu:
sudo apt install build-essential nasm cpio grub-pc-bin \
grub-common xorriso qemu-system-x86
From the project root:
make clean
make run
make run does the whole chain:
- Builds the userspace programs (
init,test,echo,exy-vfs,console) intobuild/*.elf. - Packages them into
build/initrdwithtools/mkinitrd.sh(cpio newc). - Runs
objcopy -I binaryonbuild/init.elfandbuild/initrdto embed them into the kernel as byte arrays. - Links
build/exyde-kernel.elf. - Wraps it into
build/exyde.isowith GRUB. - Boots the ISO under QEMU with
-serial stdio.
The kernel log appears on stdout. A run is healthy if the last line
is idle: entering hlt loop and there is no *** KERNEL PANIC ***.
make # build the kernel ELF only
make -C src/userspace # build userspace programs only
make iso # build the bootable ISO, do not run
make clean # rm -rf build/
A successful run ends with:
userspace: after reaper, pmm free=<N> heap=4460544
userspace test: OK (init spawned, ran, exited)
uaccess test: OK (range bounds, wrap, zero-len, extable)
idle: entering hlt loop
pmm free before and after the userspace phase is the same number.
If it is not, the kernel leaked physical pages and the run will
panic with userspace test: reaper leaked pages.
-
cpio: command not found— installcpio. -
grub-mkrescue: command not found— installgrub-pc-binandxorriso. - QEMU boots but hangs before
idle:— look for a panic earlier in the log. The panic message names the failing subsystem. -
-accel kvmfails — either enable KVM in your kernel or replace it with-accel tcginsrc/kernel/Makefile(much slower).