eBPFs are fun. They present an easy way to insert pieces of code in the kernel which are compiled to opcodes which are guaranteed to not crash it: The instructions allowed are limited, backward jumps are not allowed (so no indefinite looping!) and you can’t dereference pointers, but can instead do checked reads from pointers which can fail without panicking the entire system. You can attach an eBPF to thousands of hooks in the Linux kernel - uprobes, kprobes, tracepoints, even things like p...| nikofil’s blog
This post is about writing a simple, round-robin task scheduler for my Rust kernel. It builds on some concepts I wrote about in my previous post: To userspace and back!| nikofil’s blog
This post documents my attempts to manage to jump (or return?) from kernel-space to usermode in my Rust kernel so that it can do what a kernel is supposed to actually do: give the CPU to user programs. That’s pretty exciting! In the next part, we’ll even take control back from the programs so that we can implement a scheduler.| nikofil’s blog
This is an implementation of Game Of Life in Rust compiled to WASM based on the Rust and WASM book. This means it’s Rust, running on the browser, faster than JS could ever hope to be! (if I didn’t mess it up) You can use the controls on the bottom to start / stop / reset the state and control the speed. You can also click on boxes to toggle them, or drag over them to change a bunch at a time. Code is hosted on Github.| nikofil’s blog
Previous post: Part 2: Buddy allocator| nikofil’s blog
Previous post: Part 1: Creating a simple allocator.| nikofil’s blog
This relates to my very-much-in-development kernel in Rust: https://github.com/nikofil/rust-os| nikofil’s blog
I’ve been planning to do this write-up for a while now, but I decided to wait for at least 40 days after reporting this bug before disclosing it, as it concerns the e-class software used by most universities in Greece. The bug reported here has indeed been fixed on the same day that I reported it, so the first part of this shouldn’t be possible anymore. I’m also glad to see my own university’s e-class has been updated to the latest version, which is safe against this. The e-class soft...| nikofil’s blog
The first month of my Google Summer of Code is already coming to an end, and the Phase 1 evaluation is also around the corner, which coincidentally is also the last week of my contract at CERN. With that in mind, this seems like a good time to write a blog post about the project and my progress during the first month.| nikofil's blog
I’ve been reading up on the Double Ratchet algorithm and its implementations lately, as it’s an exciting piece of crypto that offers some very nice guarantees: forward secrecy (ie. by breaking a key at some point you can’t read older messages), eventual break-in recovery (ie. by breaking a key you can only read a few messages before the protocol recovers), and of course confidentiality and deniability. It’s all done through the use of “ratchets”, which are used to update the key u...| nikofil's blog