Skip to main content

Hairizuan Noorazman

Life is too exciting to just keep still!

Practical implementation notes, experiments, and lessons learned from building and operating software.

Recent

Turning Container Images into Multikernel Linux Roots

··1130 words·6 mins
My first Multikernel Linux experiment on GCE started child kernels with roots that I built ahead of time. That was useful for proving that the kernels could boot, but it was not how a container runtime should consume an image. A runtime should accept the root filesystem that containerd has already prepared and should not become another registry client, layer downloader, or snapshotter.

Persistent ext4 Roots for Multikernel Linux on Google Compute Engine

··1340 words·7 mins
My first Multikernel Linux experiment on Google Compute Engine (GCE) showed that one VM could run a primary kernel and multiple child kernels at the same time. The children could use different kernel binaries, but their root filesystems were either minimal initramfs images or DAXFS. That left an important question unanswered: could a child kernel have a persistent, read-write ext4 root filesystem?

Can Multikernel Linux Run on Google Compute Engine?

··1336 words·7 mins
The idea behind Multikernel Linux is unusual: one physical machine can run several independent Linux kernels at the same time, without placing a conventional hypervisor between those kernels and the hardware. A primary kernel owns the machine’s resources, moves selected CPUs, memory, and devices into a pool, and starts child kernels from that pool.

PostgreSQL MVCC and Autovacuum Learnings

··1251 words·6 mins
PostgreSQL can let readers and writers work concurrently because of multi-version concurrency control, or MVCC. The trade-off is that an update usually creates a new tuple version instead of replacing the old one in place. A delete also makes a tuple obsolete without immediately removing its storage.

Fighting Electron's findInPage Focus Bug

··772 words·4 mins
I wanted find-in-page search for web panels in Worklayer. Electron provides webview.findInPage() which highlights matches and handles navigation between them. Simple enough. Except after the first character is typed into the search input, all subsequent keystrokes disappear into the void.