Skip to content

Introduce flavors; CLI rework; Kernel rework; RaspberryPi et al. support - #67

Merged
jacobweinstock merged 143 commits into
tinkerbell:mainfrom
rpardini:pr/Introduce-flavors-CLI-rework-Kernel-rework-RaspberryPi-et-al-support
Jul 28, 2026
Merged

Introduce flavors; CLI rework; Kernel rework; RaspberryPi et al. support#67
jacobweinstock merged 143 commits into
tinkerbell:mainfrom
rpardini:pr/Introduce-flavors-CLI-rework-Kernel-rework-RaspberryPi-et-al-support

Conversation

@rpardini

@rpardini rpardini commented May 7, 2026

Copy link
Copy Markdown
Member

Introduce flavors; CLI rework; Kernel rework; RaspberryPi et al. support

Flavors

  • Flavors added:
    • trixie-full - default Debian linux-generic kernel, working apt package manager
    • trixie-slim - uses captainos kernel (built from source), slim profile
    • Armbian-based (DeviceTree) arm64 flavors:
      • RaspberryPi flavor trixie-armbian-rpi with ready-to-netboot firmware produced in rpi-firmware
        directory
      • Rockchip flavors trixie-rockchip64 (mainline), trixie-rockchip64-vendor (vendor kernel)
      • Amlogic flavor trixie-meson64
      • MediaTek Genio flavor trixie-genio
  • Default flavor: trixie-full
  • Introduced BaseFlavor class and a hierarchy of common flavor classes for shared logic and configuration:
    • CommonDebianFlavor for Debian-based flavors (currently every flavor, but allows for future non-Debian ones)
    • CommonAcpiFlavor for ACPI/UEFI flavors
    • CommonArmbianFlavor for DeviceTree/Armbian-based arm64 flavors
    • Flavor hierarchy:
      • common-debian > common-acpi > trixie-full (UEFI/ACPI)
      • common-debian > common-armbian > trixie-armbian-* (DeviceTree)

CLI

  • Switched to Click-based CLI
    • New CliContext for shared options and common CLI behavior
    • Subcommands: build, initramfs, iso, shell, tools, qemu, release, kernel
    • --verbose flag for INFO-level logging
    • --config option for kernel menuconfig round-trip
    • bonus: Added TUI support via Trogon/Textual
  • qemu command with arm64/UEFI/OVMF support, KVM/HVF acceleration
  • shell subcommand for interactive bash under Docker

Kernel Build

  • Reworked kernel build using make bindeb-pkg for .deb output
  • Support for cross-arch kernel builds (amd64 on arm64 and vice-versa)
  • Hash-based caching using defconfig + kernel.py code
  • Kernel's own Kbuild produces deb packages, strip modules, zstd compression
  • 6.18.y.amd64 and 6.18.y.arm64 configs
  • Standard configs for both architectures (from make savedefconfig)
  • Added kernel config round-trip via --config option

GitHub Actions

  • Flavor matrix builds: trixie-slim, trixie-full, trixie-genio, trixie-armbian-rpi, trixie-rockchip64-vendor,
    meson64, trixie-rockchip64
  • Separated build dependencies: trixie-slim depends on build-captainos-with-kernel
  • Don't push OCI artifacts for PR workflows
  • Don't push artifacts when not building main branch
  • Added GHA caches for initramfs and ISO
  • Single matrix with combined amd64/arm64 at the end

Docker Builder image for mkosi host dependencies

  • Split Docker Builder build with builder command; content-hashed per-arch builder images
  • Removed mkosi tools tree - now uses Debian Trixie's system Python for mkosi and uv for Captain
  • Single consolidated Dockerfile with balanced layers (faster pulls)

Release System

  • Built release subcommand on top of Click
  • Subcommands: release pull, release tag, release publish
  • Consolidated OCI metadata/annotations creation with deterministic timestamps and annotations

Build Artifacts & Packaging

  • DTBs are now published for arm64 builds as directories in OCI images (save for trixie-slim)
  • Flavor-specific artifacts (RPi firmware)
  • Content-hashing for initramfs/ISO idempotency
  • Deterministic tar for all layers
  • Split mkosi input (tools/kernel) from output
  • Package directories support for local .deb repos

Common Debian Flavor

  • Common Bash header file with logging functions, error handling
  • Use mkosi-chroot in postinst, enable Network=yes for scripts that might need network access
  • Switch Systemd preset files (20-captainos-base, 10-captainos-tink) instead of postinst-based systemctl invocations
  • Loosened systemd-networkd-wait-online to accept any interface, 15s timeout
  • timesyncd retry every 2s for reliability
  • Tink agent now waits for time-sync.target (time-set.target is not enough)

Logging & Debugging

  • Enhanced Rich logging system
  • Show Rich Tables with env vars when --verbose
  • Show Rich Syntax/Panel for util.run() when --verbose
  • FORCE_COLOR=1 support
  • Whale emoji for in-Docker logs

Customization

  • Custom folder support for end-user customization:
    • custom/packages.txt - extra packages
    • custom/mkosi-postinst/ - extra postinst scripts
    • custom/mkosi-finalize/ - extra finalize scripts
    • custom/files/ - extra root filesystem files
  • Example customization files included with samples for:
    • custom containerd mirror configuration
    • adding trusted root CA certificates
    • adding packages to image
    • executing extra scripts during mkosi postinst and finalize phases

Documentation

  • Updated Markdown documentation
  • Updated kernel build docs
  • Updated OCI/tooling design docs

Note: all code written by humans. Documentation and this summary were Assisted-By: qwen3.5:35b-a3b-coding-nvfp4.
PS: Some of the last commits Assisted-by: Claude Opus 4.8.


