135 lines
2.6 KiB
Markdown
135 lines
2.6 KiB
Markdown
|
|
# ASL/SYSTEMRESCUE-OVERLAY/1 - Intake Overlay Layout
|
||
|
|
|
||
|
|
Status: Draft
|
||
|
|
Owner: Architecture
|
||
|
|
Version: 0.1.0
|
||
|
|
SoT: No
|
||
|
|
Last Updated: 2026-01-17
|
||
|
|
Tags: [ops, rescue, overlay]
|
||
|
|
|
||
|
|
**Document ID:** `ASL/SYSTEMRESCUE-OVERLAY/1`
|
||
|
|
**Layer:** O3 - Rescue overlay profile
|
||
|
|
|
||
|
|
**Depends on (normative):**
|
||
|
|
|
||
|
|
* `ASL/HOST/1`
|
||
|
|
|
||
|
|
**Informative references:**
|
||
|
|
|
||
|
|
* `ASL/RESCUE-NODE/1`
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 0. Conventions
|
||
|
|
|
||
|
|
The key words **MUST**, **MUST NOT**, **REQUIRED**, **SHOULD**, and **MAY** are to be
|
||
|
|
interpreted as in RFC 2119.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 1. Purpose and Scope
|
||
|
|
|
||
|
|
This overlay defines what exists at boot for a rescue intake environment. It
|
||
|
|
separates immutable tools from mutable runtime state and defines mount points
|
||
|
|
for local or remote ASL stores.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 2. Overlay Layout
|
||
|
|
|
||
|
|
```
|
||
|
|
overlay/
|
||
|
|
├── usr/
|
||
|
|
│ └── local/
|
||
|
|
│ ├── bin/
|
||
|
|
│ │ ├── asl-intake
|
||
|
|
│ │ ├── asl-admin
|
||
|
|
│ │ └── asl-debug
|
||
|
|
│ └── lib/
|
||
|
|
│ └── libasl.so
|
||
|
|
├── etc/
|
||
|
|
│ └── asl/
|
||
|
|
│ ├── asl.conf
|
||
|
|
│ ├── federation.conf
|
||
|
|
│ └── logging.conf
|
||
|
|
├── etc/systemd/system/
|
||
|
|
│ ├── asl-intake.service
|
||
|
|
│ └── asl-preflight.service
|
||
|
|
├── var/
|
||
|
|
│ └── lib/
|
||
|
|
│ └── asl/
|
||
|
|
│ ├── runtime/
|
||
|
|
│ ├── cache/
|
||
|
|
│ └── locks/
|
||
|
|
├── run/
|
||
|
|
│ └── asl/
|
||
|
|
│ └── sockets/
|
||
|
|
└── mnt/
|
||
|
|
└── asl/
|
||
|
|
├── local/
|
||
|
|
└── remote/
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 3. Directory Semantics
|
||
|
|
|
||
|
|
* `/usr/local/bin` is immutable and MUST NOT be written at runtime.
|
||
|
|
* `/etc/asl` contains declarative configuration only.
|
||
|
|
* `/var/lib/asl` contains all mutable state for the rescue session.
|
||
|
|
* `/mnt/asl/local` is the mount target for a local ASL store.
|
||
|
|
* `/mnt/asl/remote` is an optional remote mount.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 4. Local Store Layout (Informative)
|
||
|
|
|
||
|
|
When mounted, a local store typically exposes:
|
||
|
|
|
||
|
|
```
|
||
|
|
/mnt/asl/local/
|
||
|
|
├── blocks/
|
||
|
|
├── segments/
|
||
|
|
├── snapshots/
|
||
|
|
└── logs/
|
||
|
|
```
|
||
|
|
|
||
|
|
This internal layout is backend-defined and not mandated by this overlay.
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 5. Services
|
||
|
|
|
||
|
|
### 5.1 asl-preflight.service
|
||
|
|
|
||
|
|
Responsibilities:
|
||
|
|
|
||
|
|
* Detect storage backends
|
||
|
|
* Detect importable pools
|
||
|
|
* Write mode decisions to `/run/asl/mode`
|
||
|
|
|
||
|
|
### 5.2 asl-intake.service
|
||
|
|
|
||
|
|
Responsibilities:
|
||
|
|
|
||
|
|
* Read `/run/asl/mode`
|
||
|
|
* Start `asl-intake` with the selected backend
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 6. Configuration Defaults
|
||
|
|
|
||
|
|
`/etc/asl/asl.conf` SHOULD include at minimum:
|
||
|
|
|
||
|
|
```
|
||
|
|
mode = auto
|
||
|
|
local.mount = /mnt/asl/local
|
||
|
|
remote.endpoint = none
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 7. Versioning
|
||
|
|
|
||
|
|
Backward-incompatible overlay changes MUST bump the major version.
|