Using my QEMU CLI Generator, I explore how Linux OS is usable within many virtualization and hardware. Useful to track if linux really works or my CLI setup is bogged.
Test as of: Jan 24, 2026, using Pop!_OS 24.
| Kind | Boot to disk? | Notes |
|---|
Using my QEMU CLI Generator, I explore how Linux OS is usable within many virtualization and hardware. Useful to track if linux really works or my CLI setup is bogged.
Test as of: Jan 24, 2026, using Pop!_OS 24.
| Kind | Boot to disk? | Notes |
|---|
| # A script to generate Redox syscalls in Go source files, put this script to "src" folder | |
| # You must have Redox build system in $HOME/redox with "prefix" generated | |
| # You must have "$ARCH-unknown-redox-gcc" in your PATH, add it from Redox build system | |
| # mkerrors: You need to patch "$CC" to "gcc" at the bottom of the script, also "$(uname)" to "Redox" | |
| # mkerrors: You need to comment out "#include <netinet/ip6.h>" and "#include <sys/signal.h>" since Redox doesn't have it | |
| export ARCH=x86_64 GOARCH=amd64 # intentionally not setting GOOS since "go" run on vanilla Go | |
| export redox_sysroot="$HOME/redox/prefix/$ARCH-unknown-redox/sysroot/$ARCH-unknown-redox" | |
| export CGO_FLAGS="--sysroot=${redox_sysroot}" \ | |
| CC=$ARCH-unknown-redox-gcc TARGET=$ARCH-unknown-redox GNU_TARGET=$ARCH-unknown-redox \ |
There are three things you need to know in Redox build system to achieve full offline build system.
The first thing that you need to do is fetch as many package sources that you might want to download before going offline. I recommend following these steps:
CONFIG_NAME=ci. It will match to all packages proven to build correctlymake fetch. It will download all of them without building itAfter fetch is done you can revert CONFIG_NAME to a kind of image you wish to build.
| #!/bin/sh | |
| ENV_FILES="" # list of env files (empty by default) | |
| VERBOSE=0 | |
| show_help() { | |
| cat <<EOF | |
| Usage: $(basename "$0") [--env-file=FILE ...] [--verbose] [--help] [VAR=val ...] COMMAND [ARGS...] | |
| Options: |
| package main | |
| import ( | |
| "archive/zip" | |
| "bytes" | |
| "context" | |
| "errors" | |
| "fmt" | |
| "io" | |
| "path/filepath" |
| <!DOCTYPE html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>You're entering DOM Cloud User Generated Content</title> | |
| <link rel="preconnect" href="https://fonts.googleapis.com"> | |
| <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> | |
| <link href="https://fonts.googleapis.com/css2?family=Open+Sans:wght@567&display=swap" rel="stylesheet"> | |
| <style> |
| <?php | |
| namespace App\Libraries; | |
| use App\Entities\User; | |
| use App\Entities\Purchase; | |
| use Config\Services; | |
| use WpOrg\Requests\Requests; | |
| /** |
| #!/usr/bin/expect -f | |
| # Check if the correct number of arguments is provided | |
| if { $argc != 2 } { | |
| puts "Usage: $argv0 <npx_command_arguments> <admin_email>" | |
| exit 1 | |
| } | |
| # Set timeout for expect | |
| set timeout -1 |
Here's how you build Redox from Mac in May 2025. It's so much easier to do it now than in ancient days.
The only problem you may encounter is packaging the build, since it requires FUSE and it's requires patching Mac kernel, which I don't want. I (trying) develop a way to avoid it by using Podman only for that.
I run with UTM on QEMU virtualization. It works for me.
This notes is WIP, see https://gist.github.com/willnode/a31a1265d955dbb914001aba8a576ad2 for Redox OS native bootstrapping
| #!/bin/bash | |
| while [ `passenger-config list-instances --json | jq length` -ne 1 ]; do | |
| echo "Waiting until NGINX done reloading..." | |
| sleep 1 | |
| done | |
| sudo -n -- passenger-config reopen-logs &> /dev/null || true | |
| passenger-config restart-app ~ --ignore-app-not-running |