Skip to content

IronCore Image V2 proposal#16

Open
adracus wants to merge 3 commits into
mainfrom
adracus/ironcore-image-v2
Open

IronCore Image V2 proposal#16
adracus wants to merge 3 commits into
mainfrom
adracus/ironcore-image-v2

Conversation

@adracus

@adracus adracus commented Apr 27, 2026

Copy link
Copy Markdown
Contributor

Proposal

Our current image specification has evolved a lot since the beginning.
This proposal tries to cleanly describe how we boot and to enhance upon the ideas we have so far.

@maxmoehl maxmoehl 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.

I'd structure all the media types as $purpose+$format. For a kernel the type would then be:

application/vnd.ironcore.kernel+efi

And a UKI could be:

application/vnd.ironcore.uki+efi

It gets a bit weird for the raw EFI binaries, but maybe:

application/vnd.ironcore.raw+efi

For the initrd its nested so that would then be:

# uncompressed
application/vnd.ironcore.initrd+cpio
# gzip compressed
application/vnd.ironcore.initrd.cpio+gzip
# ...

Comment thread ieps/tbd-ironcore-image-v2.md Outdated
Comment thread ieps/tbd-ironcore-image-v2.md Outdated
@adracus

adracus commented Apr 27, 2026

Copy link
Copy Markdown
Contributor Author

Regarding the naming with $purpose+$format - I deliberately chose to name it like e.g. application/vnd.ironcore.initrd.cpio (base) / application/vnd.ironcore.initrd.cpio+xz as it closely follows the style used for the container OCI specification ( https://github.com/opencontainers/image-spec/blob/main/media-types.md ):

In that spec, for example tar layers are also written as application/vnd.oci.image.layer.v1.tar and the + suffix is only used to disambiguate within that format, e.g. application/vnd.oci.image.layer.v1.tar+gzip

@maxmoehl

Copy link
Copy Markdown
Member

In that spec, for example tar layers are also written as application/vnd.oci.image.layer.v1.tar and the + suffix is only used to disambiguate within that format, e.g. application/vnd.oci.image.layer.v1.tar+gzip

And for JSON it's always with a +, this seems completely arbitrary to me. Following what's already there is always preferred so I guess we stick with the arbitrary system and try to reasonably model it to our use-case. If someone figures out what the system is, I'd love to learn.

@hardikdr hardikdr added this to Roadmap Apr 28, 2026
@adracus

adracus commented Apr 28, 2026

Copy link
Copy Markdown
Contributor Author

The +json suffix is still only used for disambiguation inside a type: For example, take a look at vnd.oci.image.config.v1+json: The type is a config, but to disambiguate (it could be represented either in e.g. yaml or toml) they use the +json suffix. For other parts where a specific file format is required, like application/vnd.oci.image.layer.v1.tar the .tar says that it must be .tar and disambiguation is just e.g. +xz if compressed.

Another project that publishes OCI artifacts is Helm that also follows the convention I mentioned ( https://helm.sh/blog/helm-oci-mediatypes/ ). I'd recommend sticking with what is already known throughout the container OCI spec and surrounding projects already do.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

3 participants