UpdateReboot with composefs disk image - #97
Conversation
jlebon
left a comment
There was a problem hiding this comment.
Will let Alice have a look for overall looks sane to me!
42fda88 to
bbee5aa
Compare
|
This is still blocked on newer bootc with bootc-dev/bootc#2277. |
Ubuntu GHA runners ship registries.conf in the older INI-style (v1) format. Podman 5+ requires the TOML-based v2 format and rejects v1, causing podman operations to fail in CI. Overwrite the file with a minimal v2 registries.conf. Signed-off-by: HarshwardhanPatil07 <harshpat@redhat.com>
Factor the TestUpdateReboot body into a shared testUpdateReboot helper and use a table-driven pattern to run it against both ostree and composefs disk images. Skip the composefs subtest when the env var is unset. A new WithNodeDiskImage NodeOption lets tests override the VM disk image passed as --node-image to bink node add. The Makefile derives BINK_NODE_DISK_IMAGE_COMPOSEFS from BINK_NODE_DISK_IMAGE by appending -composefs. Bump BINK_COMMIT to pick up the composefs cloud-init fix from bink. Closes: bootc-dev#74 Signed-off-by: HarshwardhanPatil07 <harshpat@redhat.com>
bbee5aa to
756e6bc
Compare
|
Let's see if the CI is happy now. Retriggered one of the job |
|
@alicefr still the same, curious what might now be the cause even after merging this bootc-dev/bink#93 |
|
It looks like the composefs test picked the older image without the fix. From the logs: The ostree has also the old image but the tests was alredy passing: |
|
But I just tried locally to spin a bink cluster with the new composefs image and it still doesn't show the right digest. FYI @Johan-Liebert1 bink cluster start --node-image ghcr.io/bootc-dev/bink/node:v1.35-fedora-44-disk-composefs
bink node ssh node1
[core@node1 ~]$ sudo bootc status --json |jq
{
"apiVersion": "org.containers.bootc/v1",
"kind": "BootcHost",
"metadata": {
"name": "host"
},
"spec": {
"bootOrder": "default",
"image": {
"image": "ghcr.io/bootc-dev/bink/node:v1.35-fedora-44",
"transport": "registry"
}
},
"status": {
"booted": {
"cachedUpdate": null,
"composefs": {
"bootDigest": "934fdaa9f2b7aa4253b636dcdef877c45feed44f60427e68017394cbf12d6c41",
"bootType": "Bls",
"bootloader": "grub",
"missingVerityAllowed": false,
"verity": "956fe24e4fce2ed1482f71f3be6f312f8cad2dac11b2fe2b770e44983474fede90e603e1171e9b677e47ed986564bf3eac66045cf266dc50868fa0cab3a858ff"
},
"downloadOnly": false,
"image": {
"architecture": "amd64",
"image": {
"image": "ghcr.io/bootc-dev/bink/node:v1.35-fedora-44",
"transport": "registry"
},
"imageDigest": "sha256:403559bbed7feb544c8d4ba1048d1ac1691a9d278240496b322bd4c2e8c1e991",
"timestamp": "2026-08-03T13:29:14.269939922Z",
"version": null
},
"incompatible": false,
"ostree": null,
"pinned": false,
"softRebootCapable": false,
"store": null
},
"readOnly": false,
"rollback": null,
"rollbackQueued": false,
"staged": null,
"type": null,
"usrOverlay": null
}
}But the correct digest should be the one reported in the label: |
|
@HarshwardhanPatil07 I did another run for 1.35 and now it is picking the new images, but it has the issue I reported above. Composefs still doesn't report the same digest as the ostree one. Composefs-based: |
|
@alicefr could you point me how we are installing using composefs. I tried your bink example and sure enough the output is incorrect, but when I try the install myself without involving bink the output seems correct. Following is installing outside of bink Also, is |
|
@Johan-Liebert1 we are creating the disk running bcvk in a container build here and passing the flag |
|
here the output of the build: https://github.com/bootc-dev/bink/actions/runs/30010769079/job/89218155634 |
|
What's weird is that the manifest itself is stored incorrectly in |
|
Okay, this is some bcvk thing. Installing using bootc directly (or pulling using cfsctl) produces the correct manifest digest in |
|
Here's the issue, running the command On my host [
{
"Id": "62eda4137a40770fea08447cdd3afebbea57535386e58c285ce1d410ed4e72de",
"Digest": "sha256:4e11372e12e8761b33f316656d1ae97d1761b21fd120bdf8c885afbdb42697c1",
"RepoTags": [
"ghcr.io/bootc-dev/bink/node:v1.35-fedora-44",
"localhost:5000/node:latest"
],
"RepoDigests": [
"ghcr.io/bootc-dev/bink/node@sha256:4e11372e12e8761b33f316656d1ae97d1761b21fd120bdf8c885afbdb42697c1",
"localhost:5000/node@sha256:4e11372e12e8761b33f316656d1ae97d1761b21fd120bdf8c885afbdb42697c1"
],
"Parent": "",
"Comment": "",
"Created": "2026-08-03T13:29:14.269939922Z",
"Config": {
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/sbin/init"
],
"WorkingDir": "/",
"Labels": {
"containers.bootc": "1",
"io.buildah.version": "1.43.2",
"ostree.bootable": "1"
},
"StopSignal": "SIGRTMIN+3"
},
"Version": "",
"Author": "",
"Architecture": "amd64",
"Os": "linux",
"Size": 1277941454,
"VirtualSize": 1277941454,
"GraphDriver": {
"Name": "overlay",
"Data": {
"LowerDir": "/home/pragyan/.local/share/containers/storage/overlay/12d9d42e1b7130bb31745d645d9a8b2f819b6f7695eb6d5f23be71793cdac3d6/diff:/home/pragyan/.local/share/contain
ers/storage/overlay/b7889fccd772d943b8cf69a77e190bcb88dd8b20fd8b999d11619a891432f14e/diff:/home/pragyan/.local/share/containers/storage/overlay/ca021e6e2e360fbe6f69f082741dd8e74dce26227305335
4c5dbd3e9b73f48aa/diff",
"MergedDir": "/home/pragyan/.local/share/containers/storage/overlay/ce76f9fe54cb083cb646474d2db3e9f55150d39a32e3381671d54d369d7e9e18/merged",
"UpperDir": "/home/pragyan/.local/share/containers/storage/overlay/ce76f9fe54cb083cb646474d2db3e9f55150d39a32e3381671d54d369d7e9e18/diff",
"WorkDir": "/home/pragyan/.local/share/containers/storage/overlay/ce76f9fe54cb083cb646474d2db3e9f55150d39a32e3381671d54d369d7e9e18/work"
}
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:ca021e6e2e360fbe6f69f082741dd8e74dce262273053354c5dbd3e9b73f48aa",
"sha256:38ebcf53904450ff7cf3392ec3ea0fedd2d48a239dc022cf136b3106599992d8",
"sha256:81dfd6d46d48c05ce7c1baa8b5042b4e0c0c27c0e647df0ba639e73496b0c73c",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef"
]
},
"Labels": {
"containers.bootc": "1",
"io.buildah.version": "1.43.2",
"ostree.bootable": "1"
},
"Annotations": {
"org.opencontainers.image.base.digest": "",
"org.opencontainers.image.base.name": "",
"org.opencontainers.image.created": "2026-08-03T13:29:14.269939922Z"
},
"ManifestType": "application/vnd.oci.image.manifest.v1+json",
"User": "",
"History": [
{
"created": "2026-08-03T13:29:01.534632436Z",
"created_by": "/bin/sh -c #(nop) COPY dir:38db9d8073ec5cabfa34b4f1ca3d5846d0e1934aae37b57ddcdf54909a6764e5 in / "
},
{
"created": "2026-08-03T13:29:10.473384924Z",
"created_by": "/bin/sh -c passwd -d root"
},
{
"created": "2026-08-03T13:29:12.184761104Z",
"created_by": "/bin/sh -c sed -i 's|\"/opt/cni/bin\"|\"/var/lib/cni/bin\"|g' /etc/crio/crio.conf && sed -i 's|\"/opt/cni/net.d\"|\"/etc/cni/net.d\"|g' /etc/crio/crio.c
onf"
},
{
"created": "2026-08-03T13:29:14.089711782Z",
"created_by": "/bin/sh -c bootc container lint"
},
{
"created": "2026-08-03T13:29:14.157542116Z",
"created_by": "/bin/sh -c #(nop) LABEL containers.bootc 1",
"empty_layer": true
},
{
"created": "2026-08-03T13:29:14.196559039Z",
"created_by": "/bin/sh -c #(nop) LABEL ostree.bootable 1",
"empty_layer": true
},
{
"created": "2026-08-03T13:29:14.233013324Z",
"created_by": "/bin/sh -c #(nop) STOPSIGNAL SIGRTMIN+3",
"empty_layer": true
},
{
"created": "2026-08-03T13:29:14.270181803Z",
"created_by": "/bin/sh -c #(nop) CMD [\"/sbin/init\"]",
"empty_layer": true
}
],
"NamesHistory": [
"ghcr.io/bootc-dev/bink/node@sha256:4e11372e12e8761b33f316656d1ae97d1761b21fd120bdf8c885afbdb42697c1",
"localhost:5000/node:latest",
"ghcr.io/bootc-dev/bink/node:v1.35-fedora-44"
]
}
]Inside the ephemeral vm started by bcvk [
{
"Id": "62eda4137a40770fea08447cdd3afebbea57535386e58c285ce1d410ed4e72de",
"Digest": "sha256:403559bbed7feb544c8d4ba1048d1ac1691a9d278240496b322bd4c2e8c1e991",
"RepoTags": [
"ghcr.io/bootc-dev/bink/node:v1.35-fedora-44",
"localhost:5000/node:latest"
],
"RepoDigests": [
"ghcr.io/bootc-dev/bink/node@sha256:403559bbed7feb544c8d4ba1048d1ac1691a9d278240496b322bd4c2e8c1e991",
"ghcr.io/bootc-dev/bink/node@sha256:4e11372e12e8761b33f316656d1ae97d1761b21fd120bdf8c885afbdb42697c1",
"localhost:5000/node@sha256:403559bbed7feb544c8d4ba1048d1ac1691a9d278240496b322bd4c2e8c1e991",
"localhost:5000/node@sha256:4e11372e12e8761b33f316656d1ae97d1761b21fd120bdf8c885afbdb42697c1"
],
"Parent": "",
"Comment": "",
"Created": "2026-08-03T13:29:14.269939922Z",
"Config": {
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/sbin/init"
],
"WorkingDir": "/",
"Labels": {
"containers.bootc": "1",
"io.buildah.version": "1.43.2",
"ostree.bootable": "1"
},
"StopSignal": "SIGRTMIN+3"
},
"Version": "",
"Author": "",
"Architecture": "amd64",
"Os": "linux",
"Size": 1277942459,
"VirtualSize": 1277942459,
"GraphDriver": {
"Name": "overlay",
"Data": {
"LowerDir": "/run/virtiofs-mnt-hoststorage/overlay/12d9d42e1b7130bb31745d645d9a8b2f819b6f7695eb6d5f23be71793cdac3d6/diff:/run/virtiofs-mnt-hoststorage/overlay/b7889fccd772
d943b8cf69a77e190bcb88dd8b20fd8b999d11619a891432f14e/diff:/run/virtiofs-mnt-hoststorage/overlay/ca021e6e2e360fbe6f69f082741dd8e74dce262273053354c5dbd3e9b73f48aa/diff",
"UpperDir": "/run/virtiofs-mnt-hoststorage/overlay/ce76f9fe54cb083cb646474d2db3e9f55150d39a32e3381671d54d369d7e9e18/diff",
"WorkDir": "/run/virtiofs-mnt-hoststorage/overlay/ce76f9fe54cb083cb646474d2db3e9f55150d39a32e3381671d54d369d7e9e18/work"
}
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:ca021e6e2e360fbe6f69f082741dd8e74dce262273053354c5dbd3e9b73f48aa",
"sha256:38ebcf53904450ff7cf3392ec3ea0fedd2d48a239dc022cf136b3106599992d8",
"sha256:81dfd6d46d48c05ce7c1baa8b5042b4e0c0c27c0e647df0ba639e73496b0c73c",
"sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef"
]
},
"Labels": {
"containers.bootc": "1",
"io.buildah.version": "1.43.2",
"ostree.bootable": "1"
},
"Annotations": {
"org.opencontainers.image.base.digest": "",
"org.opencontainers.image.base.name": "",
"org.opencontainers.image.created": "2026-08-03T13:29:14.269939922Z"
},
"ManifestType": "application/vnd.oci.image.manifest.v1+json",
"User": "",
"History": [
{
"created": "2026-08-03T13:29:01.534632436Z",
"created_by": "/bin/sh -c #(nop) COPY dir:38db9d8073ec5cabfa34b4f1ca3d5846d0e1934aae37b57ddcdf54909a6764e5 in / "
},
{
"created": "2026-08-03T13:29:10.473384924Z",
"created_by": "/bin/sh -c passwd -d root"
},
{
"created": "2026-08-03T13:29:12.184761104Z",
"created_by": "/bin/sh -c sed -i 's|\"/opt/cni/bin\"|\"/var/lib/cni/bin\"|g' /etc/crio/crio.conf && sed -i 's|\"/opt/cni/net.d\"|\"/etc/cni/net.d\"|g' /etc/crio/crio.c
onf"
},
{
"created": "2026-08-03T13:29:14.089711782Z",
"created_by": "/bin/sh -c bootc container lint"
},
{
"created": "2026-08-03T13:29:14.157542116Z",
"created_by": "/bin/sh -c #(nop) LABEL containers.bootc 1",
"empty_layer": true
},
{
"created": "2026-08-03T13:29:14.196559039Z",
"created_by": "/bin/sh -c #(nop) LABEL ostree.bootable 1",
"empty_layer": true
},
{
"created": "2026-08-03T13:29:14.233013324Z",
"created_by": "/bin/sh -c #(nop) STOPSIGNAL SIGRTMIN+3",
"empty_layer": true
},
{
"created": "2026-08-03T13:29:14.270181803Z",
"created_by": "/bin/sh -c #(nop) CMD [\"/sbin/init\"]",
"empty_layer": true
}
],
"NamesHistory": [
"ghcr.io/bootc-dev/bink/node@sha256:4e11372e12e8761b33f316656d1ae97d1761b21fd120bdf8c885afbdb42697c1",
"localhost:5000/node:latest",
"ghcr.io/bootc-dev/bink/node:v1.35-fedora-44"
]
}
]The digest itself is different. Doing some more digging this might have something to with virtiofs... Running Host {
"schemaVersion": 2,
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"config": {
"mediaType": "application/vnd.oci.image.config.v1+json",
"digest": "sha256:62eda4137a40770fea08447cdd3afebbea57535386e58c285ce1d410ed4e72de",
"size": 1716
},
"layers": [
{
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
"digest": "sha256:7b58bd363b9b60e5ffb53760b52c4a18ca43dfac75cd104256ff76ebaa793fa2",
"size": 651288312
},
{
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
"digest": "sha256:295df2fd88318ee55fe24009a7b6115b6a016a3c5608e673f829973030dec9a2",
"size": 518
},
{
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
"digest": "sha256:e1b19f3b8d59902c5e9474fda6552ce42bd7f5b2fc44c823c7fd9b606c12b515",
"size": 12167
},
{
"mediaType": "application/vnd.oci.image.layer.v1.tar+gzip",
"digest": "sha256:bd9ddc54bea929a22b334e73e026d4136e5b73f5cc29942896c72e4ece69b13d",
"size": 34
}
],
"annotations": {
"org.opencontainers.image.base.digest": "",
"org.opencontainers.image.base.name": "",
"org.opencontainers.image.created": "2026-08-03T13:29:14.269939922Z"
}
}VM {
"schemaVersion": 2,
"mediaType": "application/vnd.oci.image.manifest.v1+json",
"config": {
"mediaType": "application/vnd.oci.image.config.v1+json",
"digest": "sha256:62eda4137a40770fea08447cdd3afebbea57535386e58c285ce1d410ed4e72de",
"size": 1716
},
"layers": [
{
"mediaType": "application/vnd.oci.image.layer.v1.tar",
"digest": "sha256:ca021e6e2e360fbe6f69f082741dd8e74dce262273053354c5dbd3e9b73f48aa",
"size": 1277890048
},
{
"mediaType": "application/vnd.oci.image.layer.v1.tar",
"digest": "sha256:38ebcf53904450ff7cf3392ec3ea0fedd2d48a239dc022cf136b3106599992d8",
"size": 7168
},
{
"mediaType": "application/vnd.oci.image.layer.v1.tar",
"digest": "sha256:81dfd6d46d48c05ce7c1baa8b5042b4e0c0c27c0e647df0ba639e73496b0c73c",
"size": 39424
},
{
"mediaType": "application/vnd.oci.image.layer.v1.tar",
"digest": "sha256:5f70bf18a086007016e948b04aed3b82103a36bea41755b6cddfaf10ace3c6ef",
"size": 1024
}
],
"annotations": {
"org.opencontainers.image.base.digest": "",
"org.opencontainers.image.base.name": "",
"org.opencontainers.image.created": "2026-08-03T13:29:14.269939922Z"
}
}With virtiofs we get the uncompressed digests in the manifest. This might be a quirk of the containers-storage backend |
UpdateReboot with Composefs disk image
Closes #74