Skip to Content
Building OsBuilding operating-system images

Building operating-system images

OpenFactory turns a normalized recipe into an image artifact and, when requested and available, boots that artifact for verification. The exact builders and stages vary by base-image family and deployment.

What a recipe controls

AreaCanonical locationReview question
Base and hardware intentbase_image, hardwareIs this the correct distribution, release, architecture, and minimum profile?
Features and packagesos.features, os.packagesAre requested capabilities present and supported on this base?
Services and accountsos.services, os.usersAre configuration and least-privilege access explicit?
Desktop and brandingos.desktop_settings, os.brandingDoes the selected desktop own these settings and assets?
Installer and persistenceos.installer, os.persistenceAre install-to-disk and persistence requirements actually tested?
Custom automationos.startup_scripts, attachments, source packagesAre inputs pinned, bounded, and safe to run as the declared user?
VerificationscenariosDo tests observe every material outcome rather than just boot?

See Recipe Schema for the full shape.

Build lifecycle

The public status stream can include planning, configuration, source-package work, image generation, finalization, and testing. These are not guaranteed to appear as identical named stages for every target. Follow the build ID returned by the start request and treat the backend’s current status as authoritative.

Keep these outcomes separate:

  1. validated means the recognized recipe shape was accepted;
  2. a terminal successful build means an artifact was finalized;
  3. test success means the selected assertions passed against their environment; and
  4. certification or publication, where enabled, is a later policy decision.

Quiet progress is not a reason to create a duplicate build. Reconnect to the build console or status endpoint using the same build ID. If the build becomes terminally failed, preserve the stage, error, and logs before retrying.

  1. Write observable acceptance criteria.
  2. Generate or edit the recipe.
  3. Validate it and compare the normalized result with the full conversation.
  4. Inspect inferred features, external sources, installer settings, and scenarios.
  5. Start one build and follow its durable ID.
  6. Review artifact digest, package inventory, warnings, and test evidence.
  7. Boot or install in a disposable environment appropriate to the request.
  8. Promote or publish only through the applicable approval gate.

Topic guides

TopicUse it for
Base ImagesSelecting a supported build family
FeaturesUnderstanding registered capability modules
ServicesDeclaring service configuration
Custom SoftwareReviewing repository-backed package inputs
UsersCreating image-local accounts safely
DesktopChoosing and verifying desktop settings
Startup ScriptsAuthoring bounded first-boot units

Start with the smallest useful image. Add features only after the prior artifact’s behavior and evidence are understood.