The Linux Boot Process: From Power Button to Kernel
A detailed walkthrough of the Linux boot process from power button to kernel initialization
The latest blog posts to take off on Hacker News. 4,387 posts.
A detailed walkthrough of the Linux boot process from power button to kernel initialization
Hey all. TinyKVM was open-sourced this february and since then I’ve been working on some things that are very much outside of the scope of…
A while back, I worked on a RISC-V-based userspace simulator for fun. In doing so, taught myself a lot more than I wanted to know about what happens in-between when the Kernel is asked to run a program, and when the first line of our program’s main function is actually executed. Here’s a summary of that rabbit hole.
A guide on building a simple Linux distribution from scratch. Detailed guide on building the kernel and the init process. Finally, a little distribution is built with u-root that is capable of connecting to the Internet.
I have gotten a significant amount of response on the Quake 2 extension mechanism. I do read everything that comes my way (I can't respond to all of it, though), and I have learned a few things from the mail.
/dev/null is web scale
Technical blog by Stephan Berger (@malmoeb)
Have you ever asked yourself what if we could replace any message broker with a very simple one using only two UNIX signals? Well, I'm not surprised if you
Programming language async runtimes are very focused on handling asynchronous, possibly long running tasks, that might yield for a variety of reasons, that...
Android developer, author of Combian 64 and Dosbian
This is an effort to create a fully functional Kubernetes cluster with 1 million active nodes.
So you don't have to.
Stopping a Linux thread is a surprisingly annoying affair. In this post I present common pitfalls and some solutions -- although no truly satisfactory method exists.
Programming languages have rapidly evolved in recent years. But in software development, the new often meets the old, and the scaffolding that OS gives for running new processes hasn’t changed much since Unix.
Autumn update This is what it is looking like around here at the moment. DevOpsDays London I gave a talk at DevOpsDays London recently. It was a nice...
Programming notes for Unreal Engine, Houdini, Game Development, Math, & Graphics
Since my previous blog entry about JIT compiler for PostgreSQL, sadly not much happened due to a lack of time, but still some things were done (biggest improvement was the port to ARM64, a few optimizations, implementing more opcodes…). But I am often asking myself how to really beat the interpreter… And on “modern”…
On multi-core programming, not as a special-case technique, but as a new dimension in all code.
I love C. I could give you rational reasons for that. Like the fact that it works everywhere and how it goes fast. But mostly I love C because when I write C I feel an intimate connection with my computer. To me, C has soul. In fact all my personal project are written in C, like the graphics rendering engines that I'm…
While not an absolute requirement for modern graphics card support on Linux, Resizeable BAR support makes GPUs go faster, by allowing GPUs to throw data back and forth on the PCIe bus in chunks larger than 256 MB. In January, I opened an issue in the Raspberry Pi Linux repo, Resizable BAR support on Pi 5. Unlike most…
I’m entirely convinced that basically every developer alive today heard the adage “dress for the job you want, not the job you have” and figured that, since they always wear jeans and a t-shirt anyway, they might as well apply it to their systems’ architecture. This explains why the stack of every single company I’ve…
Problems and Algorithms
View the code on GitHub
Let's look at Vec<T> to get a better understanding of its inner structure.
False sharing, AoS vs SoA, random access, branch prediction: re-measured with go test -bench on two machines. Some claims held, some didn't.
tl/dr: it can deliver big performance speedups at modest area cost
In computer science, we often compare the efficiency of algorithms by describing their runtime as a function of the size of the input. Sorting is O(n * log(n)), meaning that sorting a list of N items takes an amount of time proportional to the number of items multiplied by its logarithm. Matrix multiplication is…
Quantum Software and the microkernel UNIX
In this blog post, we walk through how to use Matrix Cores in HIP kernels, with a focus on low-precision data types such as FP16, FP8, and FP4, as well as the new family of Matrix Core instructions with exponent block scaling introduced in the AMD CDNA™4 architecture. Through code examples and illustrations, we…
Using a decommissioned Alibaba cloud accelerator card as an FPGA dev board