PACKAGING · NIGHTLY 1.2.1.067
How to package your akernels
Build a bootable test image, verify it, and organize experimental package metadata without implying that akernel has an installer.
Know what the tools support. The ISO ZIP workflow below is implemented. The package descriptors are C metadata and compatibility checks only: akernel does not yet install packages, resolve dependencies, or read package archives.
01 — PACKAGE A BOOT IMAGE
Build the ISO and ZIP
On Ubuntu or Debian, install the compiler, boot-image, archive, and validation tools:
sudo apt update
sudo apt install -y build-essential gcc-multilib binutils nasm curl xorriso zip unzip qemu-system-x86
From the repository root, build the image and a ZIP containing just that ISO:
make clean
make CC=gcc iso-zip
make test-aash
unzip -t build/akernel-v1.2.1.067-x86_64.zip
sha256sum -c build/akernel-v1.2.1.067-x86_64.zip.sha256
file build/akernel-v1.2.1.067-x86_64.iso
The nightly outputs are build/akernel-v1.2.1.067-x86_64.iso, build/akernel-v1.2.1.067-x86_64.zip, and its .sha256 file. Boot the ISO only as virtual CD media in a disposable VM. The image is not an installer.
03 — EXPERIMENTAL BOOT SCRIPT
AASH 0.1
The 1.2.1.067 nightly includes AASH, a freestanding C interpreter for a small boot-embedded command script. It supports echo, color, setup, version, and help. It is not compatible with Bash, Zsh, or Fish and does not load external scripts.
The setup command shows a non-destructive preflight status screen; it does not install an OS or write to a disk. See the AASH guide for syntax, supported colors, and limitations.
04 — DESCRIBE A FUTURE PACKAGE
Start with the C descriptor
Package sources can define the metadata structure in pkg/akernel/package.h. For example:
#include "package.h"
static const akpkg_descriptor example_package = {
.name = "example",
.package_version = {1u, 0u, 0u},
.version_string = "1.0.0",
.summary = "Example freestanding component",
.minimum_kernel_version = {1u, 2u, 0u},
.supported_architectures = AKPACKAGE_ARCH_X86_64,
.flags = AKPKG_FLAG_FREESTANDING_ONLY
};
The metadata can be checked with akpkg_is_compatible when compiled for a target. It does not make a package loadable. There is no stable package ABI or archive schema yet.
For your own experiments, keep source, build instructions, license, and a manifest together. One possible layout is:
example-1.0.0-x86_64/
manifest.json
LICENSE
README.md
src/
example.c
build/
example.o
Choose and document your own fields; the kernel currently does not parse this JSON example:
{
"name": "example",
"version": "1.0.0",
"target": "x86_64-elf",
"minimum_kernel": "1.2.1",
"entry_point": null,
"status": "source-example-not-installable"
}
05 — TEST AND SHARE
Verify before distributing
- Build from a clean checkout and keep the compiler/tool versions with your notes.
- Check the ZIP and checksum, then test the ISO in a disposable VM without physical-disk passthrough.
- Include the source revision, target architecture, build commands, and license for every component.
- Label experimental package data as non-installable until a package manager and format exist.
- Publish checksums alongside downloads; use a trusted signing process if users need authenticity verification.
For a complete kernel-to-ISO workflow, continue to the Manual on how to make an Akernel OS.