Skip to content

Instantly share code, notes, and snippets.

View cgwalters's full-sized avatar
👍
LGTM

Colin Walters cgwalters

👍
LGTM
View GitHub Profile
flowchart TD
    firmware --- sd-boot --- UKI --- Linux-kernel
    Linux-kernel --- initramfs --- ostree-prepare-root.service
    ostree-prepare-root.service --- rootfs-key
    rootfs-key --- signature-on-ostree-commit
$ tmt run -vvv -ddd -l login
Using tree '/var/home/walters/src/github/containers/bootc'.
Workdir '/var/tmp/tmt/run-005' already exists.
/var/tmp/tmt/run-005
tmt version: 1.33.0
tmt command line: /usr/bin/tmt run -vvv -ddd -l login
Run command: cat /etc/os-release
out: NAME="Fedora Linux"
out: VERSION="40 (Container Image Prerelease)"
manifest - finished successfully
cp: error writing '/output/image/./disk.raw': Resource temporarily unavailable
Traceback (most recent call last):
  File "/usr/bin/osbuild", line 33, in <module>
    sys.exit(load_entry_point('osbuild==119', 'console_scripts', 'osbuild')())
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/site-packages/osbuild/main_cli.py", line 197, in osbuild_cli
    export(pid, output_directory, object_store, manifest)
  File "/usr/lib/python3.12/site-packages/osbuild/main_cli.py", line 62, in export

containers/storage and composefs

The composefs project is a generic utility to create and mount filesystem trees; it knows nothing about OCI or containers.

The containers/storage project is a Go library for storing and mounting OCI/Docker containers; it can optionally use composefs.

Enabling

At the current time, the composefs backend is not enabled by default. Enabling it requires at least these flags:

$ cargo build --release
   Compiling krunkit v0.1.0 (/Users/walters/src/github/containers/krunkit)
error: linking with `cc` failed: exit status: 1
  |
  = note: env -u IPHONEOS_DEPLOYMENT_TARGET -u TVOS_DEPLOYMENT_TARGET LC_ALL="C" PATH="/Users/walters/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/aarch64-apple-darwin/bin:/usr/bin:/bin:/opt/podman/bin:/opt/homebrew/bin:/Users/walters/.cargo/bin:/usr/local/bin" VSLANG="1033" ZERO_AR_DATE="1" "cc" "-arch" "arm64" "/var/folders/9j/jpms114j76q64fhjrq8kw71w0000gn/T/rustcAo9YET/symbols.o" "/Users/walters/src/github/containers/krunkit/target/release/deps/krunkit-0fa2d8ec3a3c8061.krunkit.65e17eeac52f16f7-cgu.00.rcgu.o" "/Users/walters/src/github/containers/krunkit/target/release/deps/krunkit-0fa2d8ec3a3c8061.krunkit.65e17eeac52f16f7-cgu.01.rcgu.o" "/Users/walters/src/github/containers/krunkit/target/release/deps/krunkit-0fa2d8ec3a3c8061.krunkit.65e17eeac52f16f7-cgu.02.rcgu.o" "/Users/walters/src/github/containers/krunkit/target/release/deps/krunkit-
podman --log-level debug machine init --now 01/02/24 10:13:12 AM
INFO[0000] /Users/walters/src/github/containers/podman/bin/darwin/podman filtering at log level debug
DEBU[0000] Using Podman machine with `applehv` virtualization provider
DEBU[0000] Detected compression format gzip
Extracting compressed file: podman-machine-default_fedora-coreos-39.20231204.2.1-applehv.aarch64.raw: done
DEBU[0007] creating runtimeDir: /var/folders/9j/jpms114j76q64fhjrq8kw71w0000gn/T/podman
DEBU[0007] resizing disk to 100 GiB
DEBU[0007] resizing /Users/walters/.local/share/containers/podman/machine/applehv/podman-machine-default_fedora-coreos-39.20231204.2.1-applehv.aarch64.raw to 107374182400 bytes
Machine init complete
Starting machine "podman-machine-default"
apiVersion: v1
kind: ConfigMap
metadata:
name: test-unit
annotations:
bootc.prefix: "/usr/lib/systemd/system"
data:
example.service: |
[Service]
ExecStart=echo hello world
@cgwalters
cgwalters / gist:f5ebebe053bab811b8f173abbc20b791
Last active February 27, 2023 15:33
systemd debug rt pod
Feb 27 15:07:10 cosa-devsh podman[1491]: 2023-02-27 15:07:10.972716987 +0000 UTC m=+0.192006555 container create 0260f6a600eb61b4cf3f1b536c60b13954309da06197188251e0ff1482543434 (image=docker.io/library/busybox:latest, name=loving_driscoll)
Feb 27 15:07:10 cosa-devsh kernel: bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
Feb 27 15:07:10 cosa-devsh NetworkManager[1169]: <info>  [1677510430.9996] manager: (cni-podman0): new Bridge device (/org/freedesktop/NetworkManager/Devices/3)
Feb 27 15:07:11 cosa-devsh podman[1491]: 2023-02-27 15:07:10.917733235 +0000 UTC m=+0.137022821 image pull  busybox
Feb 27 15:07:11 cosa-devsh NetworkManager[1169]: <info>  [1677510431.0286] manager: (veth7c04525f): new Veth device (/org/freedesktop/NetworkManager/Devices/4)
Feb 27 15:07:11 cosa-devsh kernel: cni-podman0: port 1(veth7c04525f) entered blocking state
Feb 27 15:07:11 cosa-devsh kernel: cni-podman0: port 1(veth7c04525f) entered disab
```
-rw-r--r--. 1 walters walters 613M Feb 15 17:16 qcow2.xz
-rw-r--r--. 1 walters walters 669M Feb 15 17:58 qcow2.zstd
$ time xz -d < qcow2.xz >/dev/null
________________________________________________________
Executed in 12.62 secs fish external
usr time 12.51 secs 190.00 micros 12.51 secs
sys time 0.09 secs 69.00 micros 0.09 secs
@cgwalters
cgwalters / try_or_else.rs
Last active July 5, 2022 14:37
try_or_else
#![feature(try_trait_v2)]
use anyhow::Result; // 1.0.57
use core::ops::Try;
trait TryOrElse<T> {
fn try_or_else<R: Try<Output = T>, F: FnOnce() -> R>(self, f: F) -> R;
}
// Proposed new API for Option https://github.com/rust-lang/libs-team/issues/59