mirror of
https://github.com/openglow-org/forgefirm.git
synced 2026-09-27 16:51:12 -07:00
- kas/README.md: the real-time rationale rests on the feeder's bounded queue depth, not ring size; the ring is 16 MiB (~84 s at 200 kHz, ~28 min at the 10 kHz cloud tick), a capacity for cloud-mode preload. - BUILD.md, kas config, release checklist, cold-build workflow: only forgefirm and meta-openglow (branch scarthgap) are cloned as siblings; every ForgeFIRM source repo is fetched by pinned SRCREV. - UPDATE-SYSTEM.md reads as the present-state design: the cloud-mode compatibility baseline is the cloud client's configured firmware version, not release metadata; decisions and open items listed plainly. - README.md states what GRBL mode still needs the Glowforge service for (camera-referenced homing) and what runs without it. - BRINGUP.md: generic build-host and fwup-lab references, the retained reproductions of the no-fire drill, the System tab. - LIGHTBURN.md: the arm-window timeouts are machine settings. - forgefirm-image.bb describes forgectrl as the machine-services daemon and points at the right backlog entry. - American spelling throughout.
93 lines
3.1 KiB
Markdown
93 lines
3.1 KiB
Markdown
# Build
|
|
|
|
ForgeFIRM is built with [**kas**](https://kas.readthedocs.io/), which manages
|
|
the Yocto layers and pins their versions. The **forgefirm** repo is the base
|
|
of the build.
|
|
|
|
Builds run on a Linux host, or on **WSL2** (officially supported by Yocto —
|
|
keep the tree on the native ext4 filesystem, not `/mnt/c`).
|
|
|
|
## Host setup
|
|
|
|
On Ubuntu/Debian (including WSL2), install the Yocto host packages and kas:
|
|
|
|
```console
|
|
sudo apt-get install -y gawk wget git diffstat unzip texinfo gcc build-essential \
|
|
chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils \
|
|
iputils-ping python3-git python3-jinja2 python3-subunit zstd liblz4-tool file \
|
|
locales libacl1 lz4 rsync
|
|
sudo locale-gen en_US.UTF-8
|
|
pipx install kas # use pipx — Ubuntu 24.04 (PEP 668) blocks `pip install --user`
|
|
```
|
|
|
|
For other distros, see the
|
|
[Yocto Project Quick Build](https://docs.yoctoproject.org/brief-yoctoprojectqs/index.html).
|
|
Do not build as root (the Yocto sanity checks refuse it).
|
|
|
|
## Get the sources
|
|
|
|
Clone the two repos as siblings (the kas config references `meta-openglow`,
|
|
branch `scarthgap`, at `../meta-openglow`; kas fetches the upstream Yocto
|
|
layers itself, and every ForgeFIRM source repo — the kernel module, the
|
|
controller, the daemon, the cloud apps — is fetched by its recipe at a pinned
|
|
revision):
|
|
|
|
```console
|
|
git clone https://github.com/ScottW514/forgefirm.git
|
|
git clone -b scarthgap https://github.com/ScottW514/meta-openglow.git
|
|
```
|
|
|
|
```
|
|
openglow-forgefirm/
|
|
├── forgefirm/ ← base repo, build runs here
|
|
└── meta-openglow/
|
|
```
|
|
|
|
## Build the image
|
|
|
|
```console
|
|
cd forgefirm
|
|
kas build kas/forgefirm-glowforge.yml
|
|
```
|
|
|
|
kas fetches the upstream layers into `forgefirm/layers/`, builds in
|
|
`forgefirm/build/`, and produces the bootable image at:
|
|
|
|
```
|
|
forgefirm/build/tmp/deploy/images/glowforge/forgefirm-image-glowforge.rootfs.wic.gz
|
|
```
|
|
|
|
(The `u-boot-glowforge.imx` also deployed there is **reference-only**: every
|
|
supported install/boot flow keeps the factory bootloader on the eMMC. Its env
|
|
Kconfig now matches the factory layout — 0x80000 primary / 0x82000 redundant —
|
|
but it is not wired into any install path and flashing it is unsupported.)
|
|
|
|
For exact, reproducible layer versions, generate a lockfile once:
|
|
|
|
```console
|
|
kas lock kas/forgefirm-glowforge.yml
|
|
```
|
|
|
|
See [`kas/README.md`](kas/README.md) for details, the container-build option,
|
|
and the Scarthgap migration backlog.
|
|
|
|
## Third-party firmware licensing
|
|
|
|
The i.MX6 BSP installs NXP firmware blobs (VPU, EPDC) that are distributed
|
|
under NXP's firmware EULA. The build config accepts it
|
|
(`ACCEPT_FSL_EULA = "1"`), and the image ships the license text alongside the
|
|
blobs at `/usr/share/licenses/firmware-imx/EULA` — keep it there in any
|
|
redistributed image. The SDMA firmware comes from `linux-firmware`, which
|
|
carries its own license package.
|
|
|
|
## Write to an SD card
|
|
|
|
```console
|
|
cd build/tmp/deploy/images/glowforge
|
|
sudo zcat forgefirm-image-glowforge.rootfs.wic.gz | dd of=/dev/sdX bs=1M
|
|
```
|
|
|
|
To install onto the factory eMMC (into the unused A/B slot, with the factory
|
|
firmware archived first — one OS runs at a time), see
|
|
[`INSTALL.md`](INSTALL.md).
|