106 lines
3.4 KiB
Markdown
106 lines
3.4 KiB
Markdown
# Binary releases (seeder + booter)
|
|
|
|
Host distribution is **Bare standalone binaries**, not `pear run` (removed in Pear v3).
|
|
|
|
## Artifacts
|
|
|
|
Gitea **`rolling`** release (every push to `main`, via `.gitea/workflows/release-rolling.yml`):
|
|
|
|
| Asset | Contents |
|
|
|-------|----------|
|
|
| `bare-os-seeder-<ver>-<host>.tar.gz` | `bare-os-seeder[.exe]` + `kernel/` |
|
|
| `bare-os-booter-<ver>-<host>.tar.gz` | `bare-os-booter[.exe]` |
|
|
| `by-arch-seeder.tar.gz` / `by-arch-booter.tar.gz` | Holepunch `by-arch/` trees for `pear install` / OTA |
|
|
| `*.sha256` | Checksums |
|
|
|
|
Hosts (64-bit only): `linux-x64`, `linux-arm64`, `darwin-x64`, `darwin-arm64`, `win32-x64`, `win32-arm64`.
|
|
|
|
## Local build
|
|
|
|
```bash
|
|
npm ci
|
|
npm run maintainer:kernel-image # seeder needs current kernel/
|
|
npm run make:seeder:linux-x64 # or: npm run make
|
|
DRY_RUN=1 SKIP_PEAR_STAGE=1 bash scripts/gitea-rolling-release.sh
|
|
```
|
|
|
|
`make.cjs` ends with `scripts/verify-standalone-build.cjs`: size ceilings, pear-runtime stub check, and a native-host booter smoke (`--datadir`, no CodeRange OOM).
|
|
Outputs under `out/bare-os-<product>-<host>/`.
|
|
|
|
## Web installer
|
|
|
|
```bash
|
|
curl -fsSL https://install.bare-os.live | bash
|
|
# or from Gitea raw:
|
|
# curl -fsSL https://git.ssh.surf/snxraven/bare-operating-system/raw/branch/main/scripts/install.sh | bash
|
|
```
|
|
|
|
| Flag | Effect |
|
|
|------|--------|
|
|
| `--seeder` / `--booter` / `--both` | What to install |
|
|
| `--yes` | Non-interactive |
|
|
| `--system` | Linux: `/opt/bare-os` + systemd (`deploy/bare-os-*.service`) |
|
|
| `--no-updates` | Disable pear-runtime OTA |
|
|
|
|
Default user install: `~/.local/share/bare-os/{seeder,booter}/` with shims in `~/.local/bin`.
|
|
|
|
## Run
|
|
|
|
```bash
|
|
# From a release tarball
|
|
tar -xzf bare-os-seeder-0.1.0-linux-x64.tar.gz
|
|
./bare-os-seeder --no-updates # disable OTA for this run
|
|
|
|
tar -xzf bare-os-booter-0.1.0-linux-x64.tar.gz
|
|
# Keep qvac-backends/ next to bare-os-booter (ggml CPU/Vulkan .so for `agent`)
|
|
./bare-os-booter --no-updates
|
|
```
|
|
|
|
Dev from a git checkout (no packing):
|
|
|
|
```bash
|
|
npm run os:seeder # bare packages/bare-os-seeder/index.js
|
|
npm run os:booter
|
|
# or bin entries with OTA wrapper:
|
|
npm run os:seeder:bin
|
|
npm run os:booter:bin
|
|
```
|
|
|
|
## Pear install + OTA
|
|
|
|
Upgrade links (also `upgrade` in each package.json):
|
|
|
|
- Seeder: `pear://1ycyj65xxgn6c5cirhtnm8aokkrpe9dzibriszyfkmfggc3opjzy`
|
|
- Booter: `pear://khtauzttriz8dpgrphj79rfy98iwoatqm59fnogtsdqk5f1kg6ao`
|
|
|
|
```bash
|
|
pear install pear://1ycyj65xxgn6c5cirhtnm8aokkrpe9dzibriszyfkmfggc3opjzy
|
|
pear install pear://khtauzttriz8dpgrphj79rfy98iwoatqm59fnogtsdqk5f1kg6ao
|
|
```
|
|
|
|
Packaged binaries embed **`pear-runtime`**. Disable with `--no-updates` or `BARE_OS_OTA_DISABLE=1`.
|
|
|
|
CI publishes **`by-arch-*.tar.gz`** on the rolling release but does **not** pear-ci stage. Stage offline:
|
|
|
|
```bash
|
|
# after npm run make (or unpack by-arch trees from rolling)
|
|
PEAR_PRIMARY_KEY=<64-hex> bash scripts/pear-stage-by-arch.sh
|
|
```
|
|
|
|
Snapshots (when staging): `ci/snapshot-seeder.json`, `ci/snapshot-booter.json`.
|
|
|
|
## Secrets
|
|
|
|
| Secret | Role |
|
|
|--------|------|
|
|
| `RELEASE_TOKEN` | Gitea release write for tag `rolling` |
|
|
| `GITEA_URL` | Optional forge base URL |
|
|
|
|
`PEAR_PRIMARY_KEY` is only for **offline** `scripts/pear-stage-by-arch.sh`, not CI.
|
|
|
|
## Related
|
|
|
|
- Installer: [`scripts/install.sh`](../scripts/install.sh) · systemd: [`deploy/`](../deploy/)
|
|
- Legacy channel notes: [PEAR-RUN.md](PEAR-RUN.md)
|
|
- Guest Hyperdrive OTA / updater bridges: [deployment/OTA_AND_BUNDLES.md](deployment/OTA_AND_BUNDLES.md)
|