Introduce flavors; CLI rework; Kernel rework; RaspberryPi et al. support

  • 🌴 captain: fix .isEnabledFor(logging.DEBUG) calls
  • 🐸 captain: force type console in init.py
  • 🌵 captain: catch required arg and loosen type (WiP: other way around.)
  • 🌱 captain: util: Rich rule's separating run() output
  • 🍀 captain: better logging; in-docker: prefix
  • 🌿 captain: add .editorconfig matching ruff
    • .editorconfig for shell scripts and shell templates
  • 🌳 docker/mkosi: mount a Docker Volume at /work, so mkosi can cache the tools tree across invocations
  • 🍃 util: use a Panel to log the full subprocess command line
  • 🌴 captain: introduce Config build_kernel boolean
    • this will allow using a generic/distro kernel instead of building one
  • 🐸 WiP: use linux-image-generic distro kernel
    • hack until it uses the mkosi-supplied kernel for everything
    • artifacts: look for mkosi-supplied vmlinuz first
  • 🌵 gha: skip all kernel stuff
    • self-built kernel from source will come back at a later stage, as a .deb package
  • 🌱 gha: single matrix except for combined amd64/arm64 image at the end
    • just do everything at once
  • 🍀 mkosi.conf: just use tiny-initramfs instead of blocking the others (dracut/initramfs-tools)
  • 🌿 mkosi.finalize: export DTBs for arches that have them
    • also: show info about modules and full rootfs
  • 🌳 artifacts: collect dtb mkosi.output folder into out/
  • 🍃 publish: publish DTBs in OCI image as a directory
  • 🌴 kernel: drop all kernel-build related code
    • later to be reborn as standard apt package
  • 🐸 mkosi.finalize: drop kernel sound/media/net-wireless modules
    • mkosi.finalize: clean up logging a bit
    • mkosi.postinst: debugs
  • 🌵 gha: introduce FLAVOR_ID (nee KERNEL_VERSION) gha: fix
  • 🌱 release: include cfg.kernel_version as suffix to all tags
  • 🍀 gha: bump external actions so GHA stops complaining about Node 24
  • 🌿 gha: pass DEFAULT_FLAVOR_ID as KERNEL_VERSION for publish-combined gha: pass DEFAULT_FLAVOR_ID as KERNEL_VERSION for publish-combined - retry
  • 🌳 captain/gha: KERNEL_VERSION (et al) is now FLAVOR_ID
    • --flavor-id
  • 🍃 captain: cleanups / doc updates WiP (drop kernel build-related)
  • 🌴 captain: DEFAULT_FLAVOR_ID = "trixie-full"
  • 🐸 flavors: introduce flavors but logging sucks and no dataclass better, logging still sucks for Full -> Common much better in-package this sucks less cosmetics some static and template rendering and hardcoded cleanup kinda-works kinda works
  • 🌵 gha: add trixie-rockchip64 flavor
  • 🌱 stages: show what tools_mode is running
  • 🍀 gha: pass --arch to build.py build
  • 🌿 common_debian: add 01nopty with Dpkg::Use-Pty "0"; to mkosi sandbox tree
  • 🌳 captain: add support for mkosi skeleton tree
    • gha: still trying to fix dpkg/apt output in gha
    • this went nowhere, but hindsight is 20/20
  • 🍃 common_debian: common bash header with logging, sprinkle some dust on postinst and finalize
  • 🌴 mkosi.conf: output a JSON manifest
  • 🐸 mkosi.conf: force tools tree to be Debian Trixie
    • mkosi defaults to 'testing'
  • 🌵 mkosi.conf: use sandbox tree also for tools tree
  • 🌱 flavor: ensure flavor supports requested architecture
  • 🍀 flavors: cleanup a bit
  • 🌿 flavors/gha: introduce meson64 flavor
  • 🌳 docker: never interactive, never a terminal
  • 🍃 cli/flavor: pass Flavor down to build and initramfs cmds; introduce BaseFlavor::has_iso()
    • so only the fully UEFI/ACPI flavor gets ISOs by default
    • they don't make sense for DeviceTree flavors
  • 🌴 gha/docker: set and pass down FORCE_COLOR=1
  • 🐸 captain: don't shorten out logging record name
  • 🌵 buildah: take env BUILDAH_INSECURE=1 for --tls-verify=false
    • so one can use an HTTP local registry:2 for testing pushes
  • 🌱 release: pass flavor down to release, avoid releasing iso for !has_iso
  • 🍀 cli: new cli under click_cli
    • add to pyproject.toml, thus uv run captain ...
  • 🌿 click: add tools command
    • using captain.cli._stages
  • 🌳 click: some sugar, list available flavors via reflection
  • 🍃 docker: build_builder(): more info
  • 🌴 click: kill old tools cli (keep stage) click: kill old cli completely
  • 🐸 click: add iso command back
    • as it is called internally via docker
  • 🌵 gha: switch to click cli
  • 🌱 gha: release-publish
  • 🍀 captain: rework obtain_builder
  • 🌿 gha: separate build-dockerfile arch-based matrix job
  • 🌳 captain: adapt to options moved to common
  • 🍃 captain: simplify Rich logging and trace handler captain: simplify Rich logging and trace handler; let's not have two click packages
  • 🌴 gha: force tools to run native
  • 🐸 docker/Dockerfile: consolidate single Dockerfile; split and balance layers to optimize for parallel pulls
  • 🌵 docker: rework re-launching inside docker & docker envs
  • 🌱 docker/mkosi: get rid of tools tree; back to Debian's trixie system Python + pip for mkosi
    • mkosi re-launches itself and ignores uv's env without a tools tree
    • uv instead does use the system Python if it matches constraints
    • build in /work in Dockerfile, allows to reuse .venv
    • don't mount a volume in /work, instead use the one provided by the Dockerfile
  • 🍀 captain: honor FORCE_COLOR=1 for internal logging
  • 🌿 flavors: tighten semantics, refactor
    • refactor add_static_dir() into BaseFlavor
    • make has_iso() abstractmethod at BaseFlavor level
    • make kernel_packages() abstractmethod at common-debian level
  • 🌳 flavors: introduce common-acpi, move acpi/impi stuff there
    • so it's common-debian > common-acpi > trixie-full
    • in the future: common-debian > common-acpi > trixie-mainline
    • common-acpi implements has_iso() as True
  • 🍃 click: introduce CliContext and reuse common options via @click.Group
    • CliContext is a Config factory, taking both common and specific options
    • actually implement --verbose, thus new default logging level is INFO
  • 🌴 captain: make Rich richer
    • show Locals
    • show all frames in traces
    • use Highlights for FORCE_COLOR=1
  • 🐸 captain: introduce Trogon(/Textual) to auto-create a TUI from Click
  • 🌵 gha: use envvars, not --options
    • reduce suffering while I juggle Click
  • 🌱 captain: even Richer Rich
    • uv: split Config::verbose_uv from --verbose/Logging.DEBUG; use --quiet otherwise
    • use shutil.get_terminal_size to obtain and pass-down-Docker COLUMNS
    • nicer logging format, use a whale emoji for in-Docker logs
    • show Rich Table with Docker environment vars if --verbose
    • show Rich Panel and Rich Syntax for util.run() if --verbose
  • 🍀 gha: don't upload .iso as part of initramfs artifact
    • we've a separate artifact for .iso
  • 🌿 flavor/gha: add trixie-rockchip64-vendor and trixie-armbian-rpi flavors
    • also build them
    • trixie-armbian-rpi strays from standard naming as I think we might need to build our own kernel for RPi to achieve small-enough-for-eeprom-netboot eventually
  • 🌳 captain: tink-agent-setup Wants/After time-set.target
    • so time is set to something more reasonable, otherwise pulling fails with date-related TLS issues
  • 🍃 captain: move systemd enablement/disablement from postinst to systemd preset files
    • doing this in postinst has no effect, as mkosi applies presets after postinst
    • it could be done in finalize, but that would un-do the presets applied by mkosi
    • so instead do it all in two preset files:
      • one for generic OS-related enablement and disablement (20-captainos-base)
      • one for tink-agent related stuff (10-captainos-tink)
  • 🌴 captain: loosen systemd-networkd-wait-online to accept any interface and 15s timeout
    • otherwise hangs and delays on machines with multiple interfaces
  • 🐸 captain: tink-agent-setup Wants/After time-sync.target
    • time-set.target is not enough for machines without an RTC and working battery
    • time-sync.target requires timesyncd to be fully sync'ed
    • so time is set to something more reasonable, otherwise pulling fails with date-related TLS issues
  • 🌵 kernel: bring back pre-Click kernel impl
  • 🌱 util: show run()'s env vars in a Rich Table
  • 🍀 docker: rework run_in_builder() with both command_and_args and extra_docker_args
    • also introduce cfg.verbose_docker for setting env CAPTAIN_VERBOSE=1 when relaunching
  • 🌿 captain/cli: --verbose sets root level as well as current logger to DEBUG
  • 🌳 cli: re-introduce shell subcommand
    • which runs bash interactively under Docker
    • using same envs / volumes / mounts as regular run_in_builder()
  • 🍃 kernel: rework with kernel's own make bindeb-pkg into a .deb output
    • kernel packaging code already knows how to:
      • strip modules
      • zstd modules
      • handle Image name differences
      • handle depmod
      • produce a .deb package
    • but we gotta go 2-deep as .deb's are output in parent directory by kbuild
    • Dockerfile: add layers with deps:
      • rust compiler layer (inevitable after 7.0.y)
      • debhelper + etc needed for kernel deb packaging
  • 🌴 flavor: introduce BaseFlavor::pre_mkosi_stage()
    • so flavors can assert their requirements are built/met
  • 🐸 mkosi: show Rich.Syntax'ed mkosi.conf before running mkosi
    • ... since we already paid the price of Pygments...
  • 🌵 captain: allow building amd64 kernel on arm64
    • specify a CROSS_COMPILE for x86_64
  • 🌱 common_debian: introduce package_directories() for mkosi's PackageDirectories=
    • this allows flavors to add .deb's in directories as a local apt repo
    • .deb's can then be installed by name
    • mkosi handles the repo creation and usage directly (via apt-utils)
  • 🍀 builder: Dockerfile: add cross-arch libssl-dev and native apt-utils
    • cross libssl-dev needed for make bindeb-pkg to work cross-arch
    • apt-utils needed for mkosi's PackageDirectories=
  • 🌿 cli: expose stages (nee _stages) module
    • this skews package protection to allow flavors to reuse code
    • also expose function build_kernel_stage()
  • 🌳 flavors: introduce trixie-slim flavor, using captainos kernel
    • this one uses the captain-build-from-source kernel .deb
    • let's violate some package boundaries:
      • cli acrobatics: delegates to kernel build stage before initramfs build
      • impls package_directories() by calling kernel
  • 🍃 kernel: introduce --config for round-trip menuconfig / savedefconfig
    • interactive, handle when re-launching in Docker
    • just "Exit" to update a defconfig with no changes
    • eg uv run captain --verbose --arch amd64 kernel --config
  • 🌴 kernel: 6.18.y.amd64: defconfig standard
  • 🐸 kernel: 6.18.y.amd64: CONFIG_MODULE_COMPRESS_ZSTD=y
  • 🌵 kernel: 6.18.y.arm64: defconfig standard
  • 🌱 kernel: 6.18.y.arm64: defconfig: CONFIG_MODULE_COMPRESS_ZSTD=y
  • 🍀 gha: reintroduce kernel build jobs
    • using the Docker builder, so depend on that
    • abuse GHA caches and artifacts
    • the whole matrix will wait on kernel builds
      • but only a few will actually download and use the artifact
  • 🌿 gha: split matrix to add kernel job dependency for trixie-slim jobs
    • add gha builds for trixie-slim flavors (using captainos-kernel)
    • we've two kinds of build-captainos jobs:
      • ones that depend on kernel-build (trixie-slim)
      • ones that don't (all the others)
    • use YAML anchor trick to avoid duplicating 95% of code (envs: and steps: are defined only once)
    • matrix and needs (dependencies) are the only difference
    • artifact download is common but conditional on matrix values
  • 🌳 gha: make trixie-slim the default flavor
    • so it is the one included in the combined images
    • this does not change the CLI defaults, ofc
    • for trixie-slim, combined should depend on build-captainos-with-kernel
    • better names for matrix jobs
  • 🍃 gha: don't push OCI images for pull request workflows
    • (Docker) builder will end up being built multiple times for PR workflows, but such is life
      • it's also too huge for GHA artifact or GHA cache
    • don't push any captainos artifacts either (simple or combined)
      • also: only push those when building main branch
  • 🌴 cli: bring back qemu cli, with extra support for arm64 & UEFI/OVMF
    • arm64 qemu requires OVMF/AAVMF firmware (edk2) via a pflash
    • use q35 machine type for amd64 (it is still not a default)
    • add kvm (Linux) and hvf (Darwin) acceleration if present and matching host/target arch
    • add systemd.journald.forward_to_console=1 as default prefix kernel cmdline
    • remove audit=0 as cmdline prefix default
    • run with eg uv run captain --verbose --arch=amd64 --flavor-id=trixie-slim qemu -- tink_worker_image=... <...>
      • extra args after -- are passed directly as kernel cmdline
      • maybe restore option/env parsing with Click later (kept TODO'ed _TINK_PARAMS) for ergonomics
    • qemu: more systemd logging in default kernel cmdline
    • qemu: run x86 also under OVMF (UEFI), not BIOS emulation
      • this more accurately emulates real environment
        • real EFI implementation, with efivars etc
      • unify accel handling (accel only when host arch matches target arch)
        • but then it's the same across arches: hcf for Apple, kvm for Linux
      • refactor find_ovmf_firmware() as it's common
  • 🐸 kernel: hash defconfig + kernel.py code and use as cache key; clean output when cache missed
    • that way any changes to defconfig or kernel-building logic should force a new build
    • on new builds, clean up old artifacts so caches are kept clean (eg: GHA's)
  • 🌵 gha: drop DEFAULT_FLAVOR_ID; make publish-combined a matrix (for both trixie-slim and trixie-full)
    • so we've two combined images now, and no longer a default one
  • 🌱 timesyncd: retry connections every 2s
    • seems like timesyncd is interrupted by networking changes constantly during bootup
    • each change triggers a retry timeout, which is 30s by default
  • 🍀 util: debug: quote run() params with spaces or specials in them
    • handle capture=True case a bit better (shows invocation debug, but no ruler)
  • 🌿 flavors: flavor_packages() hierarchy, include_apt(), include_hwdb()
    • include_apt(): if true, includes a working apt install
    • include_hwdb(): if true, leaves hwdb data in
    • move acpid package to common_acpi flavor
    • also always include curl, pciutils, pv
  • 🌳 flavors: introduce trixie-genio for Armbian's linux-image-edge-genio
  • 🍃 gha: add trixie-genio build
  • 🌴 kernel: 6.18.y amd64: CONFIG_BE2NET=y (from kernel: enable be2net network driver for amd64 #59)
    • via uv run captain --arch amd64 kernel --config, then pick CONFIG_BE2NET
  • 🐸 docker: pass --load to docker buildx build
  • 🌵 release-publish: fix to use run_captain_in_builder()
  • 🌱 initramfs/iso: introduce content-hashing for idempotency
    • flavor can produce a hash of contents
    • incl static + templated files
    • does NOT include extratrees or packagedirs yet (kernel/tools)
    • does NOT clean up leftovers yet
  • 🍀 gha: set CAPTAIN_VERBOSE=1 & allow workflow_dispatch
  • 🌿 gha: add GHA caches for initramfs and iso
  • 🌳 tools: default to native mode (avoid pulling builder for cache hits)
  • 🍃 publish: more determinism
    • deterministic tar for dtb layer too
    • use epoch as created date, so manifests also hit
  • 🌴 flavors: common-debian: reduce postinst spurious debug logging
  • 🐸 captain: split mkosi.input from mkosi.output
    • tools and kernel are really inputs to mkosi, not outputs
  • 🌵 gha: split mkosi.input from mkosi.output
    • tools and kernel are really inputs to mkosi, not outputs
  • 🌱 publish: let flavor decide which files/dirs are published in OCI images
    • BaseFlavor:
      • list_arch_artifacts() handles vmlinuz, initramfs, and iso directly
        • delegates to overridable add_arch_dtb_artifacts()
          • defaults to including dtbs for aarch64
          • but not for trixie-slim (to keep it, well, "slim")
    • introduce artifacts.py OutputArchArtifactType and OutputArchArtifact
      • just to type-enforce
    • _collect_arch_artifacts() is dead, long live _checksum_files()
    • rework logic in oci._publish()
    • this is to prepare for extra per-flavor assets, eg "rpi eeprom firmware" for rpi flavor
  • 🍀 flavor: introduce BaseFlavor::post_mkosi_stage() and BaseFlavor::post_artifact_collect()
    • for custom stuff done after initramfs build / after artifact collection (mkosi.output/... -> out/)
  • 🌿 trixie-armbian-rpi: implement ready-to-go RPi firmware in firmware-rpi dir
    • this is targetting (eeprom-based) RPi Netboot (without u-boot)
    • implement list_arch_artifacts(), post_mkosi_stage(), post_artifact_collect()
  • 🌳 util: introduce symlink_relative()
    • with mixes Path from pathlib and os.path for non-subpaths
  • 🍃 trixie-armbian-rpi: include kernel8.img and initramfs8 symlinks
    • refactor to use util.symlink_relative()
  • 🌴 trixie-slim: bump kernel 6.18.22 -> 6.18.26 (copy.fail etc)
    • comment-change in mkosi.conf to force hash to change and thus all to rebuild
  • 🐸 common-debian: enable Networking for scripts; fix postinst docs and use mkosi-chroot
  • 🌵 release: rework into click Group; bring back pull and tag
    • publish is a release subcommand now
    • logging fixes, don't show locals, suppress Docker traces
    • TODO: BUILDAH_INSECURE etc
    • center on Config (release_ prefix), Docker repasses
    • drop git describe, always use v0.0.0-{sha}
  • 🌱 gha: adapt Release GHA Workflow
    • publish all flavors
    • last-minute tarball of directories (dtbs, firmware) for GH Release upload
    • bump actions, drop unused envs, etc
    • ci: don't fetch-depth:0 as we don't do git describe anymore
  • 🍀 captain: implement REGISTRY_INSECURE=1 env var for talking to insecure registries
    • nee BUILDAH_INSECURE, also used for skopeo
    • mostly for development vs registry:2
      • eg docker run -p 5001:5000 -it registry:2
      • and REGISTRY_INSECURE=1 uv run captain ... --registry 192.168.66.10:5001 publish
  • 🌿 captain: simple end-user customization via custom folder
    • allows for
      • custom/packages.txt: extra packages to be installed
      • custom/mkosi-postinst and custom/mkosi-finalize folders: extra scripts
      • custom/files: extra files in root filesystem
    • when rendering templates, force newline at the end of each
    • pass custom dir down to Docker
  • 🌳 docker: bind-mount Docker's config.json when launching Docker under GHA
    • so publish can use GHA-provided docker authentication vs ghcr.io
  • 🍃 custom: example customization possibilities (packages, scripts, extra files)
  • 🌴 docs: update Markdown documentation
  • 🐸 release: switch release default mode to docker
    • GHA has skopeo and buildah available in its default runners, but they're old versions
    • use Docker mode by default also simplifies end-user usage
  • 🌵 release: consolidate OCI metadata/annotations creation and add to manifests
    • makes browsing ghcr.io a bit easier
    • drop sha/tag from manifest metadata to up SHA-based reuse
  • 🌱 buildah: omit history for further determinism at the manifest level
    • otherwise, history between otherwise identical manifests differs for little reason
  • 🍀 buildah: strip digest annotation auto-added by buildah from (more determinism)
    • otherwise, history between otherwise identical manifests differs for little reason
  • 🌿 gha: ci: fix: avoid cache mis-hit due to unintended prefix match
    • eg rockchip64-* matches rockchip64-vendor
    • show sha256's after restore & before save
  • 🌳 captain: bump trixie-slim's kernel 6.18.26 -> 6.18.39
  • 🍃 trixie-meson64: use Armbian's oldlts instead of edge
    • edge is at 7.0.y; oldlts is at 6.12.y
    • after 6.18.y, meson64 with PCIe is really not stable
  • 🌴 common-armbian: enable hwdb & working apt
  • 🐸 flavors: move include_working_apt()'s apt package handling up to common-debian
  • 🌵 pyproject.toml: bump deps, loosen bounds, update uv.lock
  • 🌱 oci: recap release pull from image contents, not disk export_image() now returns the top-level entries (files and dirs) the pulled layers actually contained; pull() recaps from that instead of scanning output_dir with iterdir(), which listed stale on-disk files and dropped directory artifacts (DTBs) via its is_file() filter.
  • 🍀 ci: --drop-old-caches to keep only the freshly-built flavor hash initramfs/iso outputs live under //<flavor_hash>/, but the caches persist the whole mkosi.output/{initramfs,iso} tree. A restore-key (prefix) cache hit brings in the previous hash's dir, which then gets re-saved alongside the new one and accumulates forever. Add an opt-in --drop-old-caches flag (env CAPTAIN_DROP_OLD_CACHES) that prunes sibling hash dirs after a build, keeping only the current hash; wired into the CI flavor-build jobs via the shared build env. Default (local) behaviour is unchanged, so prior versions are kept.
  • 🌿 ci: resolve latest kernel & armbian versions in a prepare job Adds a 'captain prepare-versions' helper that resolves two dynamic tokens and prints them as name=value for $GITHUB_OUTPUT:
    • kernel_version: latest kernel.org point release of the configured branch (from releases.json), so the from-source kernel is never pinned; falls back to the hardcoded default off-CI.
    • armbian_version: a token derived from the armbian-next repo Release ETag, folded into armbian flavors' mkosi.conf (hence flavor_hash) so they rebuild when armbian publishes a newer kernel under the same package name — replacing the hand-edited 'force a cache miss' comment. The CI 'lint' job is renamed 'prepare' and now emits both as outputs; build jobs consume them via KERNEL_VERSION/ARMBIAN_VERSION env and fold them into the kernel/initramfs/iso cache keys so caches track versions. --kernel-version becomes a global option (shared by kernel + build), and the kernel save-gate now checks the correct cache-hit id. Assisted-By: Claude Opus 4.8
  • 🌳 kernel: enable CONFIG_HP_ILO=m

@rpardini
rpardini marked this pull request as ready for review May 7, 2026 14:52
@rpardini

rpardini commented May 7, 2026

Copy link
Copy Markdown
Member Author

Here's a full UART bootlog of a RaspberryPi 4b netboot into CaptainOS trixie-armbian-rpi flavor, which is small enough to be directly netboot-ed by the RPi EEPROM, and thus needs no u-boot nor iPXE intermediate.

RPi: BOOTLOADER release VERSION:e608a69d DATE: 2024/04/15 TIME: 14:12:14
BOOTMODE: 0x06 partition 0 build-ts BUILD_TIMESTAMP=1713186734 serial 196f8c53 boardrev d03114 stc 423743
PM_RSTS: 0x00001000
part 00000000 reset_info 00000000
uSD voltage 3.3V
Initialising SDRAM 'Micron' 32Gb x2 total-size: 64 Gbit 3200
DDR 3200 1 0 64 152

XHCI-STOP
xHC ver: 256 HCS: 05000420 fc000031 00e70004 HCC: 002841eb
USBSTS 11
xHC ver: 256 HCS: 05000420 fc000031 00e70004 HCC: 002841eb
xHC ports 5 slots 32 intrs 4
Boot mode: USB-MSD (04) order f21
USB2[1] 400202e1 connected
USB2 root HUB port 1 init
DEV [01:00] 2.16 000000:01 class 9 VID 2109 PID 3431
HUB init [01:00] 2.16 000000:01
USB3[2] 00021203 connected enabled
USB3 root HUB port 2 init
DEV [02:00] 3.00 000000:02 class 0 VID 174c PID 55aa
MSD device [02:00] 3.00 000000:02 conf 0 iface 0 ep 81#1024 02#1024
MSD [02:00] 3.00 000000:02 register MSD
XHCI-STOP
xHC ver: 256 HCS: 05000420 fc000031 00e70004 HCC: 002841eb
USBSTS 18
XHCI-STOP
xHC ver: 256 HCS: 05000420 fc000031 00e70004 HCC: 002841eb
USBSTS 19
xHC ver: 256 HCS: 05000420 fc000031 00e70004 HCC: 002841eb
xHC ports 5 slots 32 intrs 4
USB3[2] 000002b1 connected
USB2[1] 400202e1 connected
USB2 root HUB port 1 init
DEV [01:00] 2.16 000000:01 class 9 VID 2109 PID 3431
HUB init [01:00] 2.16 000000:01
USB3[2] 00281203 connected enabled
USB3 root HUB port 2 init
DEV [02:00] 3.00 000000:02 class 0 VID 174c PID 55aa
MSD device [02:00] 3.00 000000:02 conf 0 iface 0 ep 81#1024 02#1024
MSD [02:00] 3.00 000000:02 register MSD
MSD [02:00] 3.00 000000:02 LUN 0
MSD INQUIRY [02:00] 3.00 000000:02
MSD [02:00] 3.00 000000:02 lun 0 block-count 500118192 block-size 512
MBR: 0x00002000, 1048576 type: 0x0b
MBR: 0x00102000,499061391 type: 0x83
MBR: 0x00000000,       0 type: 0x00
MBR: 0x00000000,       0 type: 0x00
Trying partition: 0
type: 32 lba: 8192 oem: 'mkfs.fat' volume: ' RPICFG     '
rsc 32 fat-sectors 1024 c-count 130812 c-size 8
root dir cluster 2 sectors 0 entries 0
FAT32 clusters 130812
Trying partition: 0
type: 32 lba: 8192 oem: 'mkfs.fat' volume: ' RPICFG     '
rsc 32 fat-sectors 1024 c-count 130812 c-size 8
root dir cluster 2 sectors 0 entries 0
FAT32 clusters 130812
Firmware not found
ERROR: 4
Retry USB-MSD 1
USB MSD stopped. Timeout: 25 seconds
Boot mode: SD (01) order f2
SD HOST: 200000000 CTL0: 0x00800000 BUS: 400000 Hz actual: 390625 HZ div: 512 (256) status: 0x1fff0000 delay: 276
SD HOST: 200000000 CTL0: 0x00800f00 BUS: 400000 Hz actual: 390625 HZ div: 512 (256) status: 0x1fff0000 delay: 276
EMMC
SD retry 1 oc 0
SD HOST: 200000000 CTL0: 0x00800000 BUS: 400000 Hz actual: 390625 HZ div: 512 (256) status: 0x1fff0000 delay: 276
SD retry 2 oc 0
SD HOST: 200000000 CTL0: 0x00800000 BUS: 400000 Hz actual: 390625 HZ div: 512 (256) status: 0x1fff0000 delay: 276
SDV1
SD CMD: 0x371a0010 (55) 0x0 0x1fff0001
Failed to open device: 'sdcard' (cmd 371a0010 status 1fff0001)
Retry SD 1
SD HOST: 200000000 CTL0: 0x00800000 BUS: 400000 Hz actual: 390625 HZ div: 512 (256) status: 0x1fff0000 delay: 276
SD HOST: 200000000 CTL0: 0x00800f00 BUS: 400000 Hz actual: 390625 HZ div: 512 (256) status: 0x1fff0000 delay: 276
EMMC
SD retry 1 oc 0
SD HOST: 200000000 CTL0: 0x00800000 BUS: 400000 Hz actual: 390625 HZ div: 512 (256) status: 0x1fff0000 delay: 276
SD retry 2 oc 0
SD HOST: 200000000 CTL0: 0x00800000 BUS: 400000 Hz actual: 390625 HZ div: 512 (256) status: 0x1fff0000 delay: 276
SDV1
SD CMD: 0x371a0010 (55) 0x0 0x1fff0001
Failed to open device: 'sdcard' (cmd 371a0010 status 1fff0001)
Boot mode: NETWORK (02) order f
GENET: RESET_PHY 0
CTL 1140 PHY ID 600d 84a2
MII_CONTROL 1140
MII APD 0001 SCTL3 0001 IDDQ 0000

NETWORK: dc:a6:32:ec:8b:49 wait for link TFTP: 0.0.0.0
LINK STATUS: speed: 1000 full duplex
Link ready
GENET START: 64 16 32
GENET: UMAC_START 0xdca632ec 0x8b490000
RX: 0 IP: 0 IPV4: 0 MAC: 0 UDP: 0 UDP RECV: 0 IP_CSUM_ERR: 0 UDP_CSUM_ERR: 0
DHCP src: ba:27:c0:e8:eb:c5 192.168.66.1
YI_ADDR 192.168.66.20
SI_ADDR 192.168.66.171
OPTIONS:-
	op: 53 len:   1 DHCP recv OFFER (2) expect OFFER
	op: 54 len:   4 192.168.66.1
	op: 51 len:   4
	op: 67 len:   9
	op: 58 len:   4
	op: 59 len:   4
	op:  1 len:   4 255.255.255.0
	op: 28 len:   4 192.168.66.255
	op:  3 len:   4 192.168.66.1
	op: 66 len:  15 192.168.66.171[66]: 192.168.66.171

NET 192.168.66.20 255.255.255.0 gw 0.0.0.0 tftp 192.168.66.171
ARP 192.168.66.171 8e:b4:90:97:32:30
DHCP src: ba:27:c0:e8:eb:c5 192.168.66.1
YI_ADDR 192.168.66.20
SI_ADDR 192.168.66.171
OPTIONS:-
	op: 53 len:   1 DHCP recv ACK (5) expect ACK
	op: 54 len:   4 192.168.66.1
	op: 51 len:   4
	op: 58 len:   4
	op: 59 len:   4
	op:  1 len:   4 255.255.255.0
	op: 28 len:   4 192.168.66.255
	op:  3 len:   4 192.168.66.1
	op:  6 len:   4 192.168.66.1
	op: 15 len:   9
	op: 12 len:  11
	op: 42 len:   4
	op: 66 len:  15 192.168.66.171[66]: 192.168.66.171

NET 192.168.66.20 255.255.255.0 gw 0.0.0.0 tftp 192.168.66.171
RX: 96 IP: 0 IPV4: 39 MAC: 27 UDP: 13 UDP RECV: 2 IP_CSUM_ERR: 0 UDP_CSUM_ERR: 0
TFTP_GET: 8e:b4:90:97:32:30 192.168.66.171 196f8c53/start4.elf

RX: 96 IP: 0 IPV4: 39 MAC: 27 UDP: 13 UDP RECV: 2 IP_CSUM_ERR: 0 UDP_CSUM_ERR: 0
RX: 97 IP: 0 IPV4: 40 MAC: 28 UDP: 14 UDP RECV: 3 IP_CSUM_ERR: 0 UDP_CSUM_ERR: 0
TFTP_GET: 8e:b4:90:97:32:30 192.168.66.171 196f8c53/config.txt

RX: 98 IP: 0 IPV4: 41 MAC: 29 UDP: 15 UDP RECV: 3 IP_CSUM_ERR: 0 UDP_CSUM_ERR: 0
TFTP: complete 347
RX: 100 IP: 0 IPV4: 43 MAC: 31 UDP: 17 UDP RECV: 5 IP_CSUM_ERR: 0 UDP_CSUM_ERR: 0
Read 196f8c53/config.txt bytes      347 hnd 0x0
TFTP_GET: 8e:b4:90:97:32:30 192.168.66.171 196f8c53/pieeprom.sig

RX: 100 IP: 0 IPV4: 43 MAC: 31 UDP: 17 UDP RECV: 5 IP_CSUM_ERR: 0 UDP_CSUM_ERR: 0
TFTP 1: file [pieeprom.sig] unknown: file does not exist
RX: 101 IP: 0 IPV4: 44 MAC: 32 UDP: 18 UDP RECV: 6 IP_CSUM_ERR: 0 UDP_CSUM_ERR: 0
Read 196f8c53/pieeprom.upd failed
TFTP_GET: 8e:b4:90:97:32:30 192.168.66.171 196f8c53/recover4.elf

RX: 101 IP: 0 IPV4: 44 MAC: 32 UDP: 18 UDP RECV: 6 IP_CSUM_ERR: 0 UDP_CSUM_ERR: 0
TFTP 1: file [recover4.elf] unknown: file does not exist
RX: 102 IP: 0 IPV4: 45 MAC: 33 UDP: 19 UDP RECV: 7 IP_CSUM_ERR: 0 UDP_CSUM_ERR: 0
Read 196f8c53/recover4.elf failed
TFTP_GET: 8e:b4:90:97:32:30 192.168.66.171 196f8c53/recovery.elf

RX: 102 IP: 0 IPV4: 45 MAC: 33 UDP: 19 UDP RECV: 7 IP_CSUM_ERR: 0 UDP_CSUM_ERR: 0
TFTP 1: file [recovery.elf] unknown: file does not exist
RX: 103 IP: 0 IPV4: 46 MAC: 34 UDP: 20 UDP RECV: 8 IP_CSUM_ERR: 0 UDP_CSUM_ERR: 0
Read 196f8c53/recovery.elf failed
TFTP_GET: 8e:b4:90:97:32:30 192.168.66.171 196f8c53/start4.elf

RX: 103 IP: 0 IPV4: 46 MAC: 34 UDP: 20 UDP RECV: 8 IP_CSUM_ERR: 0 UDP_CSUM_ERR: 0
TFTP: complete 2303680
RX: 141 IP: 0 IPV4: 83 MAC: 71 UDP: 55 UDP RECV: 43 IP_CSUM_ERR: 0 UDP_CSUM_ERR: 0
Read 196f8c53/start4.elf bytes  2303680 hnd 0x0
TFTP_GET: 8e:b4:90:97:32:30 192.168.66.171 196f8c53/fixup4.dat

RX: 143 IP: 0 IPV4: 83 MAC: 71 UDP: 55 UDP RECV: 43 IP_CSUM_ERR: 0 UDP_CSUM_ERR: 0
TFTP: complete 5498
RX: 148 IP: 0 IPV4: 88 MAC: 76 UDP: 60 UDP RECV: 48 IP_CSUM_ERR: 0 UDP_CSUM_ERR: 0
Read 196f8c53/fixup4.dat bytes     5498 hnd 0x0
0x00d03114 0x00000000 0x00003fff
MEM GPU: 64 ARM: 960 TOTAL: 1024
Firmware: ce768004a1c9657e60b33b0cc413d8e07320cb0d Feb 11 2026 18:28:41
Starting start4.elf @ 0xfec00200 partition -1
Stopping network
RX: 148 IP: 0 IPV4: 88 MAC: 76 UDP: 60 UDP RECV: 48 IP_CSUM_ERR: 0 UDP_CSUM_ERR: 0
RX: 148 IP: 0 IPV4: 88 MAC: 76 UDP: 60 UDP RECV: 48 IP_CSUM_ERR: 0 UDP_CSUM_ERR: 0
GENET STOP: 0
XHCI-STOP
xHC ver: 256 HCS: 05000420 fc000031 00e70004 HCC: 002841eb
USBSTS 18
+

MESS:00:00:44.724588:0: genet: LINK STATUS: speed: 1000 full duplex
MESS:00:00:44.728566:0: genet: GENET START: 128 8 8
MESS:00:00:44.734446:0: genet: GENET: UMAC_START 0xdca632ec 0x8b490000
MESS:00:00:44.749576:0: brfs: File read: /mfs/sd/config.txt
MESS:00:00:44.752398:0: board: boardrev d03114 otp d03114
MESS:00:00:44.757232:0: brfs: File read: 347 bytes
MESS:00:00:44.784870:0: HDMI0:EDID error reading EDID block 0 attempt 0
MESS:00:00:44.789373:0: HDMI0:EDID giving up on reading EDID block 0
MESS:00:00:44.806520:0: HDMI1:EDID error reading EDID block 0 attempt 0
MESS:00:00:44.811028:0: HDMI1:EDID giving up on reading EDID block 0
MESS:00:00:44.822661:0: brfs: File read: /mfs/sd/config.txt
MESS:00:00:45.322067:0: gpioman: gpioman_get_pin_num: pin DISPLAY_DSI_PORT not defined
MESS:00:00:45.327622:0: gpioman: gpioman_get_pin_num: pin DISPLAY_DSI_PORT not defined
MESS:00:00:45.336659:0: *** Restart logging
MESS:00:00:45.338431:0: brfs: File read: 347 bytes
MESS:00:00:45.351646:0: hdmi: HDMI0:EDID error reading EDID block 0 attempt 0
MESS:00:00:45.356669:0: hdmi: HDMI0:EDID giving up on reading EDID block 0
MESS:00:00:45.367294:0: hdmi: HDMI0:EDID error reading EDID block 0 attempt 0
MESS:00:00:45.372323:0: hdmi: HDMI0:EDID giving up on reading EDID block 0
MESS:00:00:45.391654:0: hdmi: HDMI1:EDID error reading EDID block 0 attempt 0
MESS:00:00:45.396680:0: hdmi: HDMI1:EDID giving up on reading EDID block 0
MESS:00:00:45.408275:0: hdmi: HDMI1:EDID error reading EDID block 0 attempt 0
MESS:00:00:45.418279:0: hdmi: HDMI1:EDID giving up on reading EDID block 0
MESS:00:00:45.432311:0: HDMI0: hdmi_pixel_encoding: 300000000
MESS:00:00:45.434945:0: HDMI1: hdmi_pixel_encoding: 300000000
MESS:00:01:07.942780:0: brfs: File read: /mfs/sd/initramfs8
MESS:00:01:07.945288:0: Loaded 'initramfs8' to 0x0 size 0x60cf6a9
MESS:00:01:08.118996:0: initramfs (initramfs8) loaded to 0x28f30000 (size 0x60cf6a9)
MESS:00:01:08.133445:0: dtb_file 'bcm2711-rpi-4-b.dtb'
MESS:00:01:08.135517:0: brfs: File read: 101512873 bytes
MESS:00:01:08.155887:0: brfs: File read: /mfs/sd/bcm2711-rpi-4-b.dtb
MESS:00:01:08.159171:0: Loaded 'bcm2711-rpi-4-b.dtb' to 0x100 size 0xdc57
MESS:00:01:08.200189:0: brfs: File read: 56407 bytes
MESS:00:01:08.267407:0: brfs: File read: /mfs/sd/config.txt
MESS:00:01:08.270104:0: brfs: File read: 347 bytes
MESS:00:01:08.281139:0: brfs: File read: /mfs/sd/overlays/disable-bt.dtbo
MESS:00:01:08.322905:0: Loaded overlay 'disable-bt'
MESS:00:01:08.408791:0: brfs: File read: 1073 bytes
MESS:00:01:08.414593:0: brfs: File read: /mfs/sd/overlays/disable-wifi.dtbo
MESS:00:01:08.440913:0: Loaded overlay 'disable-wifi'
MESS:00:01:08.476860:0: brfs: File read: 387 bytes
MESS:00:01:08.485072:0: brfs: File read: /mfs/sd/overlays/vc4-kms-v3d.dtbo
MESS:00:01:08.501931:0: dterror: can't find symbol 'i2c2'
MESS:00:01:08.504264:0: dterror: Failed to resolve overlay 'vc4-kms-v3d'
MESS:00:01:08.510780:0: brfs: File read: 2760 bytes
MESS:00:01:08.525069:0: brfs: File read: /mfs/sd/overlays/vc4-kms-v3d-pi4.dtbo
MESS:00:01:08.688014:0: Loaded overlay 'vc4-kms-v3d-pi4'
MESS:00:01:08.690254:0: dtparam: noaudio=true
MESS:00:01:09.154607:0: brfs: File read: 3913 bytes
MESS:00:01:09.162889:0: brfs: File read: /mfs/sd/cmdline.txt
MESS:00:01:09.165658:0: Read command line from file 'cmdline.txt':
MESS:00:01:09.171402:0: 'tink_worker_image=ghcr.io/rpardini/tinkerbell/tink-agent:latest facility= syslog_host=syslog.app.192.168.66.171.nip.io grpc_authority=tinkgrpc.app.192.168.66.171.nip.io:42113 tinkerbell_tls=false tinkerbell_insecure_tls=false w
MESS:00:01:09.544211:0: brfs: File read: 457 bytes
MESS:00:01:15.915679:0: brfs: File read: /mfs/sd/kernel8.img
MESS:00:01:15.918276:0: Loaded 'kernel8.img' to 0x200000 size 0x1cffa00
MESS:00:01:15.924630:0: Device tree loaded to 0x28f21b00 (size 0xe454)
MESS:00:01:15.935956:0: uart: Set PL011 baud rate to 103448.300000 Hz
MESS:00:01:15.942196:0: uart: Baud rate change done...
MESS:00:01:15.944218:0: uart: Baud rate change done...
MESS:00:01:15.961478:0: genet: GENET STOP: 0
MESS:00:01:15.962659:0: Watchdog stopped
MESS:00:01:15.966280:0: arm_loader: Starting ARM with 960MB
[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd083]
[    0.000000] Linux version 6.18.26-current-bcm2711 (build@armbian) (aarch64-linux-gnu-gcc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0, GNU ld (GNU Binutils for Ubuntu) 2.42) #63 SMP PREEMPT Sun May  3 14:57:52 UTC 2026
[    0.000000] KASLR enabled
[    0.000000] random: crng init done
[    0.000000] Machine model: Raspberry Pi 4 Model B Rev 1.4
[    0.000000] efi: UEFI not found.
[    0.000000] Reserved memory: created CMA memory pool at 0x0000000008e00000, size 512 MiB
[    0.000000] OF: reserved mem: initialized node linux,cma, compatible id shared-dma-pool
[    0.000000] OF: reserved mem: 0x0000000008e00000..0x0000000028dfffff (524288 KiB) map reusable linux,cma
[    0.000000] OF: reserved mem: 0x000000003ef745a0..0x000000003ef745e7 (0 KiB) nomap non-reusable nvram@0
[    0.000000] OF: reserved mem: 0x000000003ef74160..0x000000003ef7455f (1 KiB) nomap non-reusable nvram@1
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000000000000-0x000000003fffffff]
[    0.000000]   DMA32    [mem 0x0000000040000000-0x00000000ffffffff]
[    0.000000]   Normal   [mem 0x0000000100000000-0x00000001ffffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x000000003bffffff]
[    0.000000]   node   0: [mem 0x0000000040000000-0x00000000fbffffff]
[    0.000000]   node   0: [mem 0x0000000100000000-0x00000001ffffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x00000001ffffffff]
[    0.000000] On node 0, zone DMA32: 16384 pages in unavailable ranges
[    0.000000] On node 0, zone Normal: 16384 pages in unavailable ranges
[    0.000000] percpu: Embedded 33 pages/cpu s96088 r8192 d30888 u135168
[    0.000000] Detected PIPT I-cache on CPU0
[    0.000000] CPU features: detected: Spectre-v2
[    0.000000] CPU features: detected: Spectre-v3a
[    0.000000] CPU features: detected: Spectre-v4
[    0.000000] CPU features: detected: Spectre-BHB
[    0.000000] CPU features: kernel page table isolation forced ON by KASLR
[    0.000000] CPU features: detected: Kernel page table isolation (KPTI)
[    0.000000] CPU features: detected: ARM erratum 1742098
[    0.000000] CPU features: detected: ARM errata 1165522, 1319367, or 1530923
[    0.000000] alternatives: applying boot alternatives
[    0.000000] Kernel command line: coherent_pool=1M 8250.nr_uarts=1 snd_bcm2835.enable_headphones=0 cgroup_disable=memory numa_policy=interleave nvme.max_host_mem_size_mb=32 snd_bcm2835.enable_hdmi=0 video=HDMI-A-1:640x480M@60D,margin_left=24,margin_right=24,margin_top=16,margin_bottom=16 video=HDMI-A-2:640x480M@60D,margin_left=24,margin_right=24,margin_top=16,margin_bottom=16 smsc95xx.macaddr=DC:A6:32:EC:8B:49 vc_mem.mem_base=0x3ec00000 vc_mem.mem_size=0x40000000  tink_worker_image=ghcr.io/rpardini/tinkerbell/tink-agent:latest facility= syslog_host=syslog.app.192.168.66.171.nip.io grpc_authority=tinkgrpc.app.192.168.66.171.nip.io:42113 tinkerbell_tls=false tinkerbell_insecure_tls=false worker_id=rpi hw_addr=dc:a6:32:ec:8b:49  modules=loop,squashfs,sd-mod,usb-storage initrd=captain-armbian-rpi/initramfs-trixie-armbian-rpi-aarch64 systemd.journald.forward_to_console=1 console=tty1 console=ttyAMA0,115200 loglevel=7
[    0.000000] cgroup: Disabling memory control group subsystem
[    0.000000] Unknown kernel command line parameters "numa_policy=interleave tink_worker_image=ghcr.io/rpardini/tinkerbell/tink-agent:latest facility= syslog_host=syslog.app.192.168.66.171.nip.io grpc_authority=tinkgrpc.app.192.168.66.171.nip.io:42113 tinkerbell_tls=false tinkerbell_insecure_tls=false worker_id=rpi hw_addr=dc:a6:32:ec:8b:49 modules=loop,squashfs,sd-mod,usb-storage", will be p
** replaying previous printk message **
[    0.000000] Unknown kernel command line parameters "numa_policy=interleave tink_worker_image=ghcr.io/rpardini/tinkerbell/tink-agent:latest facility= syslog_host=syslog.app.192.168.66.171.nip.io grpc_authority=tinkgrpc.app.192.168.66.171.nip.io:42113 tinkerbell_tls=false tinkerbell_insecure_tls=false worker_id=rpi hw_addr=dc:a6:32:ec:8b:49 modules=loop,squashfs,sd-mod,usb-storage", will be passed to user space.
[    0.000000] printk: log buffer data + meta data: 131072 + 458752 = 589824 bytes
[    0.000000] Dentry cache hash table entries: 1048576 (order: 11, 8388608 bytes, linear)
[    0.000000] Inode-cache hash table entries: 524288 (order: 10, 4194304 bytes, linear)
[    0.000000] software IO TLB: area num 4.
[    0.000000] software IO TLB: mapped [mem 0x0000000038000000-0x000000003c000000] (64MB)
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 2064384
[    0.000000] mem auto-init: stack:all(zero), heap alloc:off, heap free:off
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] ftrace: allocating 43194 entries in 170 pages
[    0.000000] ftrace: allocated 170 pages with 4 groups
[    0.000000] rcu: Preemptible hierarchical RCU implementation.
[    0.000000] rcu: 	RCU event tracing is enabled.
[    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=4.
[    0.000000] 	Trampoline variant of Tasks RCU enabled.
[    0.000000] 	Rude variant of Tasks RCU enabled.
[    0.000000] 	Tracing variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[    0.000000] RCU Tasks: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
[    0.000000] RCU Tasks Rude: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
[    0.000000] RCU Tasks Trace: Setting shift to 2 and lim to 1 rcu_task_cb_adjust=1 rcu_task_cpu_ids=4.
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] Root IRQ handler: gic_handle_irq
[    0.000000] GIC: Using split EOI/Deactivate mode
[    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
[    0.000000] arch_timer: cp15 timer running at 54.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0xc743ce346, max_idle_ns: 440795203123 ns
[    0.000000] sched_clock: 56 bits at 54MHz, resolution 18ns, wraps every 4398046511102ns
[    0.000155] Console: colour dummy device 80x25
[    0.000166] printk: legacy console [tty1] enabled
[    0.000472] Calibrating delay loop (skipped), value calculated using timer frequency.. 108.00 BogoMIPS (lpj=216000)
[    0.000488] pid_max: default: 32768 minimum: 301
[    0.000566] LSM: initializing lsm=capability
[    0.000696] Mount-cache hash table entries: 16384 (order: 5, 131072 bytes, linear)
[    0.000752] Mountpoint-cache hash table entries: 16384 (order: 5, 131072 bytes, linear)
[    0.002399] rcu: Hierarchical SRCU implementation.
[    0.002421] rcu: 	Max phase no-delay instances is 1000.
[    0.002602] Timer migration: 1 hierarchy levels; 8 children per group; 1 crossnode level
[    0.003262] EFI services will not be available.
[    0.003462] smp: Bringing up secondary CPUs ...
[    0.003885] Detected PIPT I-cache on CPU1
[    0.003982] CPU1: Booted secondary processor 0x0000000001 [0x410fd083]
[    0.004497] Detected PIPT I-cache on CPU2
[    0.004556] CPU2: Booted secondary processor 0x0000000002 [0x410fd083]
[    0.004983] Detected PIPT I-cache on CPU3
[    0.005043] CPU3: Booted secondary processor 0x0000000003 [0x410fd083]
[    0.005110] smp: Brought up 1 node, 4 CPUs
[    0.005143] SMP: Total of 4 processors activated.
[    0.005150] CPU: All CPU(s) started at EL2
[    0.005166] CPU features: detected: 32-bit EL0 Support
[    0.005173] CPU features: detected: 32-bit EL1 Support
[    0.005181] CPU features: detected: CRC32 instructions
[    0.005191] CPU features: detected: PMUv3
[    0.005232] alternatives: applying system-wide alternatives
[    0.005997] Memory: 7371624K/8257536K available (13824K kernel code, 2046K rwdata, 8624K rodata, 5056K init, 528K bss, 356248K reserved, 524288K cma-reserved)
[    0.006957] devtmpfs: initialized
[    0.011547] Enabled cp15_barrier support
[    0.011582] Enabled setend support
[    0.011873] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.011906] posixtimers hash table entries: 2048 (order: 3, 32768 bytes, linear)
[    0.012054] futex hash table entries: 1024 (65536 bytes on 1 NUMA nodes, total 64 KiB, linear).
[    0.018895] 2G module region forced by RANDOMIZE_MODULE_REGION_FULL
[    0.018929] 0 pages in range for non-PLT usage
[    0.018933] 516704 pages in range for PLT usage
[    0.019112] pinctrl core: initialized pinctrl subsystem
[    0.019496] DMI not present or invalid.
[    0.021072] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.021754] DMA: preallocated 1024 KiB GFP_KERNEL pool for atomic allocations
[    0.021853] DMA: preallocated 1024 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[    0.022155] DMA: preallocated 1024 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.022190] audit: initializing netlink subsys (disabled)
[    0.022336] audit: type=2000 audit(0.020:1): state=initialized audit_enabled=0 res=1
[    0.022561] thermal_sys: Registered thermal governor 'step_wise'
[    0.022593] cpuidle: using governor menu
[    0.022705] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    0.022779] ASID allocator initialised with 32768 entries
[    0.023179] Serial: AMBA PL011 UART driver
[    0.027208] /soc/interrupt-controller@40041000: Fixed dependency cycle(s) with /soc/interrupt-controller@40041000
[    0.028088] bcm2835-mbox fe00b880.mailbox: mailbox enabled
[    0.040149] raspberrypi-firmware soc:firmware: Attached to firmware from 2026-02-11T18:28:41, variant start
[    0.044150] raspberrypi-firmware soc:firmware: Firmware hash is ce768004a1c9657e60b33b0cc413d8e07320cb0d
[    0.050437] /scb/pcie@7d500000: Fixed dependency cycle(s) with /scb/pcie@7d500000
[    0.050630] /scb/pcie@7d500000: Fixed dependency cycle(s) with /scb/pcie@7d500000
[    0.052948] HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages
[    0.052968] HugeTLB: 0 KiB vmemmap can be freed for a 1.00 GiB page
[    0.052976] HugeTLB: registered 32.0 MiB page size, pre-allocated 0 pages
[    0.052984] HugeTLB: 0 KiB vmemmap can be freed for a 32.0 MiB page
[    0.052991] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
[    0.052998] HugeTLB: 0 KiB vmemmap can be freed for a 2.00 MiB page
[    0.053006] HugeTLB: registered 64.0 KiB page size, pre-allocated 0 pages
[    0.053013] HugeTLB: 0 KiB vmemmap can be freed for a 64.0 KiB page
[    0.054095] bcm2835-dma fe007000.dma-controller: DMA legacy API manager, dmachans=0x1
[    0.055218] iommu: Default domain type: Translated
[    0.055230] iommu: DMA domain TLB invalidation policy: strict mode
[    0.056243] SCSI subsystem initialized
[    0.056348] usbcore: registered new interface driver usbfs
[    0.056372] usbcore: registered new interface driver hub
[    0.056404] usbcore: registered new device driver usb
[    0.056677] pps_core: LinuxPPS API ver. 1 registered
[    0.056686] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.056702] PTP clock support registered
[    0.057372] vgaarb: loaded
[    0.057640] clocksource: Switched to clocksource arch_sys_counter
[    0.057912] VFS: Disk quotas dquot_6.6.0
[    0.057932] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.061984] NET: Registered PF_INET protocol family
[    0.062434] IP idents hash table entries: 131072 (order: 8, 1048576 bytes, linear)
[    0.086534] tcp_listen_portaddr_hash hash table entries: 4096 (order: 4, 65536 bytes, linear)
[    0.086585] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[    0.086641] TCP established hash table entries: 65536 (order: 7, 524288 bytes, linear)
[    0.086845] TCP bind hash table entries: 65536 (order: 9, 2097152 bytes, linear)
[    0.088982] TCP: Hash tables configured (established 65536 bind 65536)
[    0.089135] UDP hash table entries: 4096 (order: 6, 262144 bytes, linear)
[    0.089547] UDP-Lite hash table entries: 4096 (order: 6, 262144 bytes, linear)
[    0.090145] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    0.090204] PCI: CLS 0 bytes, default 64
[    0.090446] Trying to unpack rootfs image as initramfs...
[    0.096563] kvm [1]: nv: 568 coarse grained trap handlers
[    0.096869] kvm [1]: IPA Size Limit: 44 bits
[    0.097772] kvm [1]: vgic interrupt IRQ9
[    0.097830] kvm [1]: Hyp nVHE mode initialized successfully
[    0.102590] Initialise system trusted keyrings
[    0.102849] workingset: timestamp_bits=46 max_order=21 bucket_order=0
[    0.103710] Key type asymmetric registered
[    0.103732] Asymmetric key parser 'x509' registered
[    0.103774] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 246)
[    0.103958] io scheduler mq-deadline registered
[    0.103972] io scheduler kyber registered
[    0.104873] irq_brcmstb_l2: registered L2 intc (/soc/interrupt-controller@7ef00100, parent irq: 23)
[    0.107266] pinctrl-bcm2835 fe200000.gpio: GPIO_OUT persistence: yes
[    3.144230] Freeing initrd memory: 99132K
[    3.147975] ledtrig-cpu: registered to indicate activity on CPUs
[    3.149879] brcm-pcie fd500000.pcie: host bridge /scb/pcie@7d500000 ranges:
[    3.149959] brcm-pcie fd500000.pcie:      MEM 0x0600000000..0x063fffffff -> 0x00c0000000
[    3.149996] brcm-pcie fd500000.pcie:   IB MEM 0x0000000000..0x00bfffffff -> 0x0400000000
[    3.151350] brcm-pcie fd500000.pcie: PCI host bridge to bus 0000:00
[    3.151416] pci_bus 0000:00: root bus resource [bus 00-ff]
[    3.151431] pci_bus 0000:00: root bus resource [mem 0x600000000-0x63fffffff] (bus address [0xc0000000-0xffffffff])
[    3.151584] pci 0000:00:00.0: [14e4:2711] type 01 class 0x060400 PCIe Root Port
[    3.151630] pci 0000:00:00.0: PCI bridge to [bus 00]
[    3.151650] pci 0000:00:00.0:   bridge window [mem 0x638000000-0x6380fffff]
[    3.151755] pci 0000:00:00.0: PME# supported from D0 D3hot
[    3.153608] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[    3.153828] pci_bus 0000:01: supply vpcie3v3 not found, using dummy regulator
[    3.153919] pci_bus 0000:01: supply vpcie3v3aux not found, using dummy regulator
[    3.153954] pci_bus 0000:01: supply vpcie12v not found, using dummy regulator
[    3.257658] brcm-pcie fd500000.pcie: clkreq-mode set to default
[    3.259731] brcm-pcie fd500000.pcie: link up, 5.0 GT/s PCIe x1 (SSC)
[    3.259846] pci 0000:01:00.0: [1106:3483] type 00 class 0x0c0330 PCIe Endpoint
[    3.259921] pci 0000:01:00.0: BAR 0 [mem 0x00000000-0x00000fff 64bit]
[    3.259969] pci 0000:01:00.0: ASPM: VL805 fixup applied
[    3.260038] pci 0000:01:00.0: PME# supported from D0 D3hot
[    3.265653] pci 0000:01:00.0: ASPM: default states L0s L1
[    3.265678] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01
[    3.265704] pci 0000:00:00.0: bridge window [mem 0x600000000-0x6000fffff]: assigned
[    3.265718] pci 0000:01:00.0: BAR 0 [mem 0x600000000-0x600000fff 64bit]: assigned
[    3.265741] pci 0000:00:00.0: PCI bridge to [bus 01]
[    3.265752] pci 0000:00:00.0:   bridge window [mem 0x600000000-0x6000fffff]
[    3.265767] pci_bus 0000:00: resource 4 [mem 0x600000000-0x63fffffff]
[    3.265776] pci_bus 0000:01: resource 1 [mem 0x600000000-0x6000fffff]
[    3.265998] pcieport 0000:00:00.0: enabling device (0000 -> 0002)
[    3.266101] pcieport 0000:00:00.0: PME: Signaling with IRQ 27
[    3.266299] pcieport 0000:00:00.0: AER: enabled with IRQ 27
[    3.267043] simple-framebuffer 3eaaa000.framebuffer: framebuffer at 0x3eaaa000, 0x103000 bytes
[    3.267060] simple-framebuffer 3eaaa000.framebuffer: format=a8r8g8b8, mode=592x448x32, linelength=2368
[    3.267707] Console: switching to colour frame buffer device 74x28
[    3.268255] simple-framebuffer 3eaaa000.framebuffer: fb0: simplefb registered!
[    3.289986] Serial: 8250/16550 driver, 1 ports, IRQ sharing enabled
[    3.291664] iproc-rng200 fe104000.rng: hwrng registered
[    3.292226] vc-mem: phys_addr:0x00000000 mem_base=0x3ec00000 mem_size:0x40000000(1024 MiB)
[    3.298075] brd: module loaded
[    3.301349] loop: module loaded
[    3.302266] Loading iSCSI transport class v2.0-870.
[    3.304709] bcmgenet fd580000.ethernet: GENET 5.0 EPHY: 0x0000
[    3.497698] unimac-mdio unimac-mdio.-19: Broadcom UniMAC MDIO bus
[    3.498748] usbcore: registered new interface driver lan78xx
[    3.499150] usbcore: registered new interface driver smsc95xx
[    3.591288] xhci_hcd 0000:01:00.0: xHCI Host Controller
[    3.591682] xhci_hcd 0000:01:00.0: new USB bus registered, assigned bus number 1
[    3.593705] xhci_hcd 0000:01:00.0: hcc params 0x002841eb hci version 0x100 quirks 0x0300240000000890
[    3.595107] xhci_hcd 0000:01:00.0: xHCI Host Controller
[    3.595501] xhci_hcd 0000:01:00.0: new USB bus registered, assigned bus number 2
[    3.596247] xhci_hcd 0000:01:00.0: Host supports USB 3.0 SuperSpeed
[    3.596808] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002, bcdDevice= 6.18
[    3.597534] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    3.598275] usb usb1: Product: xHCI Host Controller
[    3.598640] usb usb1: Manufacturer: Linux 6.18.26-current-bcm2711 xhci-hcd
[    3.599337] usb usb1: SerialNumber: 0000:01:00.0
[    3.600012] hub 1-0:1.0: USB hub found
[    3.600436] hub 1-0:1.0: 1 port detected
[    3.601230] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003, bcdDevice= 6.18
[    3.601972] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    3.602742] usb usb2: Product: xHCI Host Controller
[    3.603143] usb usb2: Manufacturer: Linux 6.18.26-current-bcm2711 xhci-hcd
[    3.603906] usb usb2: SerialNumber: 0000:01:00.0
[    3.604514] hub 2-0:1.0: USB hub found
[    3.604949] hub 2-0:1.0: 4 ports detected
[    3.606087] dwc_otg: version 3.00a 10-AUG-2012 (platform bus)
[    3.606834] usbcore: registered new interface driver uas
[    3.607239] usbcore: registered new interface driver usb-storage
[    3.607770] mousedev: PS/2 mouse device common for all mice
[    3.610499] sdhci: Secure Digital Host Controller Interface driver
[    3.610886] sdhci: Copyright(c) Pierre Ossman
[    3.611442] sdhci-pltfm: SDHCI platform and OF driver helper
[    3.612222] hid: raw HID events driver (C) Jiri Kosina
[    3.612652] usbcore: registered new interface driver usbhid
[    3.613016] usbhid: USB HID core driver
[    3.617097] hw perfevents: enabled with armv8_cortex_a72 PMU driver, 7 (0,8000003f) counters available
[    3.619117] NET: Registered PF_PACKET protocol family
[    3.619683] Key type dns_resolver registered
[    3.632418] registered taskstats version 1
[    3.633118] Loading compiled-in X.509 certificates
[    3.637777] zswap: loaded using pool zstd
[    3.638303] Key type .fscrypt registered
[    3.638665] Key type fscrypt-provisioning registered
[    3.682472] Key type encrypted registered
[    3.689569] bcm2835-wdt bcm2835-wdt: Broadcom BCM2835 watchdog timer
[    3.691037] bcm2835-power bcm2835-power: Broadcom BCM2835 power domains driver
[    3.692006] uart-pl011 fe201000.serial: there is not valid maps for state default
[    3.693069] uart-pl011 fe201000.serial: cts_event_workaround enabled
[    3.693768] fe201000.serial: ttyAMA0 at MMIO 0xfe201000 (irq = 39, base_baud = 0) is a PL011 rev3
[    3.696832] printk: console [ttyAMA0] enabled
[    3.703498] of_cfs_init
[    3.703996] of_cfs_init: OK
[    3.718702] clk: Disabling unused clocks
[    3.723171] PM: genpd: Disabling unused power domains
[    3.765553] mmc0: SDHCI controller on fe340000.mmc [fe340000.mmc] using ADMA
[    3.775141] Freeing unused kernel memory: 5056K
[    3.775659] Run /init as init process
[    3.865693] usb 1-1: new high-speed USB device number 2 using xhci_hcd
[    4.004302] usb 1-1: New USB device found, idVendor=2109, idProduct=3431, bcdDevice= 4.21
[    4.005094] usb 1-1: New USB device strings: Mfr=0, Product=1, SerialNumber=0
[    4.005941] usb 1-1: Product: USB2.0 Hub
[    4.025718] rcu: INFO: rcu_preempt detected expedited stalls on CPUs/tasks: { } 6 jiffies s: 113 root: 0x0/.
[    5.488519] hub 1-1:1.0: USB hub found
[    5.489237] hub 1-1:1.0: 4 ports detected
[    5.582357] systemd[1]: System time advanced to timestamp on /usr/lib/clock-epoch: Tue 2026-05-05 12:48:33 UTC
[    5.596527] NET: Registered PF_INET6 protocol family
[    5.597881] Segment Routing with IPv6
[    5.598310] In-situ OAM (IOAM) with IPv6
[    5.606279] usb 2-1: new SuperSpeed USB device number 2 using xhci_hcd
[    5.623161] usb 2-1: New USB device found, idVendor=174c, idProduct=55aa, bcdDevice= 1.00
[    5.624035] usb 2-1: New USB device strings: Mfr=2, Product=3, SerialNumber=1
[    5.624879] usb 2-1: Product: ASM1053 USB3.0 TO SATA
[    5.625312] usb 2-1: Manufacturer: ASMedia
[    5.625773] usb 2-1: SerialNumber: 1053201408002
[    5.653602] systemd[1]: systemd 257.9-1~deb13u1 running in system mode (+PAM +AUDIT +SELINUX +APPARMOR +IMA +IPE +SMACK +SECCOMP +GCRYPT -GNUTLS +OPENSSL +ACL +BLKID +CURL +ELFUTILS +FIDO2 +IDN2 -IDN +IPTC +KMOD +LIBCRYPTSETUP +LIBCRYPTSETUP_PLUGINS +LIBFDISK +PCRE2 +PWQUALITY +P11KIT +QRENCODE +TPM2 +BZIP2 +LZ4 +XZ +ZLIB +ZSTD +BPF_FRAMEWORK +BTF -XKBCOMMON -UTMP +SYSVINIT +LIBARCHIVE)
[    5.656397] systemd[1]: Detected architecture arm64.
[    5.656986] systemd[1]: Detected first boot.

