Skip to content

Instantly share code, notes, and snippets.

View gbraad's full-sized avatar
🇳🇱
Working from home

Gerard Braad gbraad

🇳🇱
Working from home
View GitHub Profile
#!/usr/bin/env bash
set -euo pipefail
# --- CONFIGURATION ---
VM_NAME="ducttape-guest"
IMAGE_PATH="./ducttape-output.qcow2" # Path to your ducttape QCOW2 image
FW_PATH="./hypervisor-fw" # Path to store/read the CH firmware
SSH_KEY="ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK...your...ssh...key...here..."
VM_CPUS="2"
FROM fedora-cloud:44

RUN dnf install -y httpd && \
  dnf clean all && \
  systemctl enable httpd
ducttape build -t fedora-httpd -f ./Machinefile 
@gbraad
gbraad / README.md
Last active June 15, 2026 10:42
MicroVM (using krun)

MicroVM (using krun)

podman run --runtime=krun --rm -it fedora:44 /bin/bash

Volca Knob

Note

Not for unauthorized use.

@gbraad
gbraad / README.md
Last active May 19, 2026 13:13
Evaluating Azure Linux

Evaluating Azure Linux

While Microsoft announce #Azure #Linux 4.0, releases are not publicly available to download as disk image or container image to pull. So instead, I have looked at the slightly older 3.0 release that is published at mcr.microsoft.com/azurelinux/base/core:3.0.

To best test this, I added this to my dotfiles targets and created a container image that can be used with my dev-command to set up a contained system for development purposes. This works, but points out some very clear differences and annoyances

Very minimal footprint; great from a security perspective and low on resources.

There is no dnf. Instead tdnf has to be used.

Lima on runner

Have been testing a bit more with Lima and other cncf-projects. Got my own prepped cloud images now start with lima instead of the macadam tool I worked on before. Seems to work, but some minor issues along the way; issues filed and let's see. So far, glad to actually move to a more community maintained stack of tooling.

cd ~/
git clone https://github.com/gbraad-dotfiles/upstream .dotfiles
@gbraad
gbraad / README.md
Last active May 14, 2026 09:41
Nerdctl / containerd tested on runner

Nerdctl on runner

ARCH=$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/')
NERDCTL_VERSION=$(curl -fsSL https://api.github.com/repos/containerd/nerdctl/releases/latest |
   grep '"tag_name"' | cut -d'"' -f4 | tr -d 'v')
curl -fsSL "https://github.com/containerd/nerdctl/releases/latest/download/nerdctl-${NERDCTL_VERSION}-linux-${ARCH}.tar.gz" \
   | sudo tar -C /usr/local/bin -xz nerdctl
@gbraad
gbraad / README.md
Last active May 14, 2026 05:57
Test image

Test openSUSE cloud image with machine

Needs macadam from: https://github.com/gbraad-dotfiles/macadam/releases/tag/v0.2.1a as this provides UEFI firmware support.

git config -f ~/.config/dotfiles/local/machine.ini \
    'disks.opensuse-cloud' \
    'https://download.opensuse.org/tumbleweed/appliances/openSUSE-Tumbleweed-Minimal-VM.x86_64-Cloud.qcow2'
@gbraad
gbraad / README.md
Last active May 15, 2026 11:17
Import devenv image into container runtime

Import devenv WSL image into container runtime

Note

This will describe in short how to get your old wsl environment running in a container runtime, such as containerd or Podman. While it is possible to use vhdx, I had better results with tarballs. A vhdx needs to be converted, use qemy-nbd etc, as you can not boot this as a VM unless you install the kernel and modules.

Prepare WSL export

--------- beginning of system
02-06 23:31:02.838 11765 11855 I Regroovelizer-Native: === ELF LOADER START ===
02-06 23:31:02.838 11765 11855 I Regroovelizer-Native: Loading: /data/user/0/com.regroovelizer/cache/selected_unit.nts3unit
02-06 23:31:02.838 11765 11855 I Regroovelizer-Native: [ELF] Type=3 Machine=40 Entry=0x0
02-06 23:31:02.838 11765 11855 I Regroovelizer-Native: [ELF] Memory range: 0x0 - 0x3d44 (15684 bytes)
02-06 23:31:02.838 11765 11855 I Regroovelizer-Native: [ELF] Allocated 15684 bytes at 0xea937000
02-06 23:31:02.838 11765 11855 I Regroovelizer-Native: [ELF] Loaded segment 1: vaddr=0x0 size=12796 flags=R-X
02-06 23:31:02.838 11765 11855 I Regroovelizer-Native: [ELF] Loaded segment 2: vaddr=0x3200 size=816 flags=R--
02-06 23:31:02.838 11765 11855 I Regroovelizer-Native: [ELF] Loaded segment 3: vaddr=0x3530 size=2068 flags=RW-
02-06 23:31:02.838 11765 11855 I Regroovelizer-Native: Loaded at 0xea937000, size 15684