Minimal x86 Kernel Zig(github.com)
92 points by lopespm 8 hours ago | 11 comments
WD-42 2 hours ago
Here's one for Risc-V that's a little more fleshed out, also in Zig: https://github.com/Fingel/aeros-v/blob/main/src/kernel.zig
6r17 3 hours ago
I'm very surprised it's *that* short - handling one in rust i'm surprised by the very low amount of code to get that up. Thanks or sharing that was a first time reading some Zig for me !
pmarreck 1 hour ago
what you’re experiencing is more or less why I am building some stuff in Zig instead of Rust
kunley 20 minutes ago
Why to spread confusion and call it bare metal when it's run under QEMU? Then it's not bare metal at all.

In order to be run on bare metal it's needing another bootloader which the documentation only barely mentions.

More on the naming: why to call it kernel?

csense 5 hours ago
Very neat. To clarify, Qemu can boot it, but I'm pretty sure you need some bootloader (e.g. Grub) to boot it on a physical system.
toast0 4 hours ago
Looks like it's multiboot compliant, so you can pick your favorite multiboot loader. ipxe, grub, pretty sure there's some other ones out there.

As it's multiboot, it should likely run on v86 too. It's always fun to have an in browser demo of a little OS like this.

anta40 4 hours ago
If you want to use Grub, this tutorial works (see "Booting the kernel"):

https://wiki.osdev.org/Zig_Bare_Bones

Yes, just tried it.

flopsamjetsam 4 hours ago
From the GitHub page:

> It boots on an x86 (i386) machine via the Multiboot 1 protocol

Yes, it does need a compliant bootloader on virtual or physical hardware.

drnick1 3 hours ago
What's the point of doing this in "Zig" instead of C, the traditional choice for this kind of thing?
kunley 15 minutes ago
I guess one of good reasons is easy cross-compilation.

But also, I can see some amount of weird hooray optimism in this project, like: totally confusing claim that the thing is bare metal when it's still being run under an emulator; also, calling it a kernel is a huge overstatement

toast0 3 hours ago
Because you can is a pretty traditional reason.

Zig is supposed to be an improvement upon C, so doing C things with it seems reasonable.

Kind of neat that there's no need for a separate assembly file although there is inline assembly. Might get better (or worse) syntax support for separate assembly files? But it doesn't make a big difference until there's more features that need it (interrupts, threads/processes and maintaining their stacks, syscalls, starting other processors, etc)

flohofwoe 11 minutes ago
In this case, better tooling and consistency. E.g. the small block of inline assembly would already be trouble for some C compilers.
jandrewrogers 1 hour ago
Zig is essentially a substantially improved and enhanced C, both in character and intent. There is a lot to recommend it for applications where you might otherwise use C.
pmarreck 1 hour ago
because Zig is simply a better C, often faster (normally at least as fast), but with way more safety guarantees or at least things preventing the vast majority of traditional C footguns from happening
mitchellh 3 hours ago
Fun?
6r17 3 hours ago
What's the point writing another kernel in C ???
3 hours ago
moonlion_eth 55 minutes ago
because zig is lower level than c
ajxs 6 hours ago
anta40 5 hours ago
Both tutorials work fine on latest stable zig (0.15.2)
xx__yy 4 hours ago
Thanks for sharing
aryalaadi 2 hours ago
thats not a kernel
benatkin 2 hours ago
Indeed, it's freestanding, the repo name doesn't have the correct term, but the source file does near the end: https://github.com/lopespm/zig-minimal-kernel-x86/blob/main/...

Also baremetal where the metal is virtual. LLVM uses this term for when an OS isn't available https://github.com/llvm/llvm-project/tree/main/libc/src/stdl...

aryalaadi 1 hour ago
I think calling baremetal software a kernel keeps a bad impression on people just starting out, you can do alot with baremetal and it does not have to be a kernel
gethly 40 minutes ago
wtf? 10 lines of hello world code is not a kernel.
throwaway27448 4 hours ago
Why choose intel? Let's build bootable software in 2026
xx__yy 4 hours ago
I'm not that cluey, but from the README it sounds like it can be compiled for a bunch of arches
messe 2 hours ago
Minimal slop.
xx__yy 4 hours ago
Gold! I see Zig, I upvote!