Welcome to CaptainOS 0.1.0 (Tinkerbell)

[    5.700133] systemd[1]: Initializing machine ID from random generator.
[    5.741147] scsi host0: uas
[    5.742846] scsi 0:0:0:0: Direct-Access     ASMT     2105             0    PQ: 0 ANSI: 6
[    5.750752] sd 0:0:0:0: [sda] 500118192 512-byte logical blocks: (256 GB/238 GiB)
[    5.751679] sd 0:0:0:0: [sda] Write Protect is off
[    5.752300] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    5.826238] sd 0:0:0:0: [sda] Preferred minimum I/O size 512 bytes
[    5.826786] sd 0:0:0:0: [sda] Optimal transfer size 33553920 bytes
[    5.869376] systemd[1]: bpf-restrict-fs: BPF LSM hook not enabled in the kernel, BPF LSM not supported.
[    5.878277]  sda: sda1 sda2
[    5.881995] sd 0:0:0:0: [sda] Attached SCSI disk
[    6.317545] systemd[1]: Populated /etc with preset unit settings.
[    6.435555] systemd[1]: Queued start job for default target multi-user.target.
[    6.448152] systemd[1]: Created slice system-getty.slice - Slice /system/getty.
[  OK  ] Created slice system-getty.slice - Slice /system/getty.
[    6.466821] systemd[1]: Created slice system-modprobe.slice - Slice /system/modprobe.
[  OK  ] Created slice system-modprobe.slice - Slice /system/modprobe.
[    6.486748] systemd[1]: Created slice system-serial\x2dgetty.slice - Slice /system/serial-getty.
[  OK  ] Created slice system-serial\x2dget…slice - Slice /system/serial-getty.
[    6.510508] systemd[1]: Created slice user.slice - User and Session Slice.
[  OK  ] Created slice user.slice - User and Session Slice.
[    6.529919] systemd[1]: Started systemd-ask-password-console.path - Dispatch Password Requests to Console Directory Watch.
[  OK  ] Started systemd-ask-password-conso…equests to Console Directory Watch.
[    6.553838] systemd[1]: Started systemd-ask-password-wall.path - Forward Password Requests to Wall Directory Watch.
[  OK  ] Started systemd-ask-password-wall.…d Requests to Wall Directory Watch.
[    6.578114] systemd[1]: Set up automount proc-sys-fs-binfmt_misc.automount - Arbitrary Executable File Formats File System Automount Point.
[  OK  ] Set up automount proc-sys-fs-binfm…ormats File System Automount Point.
[    6.605740] systemd[1]: Expecting device dev-ttyAMA0.device - /dev/ttyAMA0...
         Expecting device dev-ttyAMA0.device - /dev/ttyAMA0...
