This is an old revision of the document!
What is Spin?
Spin creates bootable images for FreeBSD. It accepts the content for the images from a number of sources, driven by config files or common templates. Spin is designed to pull together the large diversity of tools that currently does this: release(8), nanobsd, crochet, zrouter, Adrian Chadd's wifi tools, mfsbsd, and dozens of home-grown variants in the wild. The goal is to centralize this knowledge and to increase the flexibility in creating releases beyond what buildworld and make release have offered. Spin is a not a build tool, but more of a tool that assembles built pieces into a greater whole.
What are spin's inputs?
Spin's inputs are quite varied. At a high level, it accepts any collection of files, plus metadata about the files (perhaps stored in the filesystem, perhaps stored in METALOG mtree files). This collection of files can also contain metadata that directs spin to create the image.
Some use cases for spin
- Using mkimg to create a bootable image from a FreeBSD installworld / installkernel tree, perhaps customized with new files and packages.
- Creating a customized boot image (with the proper u-boot firmware for your board, for example) from a generic boot image provided by the project. Spin's job here is to fill in the missing pieces in the template to produce a bootable image.
- Using src pkg and ports pkg to stitch together a complete system image (including pulling metadata about the image format from those packages)