[    6.621776] systemd[1]: Reached target slices.target - Slice Units.
[  OK  ] Reached target slices.target - Slice Units.
[    6.637714] systemd[1]: Reached target swap.target - Swaps.
[  OK  ] Reached target swap.target - Swaps.
[    6.655390] systemd[1]: Listening on systemd-creds.socket - Credential Encryption/Decryption.
[  OK  ] Listening on systemd-creds.socket - Credential Encryption/Decryption.
[    6.677913] systemd[1]: Listening on systemd-initctl.socket - initctl Compatibility Named Pipe.
[  OK  ] Listening on systemd-initctl.socke…- initctl Compatibility Named Pipe.
[    6.702328] systemd[1]: Listening on systemd-journald-audit.socket - Journal Audit Socket.
[  OK  ] Listening on systemd-journald-audit.socket - Journal Audit Socket.
[    6.721979] systemd[1]: Listening on systemd-journald-dev-log.socket - Journal Socket (/dev/log).
[  OK  ] Listening on systemd-journald-dev-…socket - Journal Socket (/dev/log).
[    6.745987] systemd[1]: Listening on systemd-journald.socket - Journal Sockets.
[  OK  ] Listening on systemd-journald.socket - Journal Sockets.
[    6.766095] systemd[1]: Listening on systemd-networkd.socket - Network Service Netlink Socket.
[  OK  ] Listening on systemd-networkd.socket - Network Service Netlink Socket.
[    6.789738] systemd[1]: systemd-pcrextend.socket - TPM PCR Measurements was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
[    6.790929] systemd[1]: systemd-pcrlock.socket - Make TPM PCR Policy was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
[    6.792351] systemd[1]: Listening on systemd-udevd-control.socket - udev Control Socket.
[  OK  ] Listening on systemd-udevd-control.socket - udev Control Socket.
[    6.837877] systemd[1]: Listening on systemd-udevd-kernel.socket - udev Kernel Socket.
[  OK  ] Listening on systemd-udevd-kernel.socket - udev Kernel Socket.
[    6.859913] systemd[1]: Mounting dev-hugepages.mount - Huge Pages File System...
         Mounting dev-hugepages.mount - Huge Pages File System...
[    6.880020] systemd[1]: Mounting dev-mqueue.mount - POSIX Message Queue File System...
         Mounting dev-mqueue.mount - POSIX Message Queue File System...
[    6.904131] systemd[1]: Mounting run-lock.mount - Legacy Locks Directory /run/lock...
         Mounting run-lock.mount - Legacy Locks Directory /run/lock...
[    6.928187] systemd[1]: Mounting sys-kernel-debug.mount - Kernel Debug File System...
         Mounting sys-kernel-debug.mount - Kernel Debug File System...
[    6.956036] systemd[1]: Mounting sys-kernel-tracing.mount - Kernel Trace File System...
         Mounting sys-kernel-tracing.mount - Kernel Trace File System...
[    6.984246] systemd[1]: Mounting tmp.mount - Temporary Directory /tmp...
         Mounting tmp.mount - Temporary Directory /tmp...
[    7.008457] systemd[1]: Starting kmod-static-nodes.service - Create List of Static Device Nodes...
         Starting kmod-static-nodes.service…eate List of Static Device Nodes...
[    7.032074] systemd[1]: Starting modprobe@configfs.service - Load Kernel Module configfs...
         Starting modprobe@configfs.service - Load Kernel Module configfs...
[    7.055990] systemd[1]: Starting modprobe@drm.service - Load Kernel Module drm...
         Starting modprobe@drm.service - Load Kernel Module drm...
[    7.080075] systemd[1]: Starting modprobe@efi_pstore.service - Load Kernel Module efi_pstore...
         Starting modprobe@efi_pstore.servi… - Load Kernel Module efi_pstore...
[    7.108060] systemd[1]: Starting modprobe@fuse.service - Load Kernel Module fuse...
         Starting modprobe@fuse.service - Load Kernel Module fuse...
[    7.132088] systemd[1]: Starting nftables.service - nftables...
         Starting nftables.service - nftables...
[    7.143356] fuse: init (API version 7.45)
[    7.149881] systemd[1]: systemd-hibernate-clear.service - Clear Stale Hibernate Storage Info was skipped because of an unmet condition check (ConditionPathExists=/sys/firmware/efi/efivars/HibernateLocation-8cf2644b-4b0b-428f-9387-6d876050dc67).
[    7.174163] systemd[1]: Starting systemd-journald.service - Journal Service...
         Starting systemd-journald.service - Journal Service...
[    7.196855] systemd[1]: Starting systemd-modules-load.service - Load Kernel Modules...
         Starting systemd-modules-load.service - Load Kernel Modules...
[    7.220422] systemd[1]: Starting systemd-network-generator.service - Generate network units from Kernel command line...
         Starting systemd-network-generator…k units from Kernel command line...
[    7.242235] systemd[1]: systemd-pcrmachine.service - TPM PCR Machine ID Measurement was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
[    7.246929] systemd[1]: Starting systemd-remount-fs.service - Remount Root and Kernel File Systems...
[    7.253309] systemd-journald[146]: Collecting audit messages is enabled.
         Starting systemd-remount-fs.servic…unt Roo[    7.276685] systemd[1]: Starting systemd-time-wait-sync.service - Wait Until Kernel Time Synchronized...
t and Kernel File Systems...
         Starting systemd-time-wait-sync.se…t Until Kernel Time Synchronized...
[    7.309880] systemd[1]: systemd-tpm2-setup-early.service - Early TPM SRK Setup was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
[    7.313562] systemd[1]: Starting systemd-udev-load-credentials.service - Load udev Rules from Credentials...
         Starting systemd-udev-load-cred[    7.344379] systemd[1]: Starting systemd-udev-trigger.service - Coldplug All udev Devices...
ent…Load udev Rules from Credentials...
[    7.355263] systemd-time-wait-sync[154]: adjtime state 5 status 40 time Tue 2026-05-05 12:48:34.773774 UTC
         Starting systemd-udev-trigger.service - Coldplug All udev Devices...
[    7.387023] systemd[1]: Started systemd-journald.service - Journal Service.
[  OK  ] Started systemd-journald.service - Journal Service.
[    7.410128] audit: type=1130 audit(1777985314.823:2): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=systemd-journald comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
[  OK  ] Mounted dev-hugepages.mount - Huge Pages File System.
[    7.411849] systemd[1]: Mounted dev-hugepages.mount - Huge Pages File System.
[  OK  ] Mounted dev-mqueue.mount - POSIX Message Queue File System.
[    7.448395] systemd[1]: Mounted dev-mqueue.mount - POSIX Message Queue File System.
[  OK  ] Mounted run-lock.mount - Legacy Locks Directory /run/lock.
[    7.480304] systemd[1]: Mounted run-lock.mount - Legacy Locks Directory /run/lock.
[  OK  ] Mounted sys-kernel-debug.mount - Kernel Debug File System.
[    7.512326] systemd[1]: Mounted sys-kernel-debug.mount - Kernel Debug File System.
[  OK  ] Mounted sys-kernel-tracing.mount - Kernel Trace File System.
[    7.544301] systemd[1]: Mounted sys-kernel-tracing.mount - Kernel Trace File System.
[  OK  ] Mounted tmp.mount - Temporary Directory /tmp.
[    7.572268] systemd[1]: Mounted tmp.mount - Temporary Directory /tmp.
[  OK  ] Finished kmod-static-nodes.service…Create List of Static Device Nodes.
[    7.604356] systemd[1]: Finish[    7.621904] audit: type=1130 audit(1777985315.035:3): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=kmod-static-nodes comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
ed kmod-static-nodes.service - Create List of Static Device Nodes.
[  OK  ] Finished modprobe@configfs.service - Load Kernel Module configfs.
[    7.656611] systemd[1]: modpro[    7.673817] audit: type=1130 audit(1777985315.087:4): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=modprobe@configfs comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
be@configfs.service: Deactivated[    7.675211] audit: type=1131 audit(1777985315.087:5): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=modprobe@configfs comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
 successfully.
[  OK  ] Finished modprobe@drm.service - Load Kernel Module drm.
[    7.724598] systemd[1]: Finish[    7.741786] audit: type=1130 audit(1777985315.155:6): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=modprobe@drm comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
ed modprobe@configfs.service - L[    7.743059] audit: type=1131 audit(1777985315.155:7): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=modprobe@drm comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
oad Kernel Module configfs.
[  OK  ] Finished modprobe@efi_pstore.service - Load Kernel Module efi_pstore.
[    7.792606] systemd[1]: modpro[    7.805793] audit: type=1130 audit(1777985315.219:8): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=modprobe@efi_pstore comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
be@drm.service: Deactivated succ[    7.807028] audit: type=1131 audit(1777985315.219:9): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=modprobe@efi_pstore comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
essfully.
[  OK  ] Finished modprobe@fuse.service - Load Kernel Module fuse.
[    7.852550] systemd[1]: Finish[    7.869787] audit: type=1130 audit(1777985315.283:10): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=modprobe@fuse comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
[    7.870999] audit: type=1131 audit(1777985315.283:11): pid=1 uid=0 auid=4294967295 ses=4294967295 msg='unit=modprobe@fuse comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
ed modprobe@drm.service - Load Kernel Module drm.
[  OK  ] Finished nftables.service - nftables.
[    7.908802] systemd[1]: modprobe@efi_pstore.service: Deactivated successfully.
[  OK  ] Finished systemd-modules-load.service - Load Kernel Modules.
[    7.940338] systemd[1]: Finished modprobe@efi_pstore.service - Load Kernel Module efi_pstore.
[  OK  ] Finished systemd-network-generator…ork units from Kernel command line.
[    7.972361] systemd[1]: modprobe@fuse.service: Deactivated successfully.
[  OK  ] Finished systemd-remount-fs.servic…mount Root and Kernel File Systems.
[    8.000365] systemd[1]: Finished modprobe@fuse.service - Load Kernel Module fuse.
[  OK  ] Finished systemd-udev-load-credent…- Load udev Rules from Credentials.
[    8.032382] systemd[1]: Finished nftables.service - nftables.
[  OK  ] Finished systemd-udev-trigger.service - Coldplug All udev Devices.
[    8.064409] systemd[1]: Finished systemd-modules-load.service - Load Kernel Modules.
[    8.088657] systemd[1]: Finished systemd-network-generator.service - Generate network units from Kernel command line.
[  OK  ] Reached target network-pre.target - Preparation for Network.
[    8.104364] systemd[1]: Finished systemd-remount-fs.service - Remount Root and Kernel File Systems.
         Mounting sys-fs-fuse-connections.mount - FUSE Control File System...
[    8.132353] systemd[1]: Finished systemd-udev-load-credentials.service - Load udev Rules from Credentials.
         Mounting sys-kernel-config.mount - Kernel Configuration File System...
[    8.148506] systemd[1]: Finished systemd-udev-trigger.service - Coldplug All udev Devices.
[    8.168547] systemd[1]: Reached target network-pre.target - Preparation for Network.
         Starting systemd-journal-flush.ser…sh Journal to Persistent Storage...
[    8.180635] systemd[1]: Mounting sys-fs-fuse-connections.mount - FUSE Control File System...
[    8.200748] systemd[1]: Mounting sys-kernel-config.mount - Kernel Configuration File System...
         Starting systemd-random-seed.service - Load/Save OS Random Seed...
[    8.216656] systemd[1]: system[    8.242310] systemd-journald[146]: Received client request to flush runtime journal.
d-hwdb-update.service - Rebuild Hardware Database was skipped because no trigger condition checks were met.
         Starting systemd-sysctl.service - Apply Kernel Variables...
[    8.242291] systemd[1]: Starting systemd-journal-flush.service - Flush Journal to Persistent Storage...
         Starting systemd-tmpfiles-setup-de… Device Nodes in /dev gracefully...
[    8.273289] systemd[1]: systemd-pcrlock-file-system.service - Lock File Systems to TPM PCR Policy was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
[  OK  ] Mounted sys-fs-fuse-connections.mount - FUSE Control File System.
[    8.296830] systemd[1]: systemd-pcrlock-machine-id.service - Lock Machine ID to TPM PCR Policy was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
[  OK  ] Mounted sys-kernel-config.mount - Kernel Configuration File System.
[    8.348656] systemd[1]: systemd-pstore.service - Platform Persistent Storage Archival was skipped because of an unmet condition check (ConditionDirectoryNotEmpty=/sys/fs/pstore).
[  OK  ] Finished systemd-journal-flush.ser…lush Journal to Persistent Storage.
[    8.384614] systemd[1]: Starting systemd-random-seed.service - Load/Save OS Random Seed...
[  OK  ] Finished systemd-random-seed.service - Load/Save OS Random Seed.
[    8.408731] systemd[1]: Starting systemd-sysctl.service - Apply Kernel Variables...
[  OK  ] Finished systemd-sysctl.service - Apply Kernel Variables.
[    8.432436] systemd[1]: Starting systemd-tmpfiles-setup-dev-early.service - Create Static Device Nodes in /dev gracefully...
[  OK  ] Finished systemd-tmpfiles-setup-de…ic Device Nodes in /dev gracefully.
[    8.464413] systemd[1]: systemd-tpm2-setup.service - TPM SRK Setup was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
[  OK  ] Reached target first-boot-complete.target - First Boot Complete.
[    8.496405] systemd[1]: systemd-pcrlock-firmware-code.service - Lock Firmware Code to TPM PCR Policy was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
         Starting systemd-sysusers.service - Create System Users...
[    8.528372] systemd[1]: systemd-pcrlock-firmware-config.service - Lock Firmware Configuration to TPM PCR Policy was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
[  OK  ] Finished systemd-sysusers.service - Create System Users.
[    8.564335] systemd[1]: systemd-pcrlock-secureboot-authority.service - Lock UEFI SecureBoot Authority to TPM PCR Policy was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
         Starting systemd-resolved.service - Network Name Resolution...
[    8.600619] systemd[1]: systemd-pcrlock-secureboot-policy.service - Lock UEFI SecureBoot Policy to TPM PCR Policy was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
         Starting systemd-timesyncd.service - Network Time Synchronization...
[    8.640825] systemd[1]: systemd-pcrlock-make-policy.service - Make TPM PCR Policy was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
[    8.672998] systemd[1]: Mounted sys-fs-fuse-connections.mount - FUSE Control File System.
         Starting systemd-tmpfiles-setup-de…eate Static Device Nodes in /dev...
[    8.692977] systemd[1]: Mounted sys-kernel-config.mount - Kernel Configuration File System.
[    8.724517] systemd[1]: Finished systemd-journal-flush.service - Flush Journal to Persistent Storage.
[  OK  ] Started systemd-timesyncd.service - Network Time Synchronization.
[    8.736529] systemd[1]: Finished systemd-random-seed.service - Load/Save OS Random Seed.
[  OK  ] Started systemd-resolved.service - Network Name Resolution.
[    8.760626] systemd[1]: Finished systemd-sysctl.service - Apply Kernel Variables.
[  OK  ] Finished systemd-tmpfiles-setup-de…Create Static Device Nodes in /dev.
[    8.792438] systemd[1]: Finished systemd-tmpfiles-setup-dev-early.service - Create Static Device Nodes in /dev gracefully.
[  OK  ] Reached target local-fs-pre.target…Preparation for Local File Systems.
[    8.828434] systemd[1]: Reached target first-boot-complete.target - First Boot Complete.
[  OK  ] Reached target local-fs.target - Local File Systems.
[    8.856206] systemd[1]: Starting systemd-sysusers.service - Create System Users...
[  OK  ] Reached target nss-lookup.target - Host and Network Name Lookups.
[    8.880169] systemd[1]: Finished systemd-sysusers.service - Create System Users.
[  OK  ] Reached target time-set.target - System Time Set.
[    8.912156] systemd[1]: Starting systemd-resolved.service - Network Name Resolution...
[  OK  ] Listening on systemd-sysext.socket… System Extension Image Management.
[    8.940290] systemd[1]: Starting systemd-timesyncd.service - Network Time Synchronization...
         Starting systemd-machine-id-commit…ave Transient machine-id to Disk...
[    8.972323] systemd[1]: Starting systemd-tmpfiles-setup-dev.service - Create Static Device Nodes in /dev...
         Starting systemd-tmpfiles-setup.se…ate System Files and Directories...
[    8.985027] systemd-resolved[193]: Positive Trust Anchors:
[    9.004504] systemd-resolved[193]: . IN DS 20326 8 2 e06d44b80b8f1d39a95c0b0d7c65d08458e880409bbc683457104237c7f8ec8d
         Starting systemd-udevd.service - R…ager for Device Events and Files...
[    9.012812] systemd-resolved[193]: . IN DS 38696 8 2 683d2d0acb8c9b712a1948b27f741219298d0a450d612c483af444a4c0fb2b16
[  OK  ] Finished systemd-machine-id-commit… Save Transient machine-id to Disk.
[    9.060753] systemd-resolved[193]: Negative trust anchors: home.arpa 10.in-addr.arpa 16.172.in-addr.arpa 17.172.in-addr.arpa 18.172.in-addr.arpa 19.172.in-addr.arpa 20.172.in-addr.arpa 21.172.in-addr.arpa 22.172.in-addr.arpa 23.172.in-addr.arpa 24.172.in-addr.arpa 25.172.in-addr.arpa 26.172.in-addr.arpa 27.172.in-addr.arpa 28.172.in-addr.arpa 29.172.in-addr.arpa 30.172.in-addr.arpa 31.172.in-addr.arpa 170.0.0.192.in-addr.arpa 171.0.0.192.in-addr.arpa 168.192.in-addr.arpa d.f.ip6.arpa ipv4only.arpa resolver.arpa corp home internal intranet lan local private test
[  OK  ] Finished systemd-tmpfiles-setup.se…reate System Files and Directories.
[    9.072697] systemd[1]: Started systemd-timesyncd.service - Network Time Synchronization.
         Starting ldconfig.service - Rebuild Dynamic Linker Cache...
[    9.156860] systemd-resolved[193]: Defaulting to hostname 'linux'.
         Starting systemd-journal-catalog-u…ervice - Rebuild Journal Catalog...
[  OK  ] Started systemd-udevd.service - Ru…anager for Device Events and Files.
[    9.181885] systemd[1]: Started systemd-resolved.service - Network Name Resolution.
[  OK  ] Finished ldconfig.service - Rebuild Dynamic Linker Cache.
[    9.227652] systemd[1]: Finished systemd-tmpfiles-setup-dev.service - Create Static Device Nodes in /dev.
[    9.252567] systemd[1]: Reached target local-fs-pre.target - Preparation for Local File Systems.
[    9.265395] systemd[1]: Reached target local-fs.target - Local File Systems.
[  OK  ] Finished systemd-journal-catalog-u….service - Rebuild Journal Catalog.
[    9.281189] systemd[1]: Reached target nss-lookup.target - Host and Network Name Lookups.
[  OK  ] Found device dev-ttyAMA0.device - /dev/ttyAMA0.
[    9.308714] systemd[1]: Reached target time-set.target - System Time Set.
[    9.328462] systemd[1]: Listening on systemd-sysext.socket - System Extension Image Management.
         Starting systemd-networkd.service - Network Configuration...
[    9.340891] systemd-timesyncd[196]: Network configuration changed, trying to establish connection.
[    9.369273] systemd[1]: systemd-binfmt.service - Set Up Additional Binary Formats was skipped because no trigger condition checks were met.
[    9.384381] systemd[1]: systemd-confext.service - Merge System Configuration Images into /etc/ was skipped because no trigger condition checks were met.
         Starting systemd-update-done.service - Update is Completed...
[    9.407611] systemd[1]: Starting systemd-machine-id-commit.service - Save Transient machine-id to Disk...
[  OK  ] Finished systemd-update-done.service - Update is Completed.
[    9.442275] systemd[1]: systemd-sysext.service - Merge System Extension Images into /usr/ and /opt/ was skipped because no trigger condition checks were met.
[    9.474757] systemd[1]: Starting systemd-tmpfiles-setup.service - Create System Files and Directories...
[  OK  ] Reached target sysinit.target - System Initialization.
[  OK  ] Started rsyslog-hostname-reload.pa…ostname changes and reload rsyslog.
[  OK  ] Started systemd-tmpfiles-clean.tim…y Cleanup of Temporary Directories.
[    9.495060] systemd[1]: Starting systemd-udevd.service - Rule-based Manager for Device Events and Files...
[  OK  ] Reached target paths.target - Path Units.
[    9.557503] systemd-tmpfiles[205]: /usr/lib/tmpfiles.d/legacy.conf:14: Duplicate line for path "/run/lock", ignoring.
[  OK  ] Listening on dbus.socket - D-Bus System Message Bus Socket.
[  OK  ] Listening on systemd-hostnamed.socket - Hostname Service Socket.
[  OK  ] Reached target sockets.target - Socket Units.
[    9.572354] systemd[1]: Finished systemd-machine-id-commit.service - Save Transient machine-id to Disk.
[  OK  ] Reached target basic.target - Basic System.
[    9.623103] systemd-timesyncd[196]: Network configuration changed, trying to establish connection.
         Starting dbus.service - D-Bus System Message Bus...
[    9.648430] systemd-timesyncd[196]: Network configuration changed, trying to establish connection.
[    9.666537] systemd-timesyncd[196]: Network configuration changed, trying to establish connection.
         Starting systemd-logind.service - User Login Management...
[    9.679825] systemd[1]: Finished systemd-tmpfiles-setup.service - Create System Files and Directories.
[    9.696703] systemd[1]: captainos-static-network.service - Configure static networking from kernel cmdline (ipam=) was skipped because of an unmet condition check (ConditionKernelCommandLine=ipam).
[  OK  ] Started systemd-networkd.service - Network Configuration.
[    9.709057] systemd-udevd[206]: Using default interface naming scheme 'v257'.
[  OK  ] Started dbus.service - D-Bus System Message Bus.
[    9.752384] systemd[1]: Starting ldconfig.service - Rebuild Dynamic Linker Cache...
[    9.780566] systemd[1]: Starting systemd-journal-catalog-update.service - Rebuild Journal Catalog...
[    9.793616] systemd[1]: Started systemd-udevd.service - Rule-based Manager for Device Events and Files.
[  OK  ] Started systemd-logind.service - User Login Management.
[    9.808418] systemd[1]: Finished ldconfig.service - Rebuild Dynamic Linker Cache.
[    9.836587] journalctl[219]: No items in catalog.
[    9.844183] systemd[1]: Finished systemd-journal-catalog-update.service - Rebuild Journal Catalog.
[  OK  ] Reached target network.target - Network.
[    9.860321] systemd[1]: Found device dev-ttyAMA0.device - /dev/ttyAMA0.
[  OK  ] Listening on systemd-rfkill.socket…ll Switch Status /dev/rfkill Watch.
[    9.888711] dbus-daemon[258]: [system] Successfully activated service 'org.freedesktop.systemd1'
         Starting containerd.service - containerd container runtime...
[    9.912470] systemd[1]: Starting systemd-networkd.service - Network Configuration...
         Starting systemd-networkd-persiste…tent Storage in systemd-networkd...
[    9.924493] systemd[1]: Starting systemd-update-done.service - Update is Completed...
[    9.952504] systemd[1]: Finished systemd-update-done.service - Update is Completed.
         Starting systemd-networkd-wait-onl…ait for Network to be Configured...
[    9.968635] systemd[1]: etc-machine\x2did.mount: Deactivated successfully.
         Starting systemd-user-sessions.service - Permit User Sessions...
[    9.988885] systemd[1]: Reached target sysinit.target - System Initialization.
[  OK  ] Finished systemd-networkd-persiste…istent Storage in systemd-networkd.
[   10.008764] systemd[1]: Started rsyslog-hostname-reload.path - Watch for hostname changes and reload rsyslog.
[  OK  ] Finished systemd-user-sessions.service - Permit User Sessions.
[   10.032886] systemd[1]: Started systemd-tmpfiles-clean.timer - Daily Cleanup of Temporary Directories.
[  OK  ] Started getty@tty1.service - Getty on tty1.
[   10.069187] systemd[1]: Reached target paths.target - Path Units.
[   10.081211] systemd[1]: Listening on dbus.socket - D-Bus System Message Bus Socket.
[  OK  ] Started serial-getty@ttyAMA0.service - Serial Getty on ttyAMA0.
[   10.097623] containerd[272]: time="2026-05-05T12:48:37.507528571Z" level=info msg="starting containerd" revision=dea7da592f5d1d2b7755e3a161be07f43fad8f75 version=v2.2.1
[  OK  ] Reached target getty.target - Login Prompts.
[   10.136663] systemd[1]: Listening on systemd-hostnamed.socket - Hostname Service Socket.
[  OK  ] Started containerd.service - containerd container runtime.
[   10.152446] containerd[272]: time="2026-05-05T12:48:37.534297015Z" level=info msg="loading plugin" id=io.containerd.content.v1.content type=io.containerd.content.v1
[   10.196223] containerd[272]: time="2026-05-05T12:48:37.534458589Z" level=info msg="loading plugin" id=io.containerd.image-verifier.v1.bindir type=io.containerd.image-verifier.v1
[   10.220161] containerd[272]: time="2026-05-05T12:48:37.534510330Z" level=info msg="loading plugin" id=io.containerd.warning.v1.deprecations type=io.containerd.warning.v1
[   10.240171] containerd[272]: time="2026-05-05T12:48:37.534545330Z" level=info msg="loading plugin" id=io.containerd.mount-handler.v1.erofs type=io.containerd.mount-handler.v1
[   10.260110] containerd[272]: time="2026-05-05T12:48:37.534581386Z" level=info msg="loading plugin" id=io.containerd.snapshotter.v1.blockfile type=io.containerd.snapshotter.v1
[   10.280134] containerd[272]: time="2026-05-05T12:48:37.534690997Z" level=info msg="skip loading plugin" error="no scratch file generator: skip plugin" id=io.containerd.snapshotter.v1.blockfile type=io.containerd.snapshotter.v1
[   10.304091] containerd[272]: time="2026-05-05T12:48:37.534721126Z" level=info msg="loading plugin" id=io.containerd.snapshotter.v1.btrfs type=io.containerd.snapshotter.v1
[   10.324109] containerd[272]: time="2026-05-05T12:48:37.535080201Z" level=info msg="skip loading plugin" error="path /var/lib/containerd/io.containerd.snapshotter.v1.btrfs (tmpfs) must be a btrfs filesystem to be used with the btrfs snapshotter: skip plugin" id=io.containerd.snapshotter.v1.btrfs type=io.containerd.snapshotter.v1
[   10.356098] containerd[272]: time="2026-05-05T12:48:37.535122886Z" level=info msg="loading plugin" id=io.containerd.snapshotter.v1.devmapper type=io.containerd.snapshotter.v1
[   10.376110] containerd[272]: time="2026-05-05T12:48:37.535154515Z" level=info msg="skip loading plugin" error="devmapper not configured: skip plugin" id=io.containerd.snapshotter.v1.devmapper type=io.containerd.snapshotter.v1
[   10.400098] containerd[272]: time="2026-05-05T12:48:37.535181423Z" level=info msg="loading plugin" id=io.containerd.snapshotter.v1.erofs type=io.containerd.snapshotter.v1
[   10.420105] containerd[272]: time="2026-05-05T12:48:37.535576386Z" level=info msg="skip loading plugin" error="EROFS unsupported, please `modprobe erofs`: skip plugin" id=io.containerd.snapshotter.v1.erofs type=io.containerd.snapshotter.v1
[   10.444672] systemd[1]: Reached target sockets.target - Socket Units.
[   10.456228] containerd[272]: time="2026-05-05T12:48:37.535702182Z" level=info msg="loading plugin" id=io.containerd.snapshotter.v1.native type=io.containerd.snapshotter.v1
[   10.476133] containerd[272]: time="2026-05-05T12:48:37.535824349Z" level=info msg="loading plugin" id=io.containerd.snapshotter.v1.overlayfs type=io.containerd.snapshotter.v1
[   10.496107] containerd[272]: time="2026-05-05T12:48:37.536246219Z" level=info msg="loading plugin" id=io.containerd.snapshotter.v1.zfs type=io.containerd.snapshotter.v1
[   10.516100] containerd[272]: time="2026-05-05T12:48:37.536368034Z" level=info msg="skip loading plugin" error="lstat /var/lib/containerd/io.containerd.snapshotter.v1.zfs: no such file or directory: skip plugin" id=io.containerd.snapshotter.v1.zfs type=io.containerd.snapshotter.v1
[   10.544107] containerd[272]: time="2026-05-05T12:48:37.536399163Z" level=info msg="loading plugin" id=io.containerd.event.v1.exchange type=io.containerd.event.v1
[   10.564087] containerd[272]: time="2026-05-05T12:48:37.536525904Z" level=info msg="loading plugin" id=io.containerd.monitor.task.v1.cgroups type=io.containerd.monitor.task.v1
[   10.584098] containerd[272]: time="2026-05-05T12:48:37.537285478Z" level=info msg="loading plugin" id=io.containerd.metadata.v1.bolt type=io.containerd.metadata.v1
[   10.604116] containerd[272]: time="2026-05-05T12:48:37.537461719Z" level=info msg="metadata content store policy set" policy=shared
[   10.620091] containerd[272]: time="2026-05-05T12:48:37.538021367Z" level=info msg="loading plugin" id=io.containerd.gc.v1.scheduler type=io.containerd.gc.v1
[   10.636117] containerd[272]: time="2026-05-05T12:48:37.538108571Z" level=info msg="loading plugin" id=io.containerd.nri.v1.nri type=io.containerd.nri.v1
[   10.652119] containerd[272]: time="2026-05-05T12:48:37.538177960Z" level=info msg="built-in NRI default validator is disabled"
[   10.668097] containerd[272]: time="2026-05-05T12:48:37.538198738Z" level=info msg="runtime interface created"
[   10.684094] containerd[272]: time="2026-05-05T12:48:37.538215793Z" level=info msg="created NRI interface"
[   10.696091] containerd[272]: time="2026-05-05T12:48:37.538242349Z" level=info msg="loading plugin" id=io.containerd.differ.v1.erofs type=io.containerd.differ.v1
[   10.716255] systemd[1]: systemd-pcrphase-sysinit.service - TPM PCR Barrier (Initialization) was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
[   10.740232] containerd[272]: time="2026-05-05T12:48:37.538360423Z" level=info msg="skip loading plugin" error="failed to check mkfs.erofs availability: failed to run mkfs.erofs --help: exec: \"mkfs.erofs\": executable file not found in $PATH: skip plugin" id=io.containerd.differ.v1.erofs type=io.containerd.differ.v1
[   10.772124] containerd[272]: time="2026-05-05T12:48:37.538410608Z" level=info msg="loading plugin" id=io.containerd.differ.v1.walking type=io.containerd.differ.v1
[   10.796108] containerd[272]: time="2026-05-05T12:48:37.538459756Z" level=info msg="loading plugin" id=io.containerd.lease.v1.manager type=io.containerd.lease.v1
[   10.816101] containerd[272]: time="2026-05-05T12:48:37.538495849Z" level=info msg="loading plugin" id=io.containerd.mount-manager.v1.bolt type=io.containerd.mount-manager.v1
[   10.836107] containerd[272]: time="2026-05-05T12:48:37.538807571Z" level=info msg="loading plugin" id=io.containerd.service.v1.containers-service type=io.containerd.service.v1
[   10.856102] containerd[272]: time="2026-05-05T12:48:37.538849034Z" level=info msg="loading plugin" id=io.containerd.service.v1.content-service type=io.containerd.service.v1
[   10.876116] containerd[272]: time="2026-05-05T12:48:37.538881756Z" level=info msg="loading plugin" id=io.containerd.service.v1.diff-service type=io.containerd.service.v1
[   10.896120] containerd[272]: time="2026-05-05T12:48:37.538919219Z" level=info msg="loading plugin" id=io.containerd.service.v1.images-service type=io.containerd.service.v1
[   10.916089] containerd[272]: time="2026-05-05T12:48:37.538956200Z" level=info msg="loading plugin" id=io.containerd.service.v1.introspection-service type=io.containerd.service.v1
[   10.936099] containerd[272]: time="2026-05-05T12:48:37.539009552Z" level=info msg="loading plugin" id=io.containerd.service.v1.namespaces-service type=io.containerd.service.v1
[   10.956101] containerd[272]: time="2026-05-05T12:48:37.539062978Z" level=info msg="loading plugin" id=io.containerd.service.v1.snapshots-service type=io.containerd.service.v1
[   10.976114] containerd[272]: time="2026-05-05T12:48:37.539095738Z" level=info msg="loading plugin" id=io.containerd.shim.v1.manager type=io.containerd.shim.v1
[   10.996102] containerd[272]: time="2026-05-05T12:48:37.539139256Z" level=info msg="loading plugin" id=io.containerd.runtime.v2.task type=io.containerd.runtime.v2
[   11.016222] systemd[1]: Reached target basic.target - Basic System.
[   11.028162] containerd[272]: time="2026-05-05T12:48:37.539396423Z" level=info msg="loading plugin" id=io.containerd.service.v1.tasks-service type=io.containerd.service.v1
[   11.048098] containerd[272]: time="2026-05-05T12:48:37.539455719Z" level=info msg="loading plugin" id=io.containerd.grpc.v1.containers type=io.containerd.grpc.v1
[   11.068100] containerd[272]: time="2026-05-05T12:48:37.539494108Z" level=info msg="loading plugin" id=io.containerd.grpc.v1.content type=io.containerd.grpc.v1
[   11.088099] containerd[272]: time="2026-05-05T12:48:37.539538812Z" level=info msg="loading plugin" id=io.containerd.grpc.v1.diff type=io.containerd.grpc.v1
[   11.104602] containerd[272]: time="2026-05-05T12:48:37.539572812Z" level=info msg="loading plugin" id=io.containerd.grpc.v1.events type=io.containerd.grpc.v1
[   11.124152] containerd[272]: time="2026-05-05T12:48:37.539603497Z" level=info msg="loading plugin" id=io.containerd.grpc.v1.images type=io.containerd.grpc.v1
[   11.144108] containerd[272]: time="2026-05-05T12:48:37.539640238Z" level=info msg="loading plugin" id=io.containerd.grpc.v1.introspection type=io.containerd.grpc.v1
[   11.164112] containerd[272]: time="2026-05-05T12:48:37.539676089Z" level=info msg="loading plugin" id=io.containerd.grpc.v1.leases type=io.containerd.grpc.v1
[   11.184114] containerd[272]: time="2026-05-05T12:48:37.539708941Z" level=info msg="loading plugin" id=io.containerd.grpc.v1.mounts type=io.containerd.grpc.v1
[   11.204122] containerd[272]: time="2026-05-05T12:48:37.539739478Z" level=info msg="loading plugin" id=io.containerd.grpc.v1.namespaces type=io.containerd.grpc.v1
[   11.224106] containerd[272]: time="2026-05-05T12:48:37.539781330Z" level=info msg="loading plugin" id=io.containerd.sandbox.store.v1.local type=io.containerd.sandbox.store.v1
[   11.244096] containerd[272]: time="2026-05-05T12:48:37.539820163Z" level=info msg="loading plugin" id=io.containerd.transfer.v1.local type=io.containerd.transfer.v1
[   11.264101] containerd[272]: time="2026-05-05T12:48:37.539898719Z" level=info msg="loading plugin" id=io.containerd.cri.v1.images type=io.containerd.cri.v1
[   11.280090] containerd[272]: time="2026-05-05T12:48:37.540147052Z" level=info msg="Get image filesystem path \"/var/lib/containerd/io.containerd.snapshotter.v1.overlayfs\" for snapshotter \"overlayfs\""
[   11.300155] containerd[272]: time="2026-05-05T12:48:37.540185960Z" level=info msg="Start snapshots syncer"
[   11.312587] systemd-networkd[240]: lo: Link UP
[   11.320239] containerd[272]: time="2026-05-05T12:48:37.540254108Z" level=info msg="loading plugin" id=io.containerd.cri.v1.runtime type=io.containerd.cri.v1
[   11.336125] containerd[272]: time="2026-05-05T12:48:37.540902923Z" level=info msg="starting cri plugin" config="{\"containerd\":{\"defaultRuntimeName\":\"runc\",\"runtimes\":{\"runc\":{\"runtimeType\":\"io.containerd.runc.v2\",\"runtimePath\":\"\",\"PodAnnotations\":null,\"ContainerAnnotations\":null,\"options\":{\"BinaryName\":\"\",\"CriuImagePath\":\"\",\"CriuWorkPath\":\"\",\"IoGid\":0,\"IoUid\":0,\"NoNewKeyring\":false,\"Root\":\"\",\"ShimCgroup\":\"\",\"SystemdCgroup\":false},\"privileged_without_host_devices\":false,\"privileged_without_host_devices_all_devices_allowed\":false,\"cgroupWritable\":false,\"baseRuntimeSpec\":\"\",\"cniConfDir\":\"\",\"cniMaxConfNum\":0,\"snapshotter\":\"\",\"sandboxer\":\"podsandbox\",\"io_type\":\"\"}},\"ignoreBlockIONotEnabledErrors\":false,\"ignoreRdtNotEnabledErrors\":false},\"cni\":{\"binDir\":\"\",\"binDirs\":[\"/opt/cni/bin\"],\"confDir\":\"/etc/cni/net.d\",\"maxConfNum\":1,\"setupSerially\":false,\"confTemplate\":\"\",\"ipPref\":\"\",\"useInternalLoopback\":false},\"enableSelinux\":false,\"selinuxCategoryRange\":1024,\"maxContainerLogLineSize\":16384,\"disableApparmor\":false,\"restrictOOMScoreAdj\":false,\"disableProcMount\":false,\"unsetSeccompProfile\":\"\",\"tolerateMissingHugetlbController\":true,\"disableHugetlbController\":true,\"device_ownership_from_security_context\":false,\"ignoreImageDefinedVolumes\":false,\"netnsMountsUnderStateDir\":false,\"enableUnprivilegedPorts\":true,\"enableUnprivilegedICMP\":true,\"enableCDI\":true,\"cdiSpecDirs\":[\"/etc/cdi\",\"/var/run/cdi\"],\"drainExecSyncIOTimeout\":\"0s\",\"ignoreDeprecationWarnings\":null,\"containerdRootDir\":\"/var/lib/containerd\",\"containerdEndpoint\":\"/run/containerd/containerd.sock\",\"rootDir\":\"/var/lib/containerd/io.containerd.grpc.v1.cri\",\"stateDir\":\"/run/containerd/io.containerd.grpc.v1.cri\"}"
[   11.500399] systemd-networkd[240]: lo: Gained carrier
[   11.508236] containerd[272]: time="2026-05-05T12:48:37.541044275Z" level=info msg="loading plugin" id=io.containerd.podsandbox.controller.v1.podsandbox type=io.containerd.podsandbox.controller.v1
[   11.528098] containerd[272]: time="2026-05-05T12:48:37.541201812Z" level=info msg="loading plugin" id=io.containerd.sandbox.controller.v1.shim type=io.containerd.sandbox.controller.v1
[   11.548136] containerd[272]: time="2026-05-05T12:48:37.541365812Z" level=info msg="loading plugin" id=io.containerd.grpc.v1.sandbox-controllers type=io.containerd.grpc.v1
[   11.568088] containerd[272]: time="2026-05-05T12:48:37.541412738Z" level=info msg="loading plugin" id=io.containerd.grpc.v1.sandboxes type=io.containerd.grpc.v1
[   11.588099] containerd[272]: time="2026-05-05T12:48:37.541446441Z" level=info msg="loading plugin" id=io.containerd.grpc.v1.snapshots type=io.containerd.grpc.v1
[   11.608104] containerd[272]: time="2026-05-05T12:48:37.541478052Z" level=info msg="loading plugin" id=io.containerd.streaming.v1.manager type=io.containerd.streaming.v1
[   11.628106] containerd[272]: time="2026-05-05T12:48:37.541515738Z" level=info msg="loading plugin" id=io.containerd.grpc.v1.streaming type=io.containerd.grpc.v1
[   11.648104] containerd[272]: time="2026-05-05T12:48:37.541550515Z" level=info msg="loading plugin" id=io.containerd.grpc.v1.tasks type=io.containerd.grpc.v1
[   11.664094] containerd[272]: time="2026-05-05T12:48:37.541582349Z" level=info msg="loading plugin" id=io.containerd.grpc.v1.transfer type=io.containerd.grpc.v1
[   11.684100] containerd[272]: time="2026-05-05T12:48:37.541618423Z" level=info msg="loading plugin" id=io.containerd.grpc.v1.version type=io.containerd.grpc.v1
[   11.704106] containerd[272]: time="2026-05-05T12:48:37.541655738Z" level=info msg="loading plugin" id=io.containerd.monitor.container.v1.restart type=io.containerd.monitor.container.v1
[   11.724125] containerd[272]: time="2026-05-05T12:48:37.541741423Z" level=info msg="loading plugin" id=io.containerd.tracing.processor.v1.otlp type=io.containerd.tracing.processor.v1
[   11.744090] containerd[272]: time="2026-05-05T12:48:37.541802756Z" level=info msg="skip loading plugin" error="skip plugin: tracing endpoint not configured" id=io.containerd.tracing.processor.v1.otlp type=io.containerd.tracing.processor.v1
[   11.768096] containerd[272]: time="2026-05-05T12:48:37.541830534Z" level=info msg="loading plugin" id=io.containerd.internal.v1.tracing type=io.containerd.internal.v1
[   11.788539] systemd[1]: System is tainted: unmerged-bin
[   11.800222] containerd[272]: time="2026-05-05T12:48:37.541861015Z" level=info msg="skip loading plugin" error="skip plugin: tracing endpoint not configured" id=io.containerd.internal.v1.tracing type=io.containerd.internal.v1
[   11.824104] containerd[272]: time="2026-05-05T12:48:37.541891182Z" level=info msg="loading plugin" id=io.containerd.ttrpc.v1.otelttrpc type=io.containerd.ttrpc.v1
[   11.844110] containerd[272]: time="2026-05-05T12:48:37.541922886Z" level=info msg="loading plugin" id=io.containerd.grpc.v1.healthcheck type=io.containerd.grpc.v1
[   11.864106] containerd[272]: time="2026-05-05T12:48:37.542528645Z" level=info msg=serving... address=/run/containerd/containerd.sock.ttrpc
[   11.880112] containerd[272]: time="2026-05-05T12:48:37.542659089Z" level=info msg=serving... address=/run/containerd/containerd.sock
[   11.896123] containerd[272]: time="2026-05-05T12:48:37.542804682Z" level=info msg="containerd successfully booted in 0.037326s"
[   11.912160] systemd[1]: Starting dbus.service - D-Bus System Message Bus...
[   11.928141] systemd[1]: getty-static.service - getty on tty2-tty6 if dbus and logind are not available was skipped because of an unmet condition check (ConditionPathExists=!/usr/bin/dbus-daemon).
[   11.948178] systemd-networkd[240]: end0: Configuring with /etc/systemd/network/80-dhcp.network.
[   11.960171] systemd[1]: Starting systemd-logind.service - User Login Management...
[   11.972129] systemd-networkd[240]: end0: Link UP
[   11.980165] systemd[1]: systemd-pcrphase.service - TPM PCR Barrier (User) was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
[   11.996181] systemd[1]: Started systemd-networkd.service - Network Configuration.
[   12.008130] systemd[1]: Started dbus.service - D-Bus System Message Bus.
[   12.020548] systemd-logind[259]: New seat seat0.
[   12.028196] systemd[1]: Started systemd-logind.service - User Login Management.
[   12.044201] systemd[1]: Reached target network.target - Network.
[   12.060141] systemd[1]: Listening on systemd-rfkill.socket - Load/Save RF Kill Switch Status /dev/rfkill Watch.
[   12.076130] systemd[1]: Starting containerd.service - containerd container runtime...
[   12.088144] systemd[1]: Starting systemd-networkd-persistent-storage.service - Enable Persistent Storage in systemd-networkd...
[   12.104131] systemd[1]: Starting systemd-networkd-wait-online.service - Wait for Network to be Configured...
[   12.116152] systemd[1]: Starting systemd-user-sessions.service - Permit User Sessions...
[   12.128150] systemd[1]: Finished systemd-networkd-persistent-storage.service - Enable Persistent Storage in systemd-networkd.
[   12.144141] systemd[1]: Finished systemd-user-sessions.service - Permit User Sessions.
[   12.156132] systemd[1]: Started getty@tty1.service - Getty on tty1.
[   12.168135] systemd[1]: Started serial-getty@ttyAMA0.service - Serial Getty on ttyAMA0.
[   12.180155] systemd[1]: Reached target getty.target - Login Prompts.
[   12.192159] systemd[1]: Started containerd.service - containerd container runtime.
[   12.733190] systemd-networkd[240]: end0: Gained carrier
[   13.948725] systemd-networkd[240]: end0: Gained IPv6LL
[   13.956632] systemd-timesyncd[196]: Network configuration changed, trying to establish connection.
[   14.531743] systemd-networkd[240]: end0: DHCPv6 address fd00:dead:beef::aeb/128 (valid for 4min 59s, preferred for 4min 59s)
[   14.552256] systemd-networkd[240]: end0: DHCPv6 address 2a02:a466:4d7a::aeb/128 (valid for 4min 59s, preferred for 4min 59s)
[   15.179328] login[280]: pam_unix(login:session): session opened for user root(uid=0) by root(uid=0)
[   15.195570] systemd-logind[259]: New session 1 of user root.
[   15.198006] systemd[1]: Created slice user-0.slice - User Slice of UID 0.

localhost login: root (automatic login)


Welcome to CaptainOS! Your Tinkerbell operating system installation environment.

   ▄▄▄▄▄▄▄                                    ▄▄▄▄▄    ▄▄▄▄▄▄▄
  ███▀▀▀▀▀              ██        ▀▀        ▄███████▄ █████▀▀▀
  ███       ▀▀█▄ ████▄ ▀██▀▀ ▀▀█▄ ██  ████▄ ███   ███  ▀████▄
  ███      ▄█▀██ ██ ██  ██  ▄█▀██ ██  ██ ██ ███▄▄▄███    ▀████
  ▀███████ ▀█▄██ ████▀  ██  ▀█▄██ ██▄ ██ ██  ▀█████▀  ███████▀
                 ██
                 ▀▀

- Use `journalctl -u tink-agent` command to access the tink worker/agent logs.
- Use `nerdctl` commands to access workflow action containers.

[   15.238779] login[282]: pam_unix(login:session): session opened for user root(uid=0) by root(uid=0)
[   15.245843] systemd-logind[259]: New session 2 of user root.
[   15.251059] systemd[1]: Finished user-runtime-dir@0.service - User Runtime Directory /run/user/0.
[   15.255717] systemd[1]: Starting user@0.service - User Manager for UID 0...
[   15.276087] (systemd)[294]: pam_unix(systemd-user:session): session opened for user root(uid=0) by root(uid=0)
[   15.279717] systemd-logind[259]: New session 3 of user root.
[   15.613753] systemd-timesyncd[196]: Network configuration changed, trying to establish connection.
[   15.615053] systemd[294]: Queued start job for default target default.target.
[   15.617392] systemd[294]: Created slice app.slice - User Application Slice.
[   15.617681] systemd[294]: Started systemd-tmpfiles-clean.timer - Daily Cleanup of User's Temporary Directories.
[   15.617857] systemd[294]: Reached target paths.target - Paths.
[   15.618009] systemd[294]: Reached target sockets.target - Sockets.
[   15.618150] systemd[294]: Reached target timers.target - Timers.
[   15.619686] systemd[294]: Starting systemd-tmpfiles-setup.service - Create User Files and Directories...
[   15.648324] systemd[294]: Finished systemd-tmpfiles-setup.service - Create User Files and Directories.
[   15.648647] systemd[294]: Reached target basic.target - Basic System.
[   15.648824] systemd[294]: Reached target default.target - Main User Target.
[   15.648980] systemd[294]: Startup finished in 352ms.
[   15.649150] systemd[1]: Started user@0.service - User Manager for UID 0.
[   15.651893] systemd[1]: Started session-1.scope - Session 1 of User root.
[   15.654828] systemd[1]: Started session-2.scope - Session 2 of User root.
[   15.655149] login[280]: ROOT LOGIN ON tty1
[   15.658322] login[282]: ROOT LOGIN ON ttyAMA0
root@localhost:~# [   15.772973] systemd-timesyncd[196]: Network configuration changed, trying to establish connection.
[   15.778911] systemd[1]: Finished systemd-networkd-wait-online.service - Wait for Network to be Configured.
[   15.780653] systemd[1]: Reached target network-online.target - Network is Online.
[   15.783745] systemd[1]: Starting captainos-banner.service - CaptainOS Banner...
[   15.788250] systemd[1]: Starting rsyslog.service - Remote Syslog Forwarder (rsyslog)...
[   15.819495] captainos-banner[310]: ===========================================
[   15.819825] captainos-banner[310]:   CaptainOS - Tinkerbell Provisioning Agent
[   15.820154] captainos-banner[310]:   CaptainOS 0.1.0 (Tinkerbell)
[   15.820374] captainos-banner[310]:   Kernel: 6.18.26-current-bcm2711
[   15.820502] captainos-banner[310]:   Hostname: localhost
[   15.820621] captainos-banner[310]: ===========================================
[   15.820932] systemd[1]: Finished captainos-banner.service - CaptainOS Banner.
[   15.825749] systemd[1]: Started rsyslog.service - Remote Syslog Forwarder (rsyslog).
[   15.861563] rsyslog-start[321]: rsyslog: Forwarding logs to syslog.app.192.168.66.171.nip.io:514 (udp)
[   15.871370] rsyslogd[321]: imjournal: filecreatemode is not set, using default 0644 [v8.2504.0 try https://www.rsyslog.com/e/2186 ]
[   15.871636] rsyslogd[321]: [origin software="rsyslogd" swVersion="8.2504.0" x-pid="321" x-info="https://www.rsyslog.com"] start
[   15.926424] rsyslogd[321]: imjournal: journal files changed, reloading...  [v8.2504.0 try https://www.rsyslog.com/e/0 ]
[   16.232864] systemd-networkd[240]: end0: DHCPv4 address 192.168.66.20/24, gateway 192.168.66.1 acquired from 192.168.66.1
[   16.233576] dbus-daemon[258]: [system] Activating via systemd: service name='org.freedesktop.hostname1' unit='dbus-org.freedesktop.hostname1.service' requested by ':1.2' (uid=998 pid=240 comm="/usr/lib/systemd/systemd-networkd")
[   16.233882] systemd-timesyncd[196]: Network configuration changed, trying to establish connection.
[   16.234668] systemd-timesyncd[196]: Network configuration changed, trying to establish connection.
[   16.248183] systemd[1]: Starting rsyslog-hostname-reload.service - Restart rsyslog to pick up new hostname...
[   16.254180] systemd[1]: Starting systemd-hostnamed.service - Hostname Service...
[   16.284696] systemd[1]: Stopping rsyslog.service - Remote Syslog Forwarder (rsyslog)...
[   16.367457] systemd[1]: Started systemd-hostnamed.service - Hostname Service.
[   16.368295] dbus-daemon[258]: [system] Successfully activated service 'org.freedesktop.hostname1'
[   16.369615] dbus-daemon[258]: [system] Activating via systemd: service name='org.freedesktop.PolicyKit1' unit='polkit.service' requested by ':1.10' (uid=0 pid=329 comm="/usr/lib/systemd/systemd-hostnamed")
[   16.377800] systemd[1]: Starting polkit.service - Authorization Manager...
[   16.489137] polkitd[330]: Started polkitd version 126
[   16.492482] rsyslogd[321]: [origin software="rsyslogd" swVersion="8.2504.0" x-pid="321" x-info="https://www.rsyslog.com"] exiting on signal 15.
[   16.496346] systemd[1]: rsyslog.service: Deactivated successfully.
[   16.496881] systemd[1]: Stopped rsyslog.service - Remote Syslog Forwarder (rsyslog).
[   16.497227] polkitd[330]: Loading rules from directory /etc/polkit-1/rules.d
[   16.497403] polkitd[330]: Loading rules from directory /run/polkit-1/rules.d
[   16.497560] polkitd[330]: Error opening rules directory: Error opening directory “/run/polkit-1/rules.d”: No such file or directory (g-file-error-quark, 4)
[   16.497719] polkitd[330]: Loading rules from directory /usr/local/share/polkit-1/rules.d
[   16.497903] polkitd[330]: Error opening rules directory: Error opening directory “/usr/local/share/polkit-1/rules.d”: No such file or directory (g-file-error-quark, 4)
[   16.498103] polkitd[330]: Loading rules from directory /usr/share/polkit-1/rules.d
[   16.499079] polkitd[330]: Finished loading, compiling and executing 2 rules
[   16.500709] dbus-daemon[258]: [system] Successfully activated service 'org.freedesktop.PolicyKit1'
[   16.501312] polkitd[330]: Acquired the name org.freedesktop.PolicyKit1 on the system bus
[   16.502694] systemd[1]: Starting rsyslog.service - Remote Syslog Forwarder (rsyslog)...
[   16.504324] systemd[1]: Started polkit.service - Authorization Manager.
[   16.519591] systemd-hostnamed[329]: Hostname set to <rpi4b8g-eth> (transient)
[   16.521221] systemd-resolved[193]: System hostname changed to 'rpi4b8g-eth'.
[   16.539449] systemd[1]: Started rsyslog.service - Remote Syslog Forwarder (rsyslog).
[   16.545360] systemd[1]: rsyslog-hostname-reload.service: Deactivated successfully.
[   16.545907] systemd[1]: Finished rsyslog-hostname-reload.service - Restart rsyslog to pick up new hostname.
[   16.577210] rsyslog-start[342]: rsyslog: Forwarding logs to syslog.app.192.168.66.171.nip.io:514 (udp)
[   16.589420] rsyslogd[342]: imjournal: filecreatemode is not set, using default 0644 [v8.2504.0 try https://www.rsyslog.com/e/2186 ]
[   16.589690] rsyslogd[342]: [origin software="rsyslogd" swVersion="8.2504.0" x-pid="342" x-info="https://www.rsyslog.com"] start
[   16.648044] rsyslogd[342]: imjournal: journal files changed, reloading...  [v8.2504.0 try https://www.rsyslog.com/e/0 ]
[   20.681845] systemd-resolved[193]: Clock change detected. Flushing caches.
[   20.682532] systemd-timesyncd[196]: Contacted time server 192.168.66.1:123 (192.168.66.1).
[   20.682742] systemd-timesyncd[196]: Initial clock synchronization to Tue 2026-05-05 13:02:04.307356 UTC.
[   20.683284] systemd-time-wait-sync[154]: adjtime state 0 status 2000 time Tue 2026-05-05 13:02:04.308518 UTC
[   20.686668] systemd[1]: Finished systemd-time-wait-sync.service - Wait Until Kernel Time Synchronized.
[   20.687874] systemd[1]: Reached target time-sync.target - System Time Synchronized.
[   20.688583] systemd[1]: Started dpkg-db-backup.timer - Daily dpkg database backup timer.
[   20.688873] systemd[1]: Reached target timers.target - Timer Units.
[   20.692063] systemd[1]: Starting tink-agent-setup.service - Tink Agent Setup (pull image and extract binary)...
[   20.721825] tink-agent-setup[351]: {"time":"2026-05-05T13:02:04Z","level":"info","msg":"tink-agent-setup starting"}
[   20.778275] tink-agent-setup[351]: {"time":"2026-05-05T13:02:04Z","level":"info","msg":"configuration","image":"ghcr.io/rpardini/tinkerbell/tink-agent:latest","grpcAuthority":"tinkgrpc.app.192.168.66.171.nip.io:42113","workerID":"rpi","syslogHost":"syslog.app.192.168.66.171.nip.io"}
[   20.798630] tink-agent-setup[351]: {"time":"2026-05-05T13:02:04Z","level":"info","msg":"waiting for containerd socket","path":"/run/containerd/containerd.sock"}
[   20.807787] tink-agent-setup[351]: {"time":"2026-05-05T13:02:04Z","level":"info","msg":"containerd is ready"}
[   20.828121] tink-agent-setup[351]: {"time":"2026-05-05T13:02:04Z","level":"info","msg":"pulling tink-agent image","image":"ghcr.io/rpardini/tinkerbell/tink-agent:latest"}
[   29.665865] systemd[1]: var-lib-containerd-tmpmounts-containerd\x2dmount1747584048.mount: Deactivated successfully.
[   29.707910] tink-agent-setup[351]: {"time":"2026-05-05T13:02:13Z","level":"info","msg":"image pulled successfully"}
[   29.716505] tink-agent-setup[351]: {"time":"2026-05-05T13:02:13Z","level":"info","msg":"extracting tink-agent binary from image"}
[   29.731994] tink-agent-setup[351]: {"time":"2026-05-05T13:02:13Z","level":"info","msg":"saving image to tar"}
[   32.507457] tink-agent-setup[351]: {"time":"2026-05-05T13:02:16Z","level":"info","msg":"extracted binary from blob","path":"tink-agent","blob":"c97c40b0d8513844eafabc46fdae1c9bb09bc73e33c68f5404a75adc4c74229b"}
[   32.569770] tink-agent-setup[351]: {"time":"2026-05-05T13:02:16Z","level":"info","msg":"installed tink-agent","path":"/tink-agent"}
[   32.599599] tink-agent-setup[351]: {"time":"2026-05-05T13:02:16Z","level":"info","msg":"writing tink-agent environment","path":"/etc/tink-agent.env"}
[   32.615526] tink-agent-setup[351]: {"time":"2026-05-05T13:02:16Z","level":"info","msg":"tink-agent-setup complete"}
[   32.618409] systemd[1]: Finished tink-agent-setup.service - Tink Agent Setup (pull image and extract binary).
[   32.622522] systemd[1]: Started tink-agent.service - Tinkerbell Agent.
[   32.623298] systemd[1]: Reached target multi-user.target - Multi-User System.
[   32.623688] systemd[1]: Startup finished in 5.578s (kernel) + 27.044s (userspace) = 32.623s.
[   32.663077] tink-agent[532]: {"time":"2026-05-05T13:02:16Z","level":"info","msg":"starting tink-agent","args":"-runtime containerd -containerd-socket /run/containerd/containerd.sock -transport grpc -grpc-server tinkgrpc.app.192.168.66.171.nip.io:42113 -grpc-tls=false -grpc-insecure-tls=false -id rpi"}
[   32.682400] tink-agent[532]: {"time":"2026-05-05T13:02:16.308292372Z","level":0,"source":{"file":"home/runner/work/tinkerbell-tinkerbell/tinkerbell-tinkerbell/cmd/agent/main.go","line":88},"msg":"starting Agent","agentID":"rpi","runtime":"containerd","transport":"grpc","version":"v0.0.0-6b16bf78"}
[   32.901813] tink-agent[532]: {"time":"2026-05-05T13:02:16.526857446Z","level":0,"source":{"file":"home/runner/work/tinkerbell-tinkerbell/tinkerbell-tinkerbell/tink/agent/agent.go","line":314},"msg":"starting gRPC transport","agentID":"rpi","server":"tinkgrpc.app.192.168.66.171.nip.io:42113","attributes":{"cpu":{"totalCores":4,"totalThreads":4,"processors":[{"id":0,"cores":4,"threads":4,"vendor":"ARM","model":"","capabilities":["fp","asimd","evtstrm","crc32","cpuid"]}]},"memory":{"total":"8GB","usable":"8GB"},"blockDevices":[{"name":"sda","controllerType":"SCSI","driveType":"HDD","size":"239GB","physicalBlockSize":"512B","vendor":"ASMT","model":"Samsung_SSD_840_PRO_Series","wwn":"0x50025385a01950ad","serialNumber":"S1ATNSAF125270K"}],"networkInterfaces":[{"name":"end0","mac":"dc:a6:32:ec:8b:49","speed":"1000"}],"pciDevices":[{"vendor":"Broadcom Inc. and subsidiaries","product":"BCM2711 PCIe Bridge","class":"Bridge","driver":"pcieport"},{"vendor":"VIA Technologies, Inc.","product":"VL805/806 xHCI USB 3.0 Controller","class":"Serial bus controller","driver":"xhci_hcd"}],"chassis":{"serial":"unknown","vendor":"unknown"},"bios":{"vendor":"unknown","version":"unknown","releaseDate":"unknown"},"baseboard":{"vendor":"unknown","product":"unknown","version":"unknown","serialNumber":"unknown"},"product":{"name":"unknown","vendor":"unknown","serialNumber":"unknown"}}}
[   32.902697] tink-agent[532]: {"time":"2026-05-05T13:02:16.528714705Z","level":0,"source":{"file":"home/runner/work/tinkerbell-tinkerbell/tinkerbell-tinkerbell/tink/agent/agent.go","line":334},"msg":"using Containerd runtime","agentID":"rpi"}
[   33.340208] tink-agent[532]: {"time":"2026-05-05T13:02:16.965943446Z","level":0,"source":{"file":"home/runner/work/tinkerbell-tinkerbell/tinkerbell-tinkerbell/tink/agent/agent.go","line":102},"msg":"received action","agentID":"rpi","action":{"agent_id":"rpi","task_id":"01KQW3KB4574215S82YRD9TD96","workflow_id":"cluster-vmtest/vmtest-tb-workers-f6cmv-dkf2w","id":"01KQW3KB4574215S82YJ4RBF6E","name":"stream-image","image":"quay.io/tinkerbellrpardini/actions/image2disk:v0.0.27","env":[{"key":"COMPRESSED","value":"true"},{"key":"DEST_DISK","value":"/dev/disk/by-id/ata-Samsung_SSD_840_PRO_Series_S1ATNSAF125270K"},{"key":"IMG_URL","value":"http://images-and-hooks.app.192.168.66.171.nip.io:32083/Armbian-armsurvivors_26.04.30-1673_rpi4b_trixie_current-metadata-serialconsole-cloud-k8s-1.35.img.zst"}],"volumes":["/dev:/dev","/dev/console:/dev/console","/lib/firmware:/lib/firmware:ro"],"timeoutSeconds":600}}
[   34.369885] tink-agent[532]: {"time":"2026-05-05T13:02:17.995207204Z","level":0,"source":{"file":"home/runner/work/tinkerbell-tinkerbell/tinkerbell-tinkerbell/tink/agent/agent.go","line":111},"msg":"reported action status","agentID":"rpi","action":{"agent_id":"rpi","task_id":"01KQW3KB4574215S82YRD9TD96","workflow_id":"cluster-vmtest/vmtest-tb-workers-f6cmv-dkf2w","id":"01KQW3KB4574215S82YJ4RBF6E","name":"stream-image","image":"quay.io/tinkerbellrpardini/actions/image2disk:v0.0.27","env":[{"key":"COMPRESSED","value":"true"},{"key":"DEST_DISK","value":"/dev/disk/by-id/ata-Samsung_SSD_840_PRO_Series_S1ATNSAF125270K"},{"key":"IMG_URL","value":"http://images-and-hooks.app.192.168.66.171.nip.io:32083/Armbian-armsurvivors_26.04.30-1673_rpi4b_trixie_current-metadata-serialconsole-cloud-k8s-1.35.img.zst"}],"volumes":["/dev:/dev","/dev/console:/dev/console","/lib/firmware:/lib/firmware:ro"],"timeoutSeconds":600},"state":"running"}
[   36.572207] systemd[1]: var-lib-containerd-tmpmounts-containerd\x2dmount488864520.mount: Deactivated successfully.
[   37.784860] containerd[272]: time="2026-05-05T13:02:21.409192406Z" level=info msg="connecting to shim 6b7f547e482b3fd87d66c084ea17b29663e78f5eece6ba62b42fd6bd6f52b848" address="unix:///run/containerd/s/cdca23e5d09a6820b305cb1c864c57c7af66284ad0966a301e98f96a3bf53c46" namespace=tinkerbell protocol=ttrpc version=3
[   37.856104] containerd[272]: time="2026-05-05T13:02:21.481398406Z" level=warning msg="error from *cgroupsv2.Manager.EventChan" error="failed to add inotify watch for \"/sys/fs/cgroup/tinkerbell/6b7f547e482b3fd87d66c084ea17b29663e78f5eece6ba62b42fd6bd6f52b848/memory.events\": no such file or directory"
[   37.879353] systemd-networkd[240]: cni0: Link UP
[   37.879594] systemd-networkd[240]: cni0: Gained carrier
[   37.880110] systemd-networkd[240]: cni0: Lost carrier
[   37.907028] systemd-networkd[240]: veth869074ef: Link UP
[   37.926388] systemd-networkd[240]: veth869074ef: Gained carrier
[   37.929283] systemd-networkd[240]: cni0: Gained carrier
[   38.167007] tink-agent[532]: {"time":"2026-05-05T13:02:21.79161135Z","level":"INFO","source":{"function":"main.main","file":"/src/image2disk/main.go","line":45},"msg":"IMAGE2DISK - Cloud image streamer"}
[   38.171188] tink-agent[532]: {"time":"2026-05-05T13:02:21.797006721Z","level":"INFO","source":{"function":"github.com/tinkerbell/actions/image2disk/image.Write","file":"/src/image2disk/image/image.go","line":133},"msg":"Beginning write of image [Armbian-armsurvivors_26.04.30-1673_rpi4b_trixie_current-metadata-serialconsole-cloud-k8s-1.35.img.zst] to disk [/dev/disk/by-id/ata-Samsung_SSD_840_PRO_Series_S1ATNSAF125270K]"}
[   39.073251] systemd-networkd[240]: veth869074ef: Gained IPv6LL
[   39.073662] systemd-networkd[240]: cni0: Gained IPv6LL
[   41.172444] tink-agent[532]: {"time":"2026-05-05T13:02:24.797306812Z","level":"INFO","source":{"function":"github.com/tinkerbell/actions/image2disk/image.Write.func1","file":"/src/image2disk/image/image.go","line":144},"msg":"read and write progress","written":"419.250000MiB","compressedSize":"439.914148MiB","read":"39.063876MiB"}
[   44.173438] tink-agent[532]: {"time":"2026-05-05T13:02:27.797700717Z","level":"INFO","source":{"function":"github.com/tinkerbell/actions/image2disk/image.Write.func1","file":"/src/image2disk/image/image.go","line":144},"msg":"read and write progress","written":"777.875000MiB","compressedSize":"439.914148MiB","read":"125.923777MiB"}
[   46.558045] systemd[1]: systemd-hostnamed.service: Deactivated successfully.
[   47.174879] tink-agent[532]: {"time":"2026-05-05T13:02:30.797476845Z","level":"INFO","source":{"function":"github.com/tinkerbell/actions/image2disk/image.Write.func1","file":"/src/image2disk/image/image.go","line":144},"msg":"read and write progress","written":"1.036011GiB","compressedSize":"439.914148MiB","read":"230.003711MiB"}
[   50.173816] tink-agent[532]: {"time":"2026-05-05T13:02:33.79721788Z","level":"INFO","source":{"function":"github.com/tinkerbell/actions/image2disk/image.Write.func1","file":"/src/image2disk/image/image.go","line":144},"msg":"read and write progress","written":"1.322754GiB","compressedSize":"439.914148MiB","read":"314.899418MiB"}
[   53.172567] tink-agent[532]: {"time":"2026-05-05T13:02:36.797338749Z","level":"INFO","source":{"function":"github.com/tinkerbell/actions/image2disk/image.Write.func1","file":"/src/image2disk/image/image.go","line":144},"msg":"read and write progress","written":"1.712769GiB","compressedSize":"439.914148MiB","read":"340.948113MiB"}
[   56.177486] tink-agent[532]: {"time":"2026-05-05T13:02:39.797458711Z","level":"INFO","source":{"function":"github.com/tinkerbell/actions/image2disk/image.Write.func1","file":"/src/image2disk/image/image.go","line":144},"msg":"read and write progress","written":"2.149292GiB","compressedSize":"439.914148MiB","read":"348.032916MiB"}
[   59.174197] tink-agent[532]: {"time":"2026-05-05T13:02:42.797250617Z","level":"INFO","source":{"function":"github.com/tinkerbell/actions/image2disk/image.Write.func1","file":"/src/image2disk/image/image.go","line":144},"msg":"read and write progress","written":"2.484131GiB","compressedSize":"439.914148MiB","read":"408.601976MiB"}
[   60.434615] tink-agent[532]: {"time":"2026-05-05T13:02:44.05963035Z","level":"INFO","source":{"function":"github.com/tinkerbell/actions/image2disk/image.Write.func1","file":"/src/image2disk/image/image.go","line":141},"msg":"read and write progress","written":"2.609375GiB","compressedSize":"439.914148MiB","read":"439.914148MiB"}
[   63.442718] tink-agent[532]: {"time":"2026-05-05T13:02:47.067852355Z","level":"INFO","source":{"function":"main.main","file":"/src/image2disk/main.go","line":111},"msg":"Successfully wrote image to disk","image":"http://images-and-hooks.app.192.168.66.171.nip.io:32083/Armbian-armsurvivors_26.04.30-1673_rpi4b_trixie_current-metadata-serialconsole-cloud-k8s-1.35.img.zst","disk":"/dev/disk/by-id/ata-Samsung_SSD_840_PRO_Series_S1ATNSAF125270K"}
[   63.454758] systemd-networkd[240]: veth869074ef: Link DOWN
[   63.455079] systemd-networkd[240]: veth869074ef: Lost carrier
[   63.466010] systemd-networkd[240]: cni0: Lost carrier
[   63.586068] systemd[1]: run-containerd-io.containerd.runtime.v2.task-tinkerbell-6b7f547e482b3fd87d66c084ea17b29663e78f5eece6ba62b42fd6bd6f52b848-rootfs.mount: Deactivated successfully.
[   63.591145] containerd[272]: time="2026-05-05T13:02:47.216467667Z" level=info msg="shim disconnected" id=6b7f547e482b3fd87d66c084ea17b29663e78f5eece6ba62b42fd6bd6f52b848 namespace=tinkerbell
[   63.591564] containerd[272]: time="2026-05-05T13:02:47.216578167Z" level=info msg="cleaning up after shim disconnected" id=6b7f547e482b3fd87d66c084ea17b29663e78f5eece6ba62b42fd6bd6f52b848 namespace=tinkerbell
[   63.591842] containerd[272]: time="2026-05-05T13:02:47.216658870Z" level=info msg="cleaning up dead shim" id=6b7f547e482b3fd87d66c084ea17b29663e78f5eece6ba62b42fd6bd6f52b848 namespace=tinkerbell
[   63.635290] tink-agent[532]: {"time":"2026-05-05T13:02:47.260165366Z","level":0,"source":{"file":"home/runner/work/tinkerbell-tinkerbell/tinkerbell-tinkerbell/tink/agent/agent.go","line":136},"msg":"executed action","agentID":"rpi","action":{"agent_id":"rpi","task_id":"01KQW3KB4574215S82YRD9TD96","workflow_id":"cluster-vmtest/vmtest-tb-workers-f6cmv-dkf2w","id":"01KQW3KB4574215S82YJ4RBF6E","name":"stream-image","image":"quay.io/tinkerbellrpardini/actions/image2disk:v0.0.27","env":[{"key":"COMPRESSED","value":"true"},{"key":"DEST_DISK","value":"/dev/disk/by-id/ata-Samsung_SSD_840_PRO_Series_S1ATNSAF125270K"},{"key":"IMG_URL","value":"http://images-and-hooks.app.192.168.66.171.nip.io:32083/Armbian-armsurvivors_26.04.30-1673_rpi4b_trixie_current-metadata-serialconsole-cloud-k8s-1.35.img.zst"}],"volumes":["/dev:/dev","/dev/console:/dev/console","/lib/firmware:/lib/firmware:ro"],"timeoutSeconds":600,"executionStart":"2026-05-05T13:02:17.99536963Z"}}
[   63.656517] tink-agent[532]: {"time":"2026-05-05T13:02:47.279053557Z","level":0,"source":{"file":"home/runner/work/tinkerbell-tinkerbell/tinkerbell-tinkerbell/tink/agent/agent.go","line":173},"msg":"reported action status","agentID":"rpi","action":{"agent_id":"rpi","task_id":"01KQW3KB4574215S82YRD9TD96","workflow_id":"cluster-vmtest/vmtest-tb-workers-f6cmv-dkf2w","id":"01KQW3KB4574215S82YJ4RBF6E","name":"stream-image","image":"quay.io/tinkerbellrpardini/actions/image2disk:v0.0.27","env":[{"key":"COMPRESSED","value":"true"},{"key":"DEST_DISK","value":"/dev/disk/by-id/ata-Samsung_SSD_840_PRO_Series_S1ATNSAF125270K"},{"key":"IMG_URL","value":"http://images-and-hooks.app.192.168.66.171.nip.io:32083/Armbian-armsurvivors_26.04.30-1673_rpi4b_trixie_current-metadata-serialconsole-cloud-k8s-1.35.img.zst"}],"volumes":["/dev:/dev","/dev/console:/dev/console","/lib/firmware:/lib/firmware:ro"],"timeoutSeconds":600,"executionStart":"2026-05-05T13:02:17.99536963Z","executionStop":"2026-05-05T13:02:47.260582217Z","executionDuration":"29s265ms"},"state":"success"}
[   64.693676] tink-agent[532]: {"time":"2026-05-05T13:02:48.317903502Z","level":0,"source":{"file":"home/runner/work/tinkerbell-tinkerbell/tinkerbell-tinkerbell/tink/agent/agent.go","line":102},"msg":"received action","agentID":"rpi","action":{"agent_id":"rpi","task_id":"01KQW3KB4574215S82YRD9TD96","workflow_id":"cluster-vmtest/vmtest-tb-workers-f6cmv-dkf2w","id":"01KQW3KB4574215S82YKF3Z4XZ","name":"inject-cloud-init-hegel-cfg","image":"quay.io/tinkerbellrpardini/actions/writefile:v0.0.27","env":[{"key":"CONTENTS","value":"datasource:\n  Ec2:\n    metadata_urls: [\"http://cloud-metadata.app.192.168.66.171.nip.io:7080/tootles/instanceID/rpi\"]\n    strict_id: false\n    max_wait: 20\n    timeout: 5\nmanage_etc_hosts: localhost\nwarnings:\n  dsid_missing_source: off\n"},{"key":"DEST_DISK","value":"/dev/disk/by-id/ata-Samsung_SSD_840_PRO_Series_S1ATNSAF125270K-part2"},{"key":"DEST_PATH","value":"/etc/cloud/cloud.cfg.d/10_tinkerbell.cfg"},{"key":"DIRMODE","value":"0700"},{"key":"FS_TYPE","value":"ext4"},{"key":"GID","value":"0"},{"key":"MODE","value":"0600"},{"key":"UID","value":"0"}],"volumes":["/dev:/dev","/dev/console:/dev/console","/lib/firmware:/lib/firmware:ro"],"timeoutSeconds":90}}
[   64.702368] tink-agent[532]: {"time":"2026-05-05T13:02:48.328024588Z","level":0,"source":{"file":"home/runner/work/tinkerbell-tinkerbell/tinkerbell-tinkerbell/tink/agent/agent.go","line":111},"msg":"reported action status","agentID":"rpi","action":{"agent_id":"rpi","task_id":"01KQW3KB4574215S82YRD9TD96","workflow_id":"cluster-vmtest/vmtest-tb-workers-f6cmv-dkf2w","id":"01KQW3KB4574215S82YKF3Z4XZ","name":"inject-cloud-init-hegel-cfg","image":"quay.io/tinkerbellrpardini/actions/writefile:v0.0.27","env":[{"key":"CONTENTS","value":"datasource:\n  Ec2:\n    metadata_urls: [\"http://cloud-metadata.app.192.168.66.171.nip.io:7080/tootles/instanceID/rpi\"]\n    strict_id: false\n    max_wait: 20\n    timeout: 5\nmanage_etc_hosts: localhost\nwarnings:\n  dsid_missing_source: off\n"},{"key":"DEST_DISK","value":"/dev/disk/by-id/ata-Samsung_SSD_840_PRO_Series_S1ATNSAF125270K-part2"},{"key":"DEST_PATH","value":"/etc/cloud/cloud.cfg.d/10_tinkerbell.cfg"},{"key":"DIRMODE","value":"0700"},{"key":"FS_TYPE","value":"ext4"},{"key":"GID","value":"0"},{"key":"MODE","value":"0600"},{"key":"UID","value":"0"}],"volumes":["/dev:/dev","/dev/console:/dev/console","/lib/firmware:/lib/firmware:ro"],"timeoutSeconds":90},"state":"running"}
[   66.192158] systemd[1]: var-lib-containerd-tmpmounts-containerd\x2dmount362691885.mount: Deactivated successfully.
[   66.318183] containerd[272]: time="2026-05-05T13:02:49.943451094Z" level=info msg="connecting to shim 80531e4bafbebac279291a0a95bda1d53f4c0cabed1bd06444e651f9fbf980ed" address="unix:///run/containerd/s/67a46b07ccd7d303ef719fdd8613c3de523e7988ff44028708470abe1f050a0c" namespace=tinkerbell protocol=ttrpc version=3
[   66.396192] containerd[272]: time="2026-05-05T13:02:50.021046713Z" level=warning msg="error from *cgroupsv2.Manager.EventChan" error="failed to add inotify watch for \"/sys/fs/cgroup/tinkerbell/80531e4bafbebac279291a0a95bda1d53f4c0cabed1bd06444e651f9fbf980ed/memory.events\": no such file or directory"
[   66.411665] systemd-networkd[240]: veth24e9cc3d: Link UP
[   66.427992] systemd-networkd[240]: veth24e9cc3d: Gained carrier
[   66.430753] systemd-networkd[240]: cni0: Gained carrier
[   66.612875] tink-agent[532]: time=2026-05-05T13:02:50.237Z level=INFO msg="WriteFile - Write file to a disk device"
[   66.617455] tink-agent[532]: time=2026-05-05T13:02:50.243Z level=INFO msg="Mounted device successfully" source=/dev/disk/by-id/ata-Samsung_SSD_840_PRO_Series_S1ATNSAF125270K-part2 destination=/mountAction
[   66.619850] tink-agent[532]: time=2026-05-05T13:02:50.245Z level=INFO msg="Successfully wrote file" filePath=/etc/cloud/cloud.cfg.d/10_tinkerbell.cfg blockDevice=/dev/disk/by-id/ata-Samsung_SSD_840_PRO_Series_S1ATNSAF125270K-part2
[   66.633995] tink-agent[532]: time=2026-05-05T13:02:50.259Z level=INFO msg="Unmounted device successfully" source=/dev/disk/by-id/ata-Samsung_SSD_840_PRO_Series_S1ATNSAF125270K-part2 destination=/mountAction
[   66.636780] systemd-networkd[240]: veth24e9cc3d: Link DOWN
[   66.637189] systemd-networkd[240]: veth24e9cc3d: Lost carrier
[   66.786212] containerd[272]: time="2026-05-05T13:02:50.412190864Z" level=info msg="shim disconnected" id=80531e4bafbebac279291a0a95bda1d53f4c0cabed1bd06444e651f9fbf980ed namespace=tinkerbell
[   66.786528] containerd[272]: time="2026-05-05T13:02:50.412303753Z" level=info msg="cleaning up after shim disconnected" id=80531e4bafbebac279291a0a95bda1d53f4c0cabed1bd06444e651f9fbf980ed namespace=tinkerbell
[   66.786663] containerd[272]: time="2026-05-05T13:02:50.412388567Z" level=info msg="cleaning up dead shim" id=80531e4bafbebac279291a0a95bda1d53f4c0cabed1bd06444e651f9fbf980ed namespace=tinkerbell
[   66.817125] tink-agent[532]: {"time":"2026-05-05T13:02:50.442984779Z","level":0,"source":{"file":"home/runner/work/tinkerbell-tinkerbell/tinkerbell-tinkerbell/tink/agent/agent.go","line":136},"msg":"executed action","agentID":"rpi","action":{"agent_id":"rpi","task_id":"01KQW3KB4574215S82YRD9TD96","workflow_id":"cluster-vmtest/vmtest-tb-workers-f6cmv-dkf2w","id":"01KQW3KB4574215S82YKF3Z4XZ","name":"inject-cloud-init-hegel-cfg","image":"quay.io/tinkerbellrpardini/actions/writefile:v0.0.27","env":[{"key":"CONTENTS","value":"datasource:\n  Ec2:\n    metadata_urls: [\"http://cloud-metadata.app.192.168.66.171.nip.io:7080/tootles/instanceID/rpi\"]\n    strict_id: false\n    max_wait: 20\n    timeout: 5\nmanage_etc_hosts: localhost\nwarnings:\n  dsid_missing_source: off\n"},{"key":"DEST_DISK","value":"/dev/disk/by-id/ata-Samsung_SSD_840_PRO_Series_S1ATNSAF125270K-part2"},{"key":"DEST_PATH","value":"/etc/cloud/cloud.cfg.d/10_tinkerbell.cfg"},{"key":"DIRMODE","value":"0700"},{"key":"FS_TYPE","value":"ext4"},{"key":"GID","value":"0"},{"key":"MODE","value":"0600"},{"key":"UID","value":"0"}],"volumes":["/dev:/dev","/dev/console:/dev/console","/lib/firmware:/lib/firmware:ro"],"timeoutSeconds":90,"executionStart":"2026-05-05T13:02:48.328341309Z"}}
[   66.845904] tink-agent[532]: {"time":"2026-05-05T13:02:50.471441328Z","level":0,"source":{"file":"home/runner/work/tinkerbell-tinkerbell/tinkerbell-tinkerbell/tink/agent/agent.go","line":173},"msg":"reported action status","agentID":"rpi","action":{"agent_id":"rpi","task_id":"01KQW3KB4574215S82YRD9TD96","workflow_id":"cluster-vmtest/vmtest-tb-workers-f6cmv-dkf2w","id":"01KQW3KB4574215S82YKF3Z4XZ","name":"inject-cloud-init-hegel-cfg","image":"quay.io/tinkerbellrpardini/actions/writefile:v0.0.27","env":[{"key":"CONTENTS","value":"datasource:\n  Ec2:\n    metadata_urls: [\"http://cloud-metadata.app.192.168.66.171.nip.io:7080/tootles/instanceID/rpi\"]\n    strict_id: false\n    max_wait: 20\n    timeout: 5\nmanage_etc_hosts: localhost\nwarnings:\n  dsid_missing_source: off\n"},{"key":"DEST_DISK","value":"/dev/disk/by-id/ata-Samsung_SSD_840_PRO_Series_S1ATNSAF125270K-part2"},{"key":"DEST_PATH","value":"/etc/cloud/cloud.cfg.d/10_tinkerbell.cfg"},{"key":"DIRMODE","value":"0700"},{"key":"FS_TYPE","value":"ext4"},{"key":"GID","value":"0"},{"key":"MODE","value":"0600"},{"key":"UID","value":"0"}],"volumes":["/dev:/dev","/dev/console:/dev/console","/lib/firmware:/lib/firmware:ro"],"timeoutSeconds":90,"executionStart":"2026-05-05T13:02:48.328341309Z","executionStop":"2026-05-05T13:02:50.443182001Z","executionDuration":"2s114ms"},"state":"success"}
[   66.863567] tink-agent[532]: {"time":"2026-05-05T13:02:50.489344808Z","level":0,"source":{"file":"home/runner/work/tinkerbell-tinkerbell/tinkerbell-tinkerbell/tink/agent/agent.go","line":102},"msg":"received action","agentID":"rpi","action":{"agent_id":"rpi","task_id":"01KQW3KB4574215S82YRD9TD96","workflow_id":"cluster-vmtest/vmtest-tb-workers-f6cmv-dkf2w","id":"01KQW3KB4574215S82YKJXR3DM","name":"inject-cloud-init-hegel-ds","image":"quay.io/tinkerbellrpardini/actions/writefile:v0.0.27","env":[{"key":"CONTENTS","value":"datasource: Ec2\n"},{"key":"DEST_DISK","value":"/dev/disk/by-id/ata-Samsung_SSD_840_PRO_Series_S1ATNSAF125270K-part2"},{"key":"DEST_PATH","value":"/etc/cloud/ds-identify.cfg"},{"key":"DIRMODE","value":"0700"},{"key":"FS_TYPE","value":"ext4"},{"key":"GID","value":"0"},{"key":"MODE","value":"0600"},{"key":"UID","value":"0"}],"volumes":["/dev:/dev","/dev/console:/dev/console","/lib/firmware:/lib/firmware:ro"],"timeoutSeconds":90}}
[   66.885667] tink-agent[532]: {"time":"2026-05-05T13:02:50.51138913Z","level":0,"source":{"file":"home/runner/work/tinkerbell-tinkerbell/tinkerbell-tinkerbell/tink/agent/agent.go","line":111},"msg":"reported action status","agentID":"rpi","action":{"agent_id":"rpi","task_id":"01KQW3KB4574215S82YRD9TD96","workflow_id":"cluster-vmtest/vmtest-tb-workers-f6cmv-dkf2w","id":"01KQW3KB4574215S82YKJXR3DM","name":"inject-cloud-init-hegel-ds","image":"quay.io/tinkerbellrpardini/actions/writefile:v0.0.27","env":[{"key":"CONTENTS","value":"datasource: Ec2\n"},{"key":"DEST_DISK","value":"/dev/disk/by-id/ata-Samsung_SSD_840_PRO_Series_S1ATNSAF125270K-part2"},{"key":"DEST_PATH","value":"/etc/cloud/ds-identify.cfg"},{"key":"DIRMODE","value":"0700"},{"key":"FS_TYPE","value":"ext4"},{"key":"GID","value":"0"},{"key":"MODE","value":"0600"},{"key":"UID","value":"0"}],"volumes":["/dev:/dev","/dev/console:/dev/console","/lib/firmware:/lib/firmware:ro"],"timeoutSeconds":90},"state":"running"}
[   66.947841] containerd[272]: time="2026-05-05T13:02:50.573751532Z" level=info msg="connecting to shim a6181d1b2a8645e298e6454a8da98c9424ba311527662b72270db9320791106c" address="unix:///run/containerd/s/fa50e54ce80ea33f7fe0636c0f3ec5558bac2826b70588b49dd63e0d47b49e55" namespace=tinkerbell protocol=ttrpc version=3
[   67.017526] containerd[272]: time="2026-05-05T13:02:50.643125196Z" level=warning msg="error from *cgroupsv2.Manager.EventChan" error="failed to add inotify watch for \"/sys/fs/cgroup/tinkerbell/a6181d1b2a8645e298e6454a8da98c9424ba311527662b72270db9320791106c/memory.events\": no such file or directory"
[   67.026265] systemd-networkd[240]: cni0: Lost carrier
[   67.031545] systemd-networkd[240]: veth157c7d34: Link UP
[   67.047271] systemd-networkd[240]: veth157c7d34: Gained carrier
[   67.047990] systemd-networkd[240]: cni0: Gained carrier
[   67.184723] systemd[1]: run-containerd-io.containerd.runtime.v2.task-tinkerbell-80531e4bafbebac279291a0a95bda1d53f4c0cabed1bd06444e651f9fbf980ed-rootfs.mount: Deactivated successfully.
[   67.236282] tink-agent[532]: time=2026-05-05T13:02:50.861Z level=INFO msg="WriteFile - Write file to a disk device"
[   67.241418] tink-agent[532]: time=2026-05-05T13:02:50.867Z level=INFO msg="Mounted device successfully" source=/dev/disk/by-id/ata-Samsung_SSD_840_PRO_Series_S1ATNSAF125270K-part2 destination=/mountAction
[   67.243711] tink-agent[532]: time=2026-05-05T13:02:50.869Z level=INFO msg="Successfully wrote file" filePath=/etc/cloud/ds-identify.cfg blockDevice=/dev/disk/by-id/ata-Samsung_SSD_840_PRO_Series_S1ATNSAF125270K-part2
[   67.262534] tink-agent[532]: time=2026-05-05T13:02:50.887Z level=INFO msg="Unmounted device successfully" source=/dev/disk/by-id/ata-Samsung_SSD_840_PRO_Series_S1ATNSAF125270K-part2 destination=/mountAction
[   67.267979] systemd-networkd[240]: veth157c7d34: Link DOWN
[   67.268702] systemd-networkd[240]: veth157c7d34: Lost carrier
[   67.394049] systemd[1]: run-containerd-io.containerd.runtime.v2.task-tinkerbell-a6181d1b2a8645e298e6454a8da98c9424ba311527662b72270db9320791106c-rootfs.mount: Deactivated successfully.
[   67.397177] containerd[272]: time="2026-05-05T13:02:51.022522893Z" level=info msg="shim disconnected" id=a6181d1b2a8645e298e6454a8da98c9424ba311527662b72270db9320791106c namespace=tinkerbell
[   67.397519] containerd[272]: time="2026-05-05T13:02:51.022682837Z" level=info msg="cleaning up after shim disconnected" id=a6181d1b2a8645e298e6454a8da98c9424ba311527662b72270db9320791106c namespace=tinkerbell
[   67.397756] containerd[272]: time="2026-05-05T13:02:51.022764337Z" level=info msg="cleaning up dead shim" id=a6181d1b2a8645e298e6454a8da98c9424ba311527662b72270db9320791106c namespace=tinkerbell
[   67.413297] systemd-networkd[240]: cni0: Lost carrier
[   67.430861] tink-agent[532]: {"time":"2026-05-05T13:02:51.056702472Z","level":0,"source":{"file":"home/runner/work/tinkerbell-tinkerbell/tinkerbell-tinkerbell/tink/agent/agent.go","line":136},"msg":"executed action","agentID":"rpi","action":{"agent_id":"rpi","task_id":"01KQW3KB4574215S82YRD9TD96","workflow_id":"cluster-vmtest/vmtest-tb-workers-f6cmv-dkf2w","id":"01KQW3KB4574215S82YKJXR3DM","name":"inject-cloud-init-hegel-ds","image":"quay.io/tinkerbellrpardini/actions/writefile:v0.0.27","env":[{"key":"CONTENTS","value":"datasource: Ec2\n"},{"key":"DEST_DISK","value":"/dev/disk/by-id/ata-Samsung_SSD_840_PRO_Series_S1ATNSAF125270K-part2"},{"key":"DEST_PATH","value":"/etc/cloud/ds-identify.cfg"},{"key":"DIRMODE","value":"0700"},{"key":"FS_TYPE","value":"ext4"},{"key":"GID","value":"0"},{"key":"MODE","value":"0600"},{"key":"UID","value":"0"}],"volumes":["/dev:/dev","/dev/console:/dev/console","/lib/firmware:/lib/firmware:ro"],"timeoutSeconds":90,"executionStart":"2026-05-05T13:02:50.511622574Z"}}
[   67.457904] tink-agent[532]: {"time":"2026-05-05T13:02:51.083315196Z","level":0,"source":{"file":"home/runner/work/tinkerbell-tinkerbell/tinkerbell-tinkerbell/tink/agent/agent.go","line":173},"msg":"reported action status","agentID":"rpi","action":{"agent_id":"rpi","task_id":"01KQW3KB4574215S82YRD9TD96","workflow_id":"cluster-vmtest/vmtest-tb-workers-f6cmv-dkf2w","id":"01KQW3KB4574215S82YKJXR3DM","name":"inject-cloud-init-hegel-ds","image":"quay.io/tinkerbellrpardini/actions/writefile:v0.0.27","env":[{"key":"CONTENTS","value":"datasource: Ec2\n"},{"key":"DEST_DISK","value":"/dev/disk/by-id/ata-Samsung_SSD_840_PRO_Series_S1ATNSAF125270K-part2"},{"key":"DEST_PATH","value":"/etc/cloud/ds-identify.cfg"},{"key":"DIRMODE","value":"0700"},{"key":"FS_TYPE","value":"ext4"},{"key":"GID","value":"0"},{"key":"MODE","value":"0600"},{"key":"UID","value":"0"}],"volumes":["/dev:/dev","/dev/console:/dev/console","/lib/firmware:/lib/firmware:ro"],"timeoutSeconds":90,"executionStart":"2026-05-05T13:02:50.511622574Z","executionStop":"2026-05-05T13:02:51.056869379Z","executionDuration":"545ms246us"},"state":"success"}
[   67.474811] tink-agent[532]: {"time":"2026-05-05T13:02:51.100606457Z","level":0,"source":{"file":"home/runner/work/tinkerbell-tinkerbell/tinkerbell-tinkerbell/tink/agent/agent.go","line":102},"msg":"received action","agentID":"rpi","action":{"agent_id":"rpi","task_id":"01KQW3KB4574215S82YRD9TD96","workflow_id":"cluster-vmtest/vmtest-tb-workers-f6cmv-dkf2w","id":"01KQW3KB4574215S82YN5R2R66","name":"reboot","image":"quay.io/tinkerbellrpardini/actions/waitdaemon:v0.0.27","args":["nsenter","--target","1","--pid","--mount","--uts","--ipc","--net","systemctl","reboot"],"env":[{"key":"IMAGE","value":"docker.io/robertdebock/debian:latest"},{"key":"WAIT_SECONDS","value":"5"}],"volumes":["/dev:/dev","/dev/console:/dev/console","/lib/firmware:/lib/firmware:ro","/var/run/docker.sock:/var/run/docker.sock","/run/systemd:/run/systemd","/run/dbus:/run/dbus"],"namespaces":{"pid":"host"},"timeoutSeconds":90}}
[   67.491595] tink-agent[532]: {"time":"2026-05-05T13:02:51.117249201Z","level":0,"source":{"file":"home/runner/work/tinkerbell-tinkerbell/tinkerbell-tinkerbell/tink/agent/agent.go","line":111},"msg":"reported action status","agentID":"rpi","action":{"agent_id":"rpi","task_id":"01KQW3KB4574215S82YRD9TD96","workflow_id":"cluster-vmtest/vmtest-tb-workers-f6cmv-dkf2w","id":"01KQW3KB4574215S82YN5R2R66","name":"reboot","image":"quay.io/tinkerbellrpardini/actions/waitdaemon:v0.0.27","args":["nsenter","--target","1","--pid","--mount","--uts","--ipc","--net","systemctl","reboot"],"env":[{"key":"IMAGE","value":"docker.io/robertdebock/debian:latest"},{"key":"WAIT_SECONDS","value":"5"}],"volumes":["/dev:/dev","/dev/console:/dev/console","/lib/firmware:/lib/firmware:ro","/var/run/docker.sock:/var/run/docker.sock","/run/systemd:/run/systemd","/run/dbus:/run/dbus"],"namespaces":{"pid":"host"},"timeoutSeconds":90},"state":"running"}
[   69.870882] systemd[1]: var-lib-containerd-tmpmounts-containerd\x2dmount292245155.mount: Deactivated successfully.
[   71.238541] containerd[272]: time="2026-05-05T13:02:54.863793349Z" level=info msg="connecting to shim d47043cd042cf751e7806cd60801e751e6285de35fa01dee41708c75a124db91" address="unix:///run/containerd/s/49465685cb7d7cb455f5999d9342515b0efc296e2cda5058c8e500794d8844fe" namespace=tinkerbell protocol=ttrpc version=3
[   71.309344] containerd[272]: time="2026-05-05T13:02:54.934829175Z" level=warning msg="error from *cgroupsv2.Manager.EventChan" error="failed to add inotify watch for \"/sys/fs/cgroup/tinkerbell/d47043cd042cf751e7806cd60801e751e6285de35fa01dee41708c75a124db91/memory.events\": no such file or directory"
[   71.326258] systemd-networkd[240]: vethe13e01a2: Link UP
[   71.337634] systemd-networkd[240]: vethe13e01a2: Gained carrier
[   71.339769] systemd-networkd[240]: cni0: Gained carrier
[   71.530130] tink-agent[532]: {"time":"2026-05-05T13:02:55.155090951Z","level":"INFO","msg":"starting waitdaemon","phase":"","image":"docker.io/robertdebock/debian:latest","waitTime":"5","runtime":"","nerdctlNamespace":"tinkerbell","nsenter":true}
[   71.600825] tink-agent[532]: {"time":"2026-05-05T13:02:55.226394838Z","level":"INFO","msg":"running first fork"}
[   71.666387] tink-agent[532]: {"time":"2026-05-05T13:02:55.29214468Z","level":"INFO","msg":"pulling image","image":"docker.io/robertdebock/debian:latest"}
<...snip...>
[   83.127406] tink-agent[532]: elapsed: 10.7s                                                                    total:  57.3 M (5.4 MiB/s)
[   83.127565] systemd[1]: Started nerdctl-dde93aaf8f0d9ae82e6329fff6785a50e9816b3ad1f026771cc7ddd1eafa6857.scope - libcontainer container dde93aaf8f0d9ae82e6329fff6785a50e9816b3ad1f026771cc7ddd1eafa6857.
[   83.129798] systemd-networkd[240]: vethaaf11f8b: Link UP
[   83.130110] systemd-networkd[240]: vethaaf11f8b: Gained carrier
[   83.291182] containerd[272]: time="2026-05-05T13:03:06.916384452Z" level=warning msg="error from *cgroupsv2.Manager.EventChan" error="failed to add inotify watch for \"/sys/fs/cgroup/system.slice/nerdctl-dde93aaf8f0d9ae82e6329fff6785a50e9816b3ad1f026771cc7ddd1eafa6857.scope/memory.events\": no such file or directory"
[   83.327870] systemd-networkd[240]: vethe13e01a2: Link DOWN
[   83.328443] systemd-networkd[240]: vethe13e01a2: Lost carrier
[   83.469629] containerd[272]: time="2026-05-05T13:03:07.095621984Z" level=info msg="shim disconnected" id=d47043cd042cf751e7806cd60801e751e6285de35fa01dee41708c75a124db91 namespace=tinkerbell
[   83.469931] containerd[272]: time="2026-05-05T13:03:07.095724169Z" level=info msg="cleaning up after shim disconnected" id=d47043cd042cf751e7806cd60801e751e6285de35fa01dee41708c75a124db91 namespace=tinkerbell
[   83.470094] containerd[272]: time="2026-05-05T13:03:07.095809780Z" level=info msg="cleaning up dead shim" id=d47043cd042cf751e7806cd60801e751e6285de35fa01dee41708c75a124db91 namespace=tinkerbell
[   83.501180] tink-agent[532]: {"time":"2026-05-05T13:03:07.127069443Z","level":0,"source":{"file":"home/runner/work/tinkerbell-tinkerbell/tinkerbell-tinkerbell/tink/agent/agent.go","line":136},"msg":"executed action","agentID":"rpi","action":{"agent_id":"rpi","task_id":"01KQW3KB4574215S82YRD9TD96","workflow_id":"cluster-vmtest/vmtest-tb-workers-f6cmv-dkf2w","id":"01KQW3KB4574215S82YN5R2R66","name":"reboot","image":"quay.io/tinkerbellrpardini/actions/waitdaemon:v0.0.27","args":["nsenter","--target","1","--pid","--mount","--uts","--ipc","--net","systemctl","reboot"],"env":[{"key":"IMAGE","value":"docker.io/robertdebock/debian:latest"},{"key":"WAIT_SECONDS","value":"5"}],"volumes":["/dev:/dev","/dev/console:/dev/console","/lib/firmware:/lib/firmware:ro","/var/run/docker.sock:/var/run/docker.sock","/run/systemd:/run/systemd","/run/dbus:/run/dbus"],"namespaces":{"pid":"host"},"timeoutSeconds":90,"executionStart":"2026-05-05T13:02:51.117547311Z"}}
[   83.521891] tink-agent[532]: {"time":"2026-05-05T13:03:07.147540224Z","level":0,"source":{"file":"home/runner/work/tinkerbell-tinkerbell/tinkerbell-tinkerbell/tink/agent/agent.go","line":173},"msg":"reported action status","agentID":"rpi","action":{"agent_id":"rpi","task_id":"01KQW3KB4574215S82YRD9TD96","workflow_id":"cluster-vmtest/vmtest-tb-workers-f6cmv-dkf2w","id":"01KQW3KB4574215S82YN5R2R66","name":"reboot","image":"quay.io/tinkerbellrpardini/actions/waitdaemon:v0.0.27","args":["nsenter","--target","1","--pid","--mount","--uts","--ipc","--net","systemctl","reboot"],"env":[{"key":"IMAGE","value":"docker.io/robertdebock/debian:latest"},{"key":"WAIT_SECONDS","value":"5"}],"volumes":["/dev:/dev","/dev/console:/dev/console","/lib/firmware:/lib/firmware:ro","/var/run/docker.sock:/var/run/docker.sock","/run/systemd:/run/systemd","/run/dbus:/run/dbus"],"namespaces":{"pid":"host"},"timeoutSeconds":90,"executionStart":"2026-05-05T13:02:51.117547311Z","executionStop":"2026-05-05T13:03:07.12724148Z","executionDuration":"16s9ms"},"state":"success"}
[   83.740149] systemd[1]: run-containerd-io.containerd.runtime.v2.task-tinkerbell-d47043cd042cf751e7806cd60801e751e6285de35fa01dee41708c75a124db91-rootfs.mount: Deactivated successfully.

RPi: BOOTLOADER release VERSION:e608a69d DATE: 2024/04/15 TIME: 14:12:14
BOOTMODE: 0x06 partition 0 build-ts BUILD_TIMESTAMP=1713186734 serial 196f8c53 boardrev d03114 stc 423743
PM_RSTS: 0x00001000
part 00000000 reset_info 00000000
uSD voltage 3.3V
Initialising SDRAM 'Micron' 32Gb x2 total-size: 64 Gbit 3200
DDR 3200 1 0 64 152

XHCI-STOP
xHC ver: 256 HCS: 05000420 fc000031 00e70004 HCC: 002841eb
USBSTS 11
xHC ver: 256 HCS: 05000420 fc000031 00e70004 HCC: 002841eb
xHC ports 5 slots 32 intrs 4
Boot mode: USB-MSD (04) order f21
USB2[1] 400202e1 connected
USB2 root HUB port 1 init
DEV [01:00] 2.16 000000:01 class 9 VID 2109 PID 3431
HUB init [01:00] 2.16 000000:01
USB3[2] 00021203 connected enabled
USB3 root HUB port 2 init
DEV [02:00] 3.00 000000:02 class 0 VID 174c PID 55aa
MSD device [02:00] 3.00 000000:02 conf 0 iface 0 ep 81#1024 02#1024
MSD [02:00] 3.00 000000:02 register MSD
XHCI-STOP
xHC ver: 256 HCS: 05000420 fc000031 00e70004 HCC: 002841eb
USBSTS 18
XHCI-STOP
xHC ver: 256 HCS: 05000420 fc000031 00e70004 HCC: 002841eb
USBSTS 19
xHC ver: 256 HCS: 05000420 fc000031 00e70004 HCC: 002841eb
xHC ports 5 slots 32 intrs 4
USB3[2] 000002b1 connected
USB2[1] 400202e1 connected
USB2 root HUB port 1 init
DEV [01:00] 2.16 000000:01 class 9 VID 2109 PID 3431
HUB init [01:00] 2.16 000000:01
USB3[2] 00281203 connected enabled
USB3 root HUB port 2 init
DEV [02:00] 3.00 000000:02 class 0 VID 174c PID 55aa
MSD device [02:00] 3.00 000000:02 conf 0 iface 0 ep 81#1024 02#1024
MSD [02:00] 3.00 000000:02 register MSD
MSD [02:00] 3.00 000000:02 LUN 0
MSD INQUIRY [02:00] 3.00 000000:02
MSD [02:00] 3.00 000000:02 lun 0 block-count 500118192 block-size 512
MBR: 0x00002000, 1048576 type: 0x0b
MBR: 0x00102000, 4415488 type: 0x83
MBR: 0x00000000,       0 type: 0x00
MBR: 0x00000000,       0 type: 0x00
Trying partition: 0
type: 32 lba: 8192 oem: 'mkfs.fat' volume: ' RPICFG     '
rsc 32 fat-sectors 1024 c-count 130812 c-size 8
root dir cluster 2 sectors 0 entries 0
FAT32 clusters 130812
Trying partition: 0
type: 32 lba: 8192 oem: 'mkfs.fat' volume: ' RPICFG     '
rsc 32 fat-sectors 1024 c-count 130812 c-size 8
root dir cluster 2 sectors 0 entries 0
FAT32 clusters 130812
Read config.txt bytes     1475 hnd 0x4972
Read start4.elf bytes  2263968 hnd 0x441
Read fixup4.dat bytes     5456 hnd 0x157
0x00d03114 0x00000000 0x00001fff
MEM GPU: 76 ARM: 947 TOTAL: 1023
Firmware: 5560078dcc8591a00f57b9068d13e5544aeef3aa Apr 30 2025 13:33:39
Starting start4.elf @ 0xfeb00200 partition 0
+
[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd083]
[    0.000000] Linux version 6.18.24-current-bcm2711 (build@armbian) (aarch64-linux-gnu-gcc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0, GNU ld (GNU Binutils for Ubuntu) 2.42) #61 SMP PREEMPT Wed Apr 29 14:47:18 UTC 2026
...

@rpardini
rpardini force-pushed the pr/Introduce-flavors-CLI-rework-Kernel-rework-RaspberryPi-et-al-support branch from bb125d6 to 3babcdb Compare June 15, 2026 12:45
@rpardini
rpardini force-pushed the pr/Introduce-flavors-CLI-rework-Kernel-rework-RaspberryPi-et-al-support branch from 3babcdb to 6e7f220 Compare July 24, 2026 10:22
rpardini added 25 commits July 28, 2026 17:49
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- .editorconfig for shell scripts and shell templates

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
…tools tree across invocations

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- this will allow using a generic/distro kernel instead of building one

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- hack until it uses the mkosi-supplied kernel for everything
- artifacts: look for mkosi-supplied vmlinuz first

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- self-built kernel from source will come back at a later stage, as a .deb package

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- just do everything at once

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
…racut/initramfs-tools)

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- also: show info about modules and full rootfs

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- later to be reborn as standard apt package

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- mkosi.finalize: clean up logging a bit
- mkosi.postinst: debugs

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
gha: fix
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
gha: pass DEFAULT_FLAVOR_ID as KERNEL_VERSION for publish-combined - retry
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- `--flavor-id`

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
rpardini added 22 commits July 28, 2026 17:49
…se mkosi-chroot

- set `[Build]`.`WithNetwork=yes` so scripts can hit the network if needed
- mkosi.postinst is _not_ mkosi.postinst.chroot
  - See https://github.com/systemd/mkosi/blob/main/mkosi/resources/man/mkosi.1.md#scripts

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- publish is a release subcommand now
- logging fixes, don't show locals, suppress Docker traces
- TODO: BUILDAH_INSECURE etc
- center on Config (release_ prefix), Docker repasses
- drop `git describe`, always use `v0.0.0-{sha}`

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- publish all flavors
- last-minute tarball of directories (dtbs, firmware) for GH Release upload
- bump actions, drop unused envs, etc
- ci: don't fetch-depth:0 as we don't do git describe anymore

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
…ure registries

- nee `BUILDAH_INSECURE`, also used for skopeo
- mostly for development vs `registry:2`
  - eg `docker run -p 5001:5000 -it registry:2`
  - and `REGISTRY_INSECURE=1 uv run captain ... --registry 192.168.66.10:5001 publish`

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- allows for
  - `custom/packages.txt`: extra packages to be installed
  - `custom/mkosi-postinst` and `custom/mkosi-finalize` folders: extra scripts
  - `custom/files`: extra files in root filesystem
- when rendering templates, force newline at the end of each
- pass `custom` dir down to Docker

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- so publish can use GHA-provided docker authentication vs ghcr.io

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
… files)

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- GHA has skopeo and buildah available in its default runners, but they're old versions
- use Docker mode by default also simplifies end-user usage

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
…ifests

- makes browsing ghcr.io a bit easier
- drop sha/tag from manifest metadata to up SHA-based reuse

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- otherwise, history between otherwise identical manifests differs for little reason

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
…eterminism)

- otherwise, history between otherwise identical manifests differs for little reason

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- eg `rockchip64-*` matches `rockchip64-vendor`
- show sha256's after restore & before save

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
- edge is at 7.0.y; oldlts is at 6.12.y
- after 6.18.y, meson64 with PCIe is really not stable

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
…on-debian

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
export_image() now returns the top-level entries (files and dirs) the
pulled layers actually contained; pull() recaps from that instead of
scanning output_dir with iterdir(), which listed stale on-disk files and
dropped directory artifacts (DTBs) via its is_file() filter.

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
initramfs/iso outputs live under <flavor>/<arch>/<flavor_hash>/, but the
caches persist the whole mkosi.output/{initramfs,iso} tree. A restore-key
(prefix) cache hit brings in the previous hash's dir, which then gets
re-saved alongside the new one and accumulates forever.

Add an opt-in --drop-old-caches flag (env CAPTAIN_DROP_OLD_CACHES) that
prunes sibling hash dirs after a build, keeping only the current hash;
wired into the CI flavor-build jobs via the shared build env. Default
(local) behaviour is unchanged, so prior versions are kept.

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Adds a 'captain prepare-versions' helper that resolves two dynamic tokens
and prints them as name=value for $GITHUB_OUTPUT:

- kernel_version: latest kernel.org point release of the configured
  branch (from releases.json), so the from-source kernel is never pinned;
  falls back to the hardcoded default off-CI.
- armbian_version: a token derived from the armbian-next repo Release
  ETag, folded into armbian flavors' mkosi.conf (hence flavor_hash) so
  they rebuild when armbian publishes a newer kernel under the same
  package name — replacing the hand-edited 'force a cache miss' comment.

The CI 'lint' job is renamed 'prepare' and now emits both as outputs;
build jobs consume them via KERNEL_VERSION/ARMBIAN_VERSION env and fold
them into the kernel/initramfs/iso cache keys so caches track versions.
--kernel-version becomes a global option (shared by kernel + build), and
the kernel save-gate now checks the correct cache-hit id.

Signed-off-by: Ricardo Pardini <ricardo@pardini.net>
Assisted-By: Claude Opus 4.8
@rpardini
rpardini force-pushed the pr/Introduce-flavors-CLI-rework-Kernel-rework-RaspberryPi-et-al-support branch from 6e7f220 to 7039405 Compare July 28, 2026 15:49

@jacobweinstock jacobweinstock left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this, @rpardini !

@jacobweinstock

Copy link
Copy Markdown
Member

FYI, im merging this manually and will then come back around and update the mergify config.

@jacobweinstock
jacobweinstock merged commit dd8b328 into tinkerbell:main Jul 28, 2026
21 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kind/enhancement ready-to-merge Signal Mergify to merge the PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants