Initial commit - Phase 3/4

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
michael
2026-01-06 13:45:29 -08:00
parent 1da6730735
commit 4f35df1781
323 changed files with 98287 additions and 1195 deletions

116
BUILD_SYSTEM.md Normal file
View File

@@ -0,0 +1,116 @@
# Dangerous Pi Build System
## Overview
The build system is now split into two separate stages for faster iteration:
```
stage0, stage1, stage2 → stagePM3 → stageDangerousPi
(cached) (cached)
```
## Build Commands
### `./build-image.sh full`
**Build all stages from scratch (~1 hour)**
- Use for: First build or major system changes
- Builds: stage0 → stage1 → stage2 → stagePM3 → stageDangerousPi
- Creates cached .qcow2 images for future builds
### `./build-image.sh from-pm3`
**Rebuild PM3 + customizations (~50 min)**
- Use for: Updating Proxmark3 firmware/client version
- Skips: stage0, stage1, stage2 (uses cached images)
- Builds: stagePM3 → stageDangerousPi
- Updates PM3 cache for future `from-dtpi` builds
### `./build-image.sh from-dtpi` ⭐ Daily Development
**Rebuild only customizations (~5 min)**
- Use for: Daily development, iterating on your app
- Skips: stage0, stage1, stage2, stagePM3 (all cached)
- Builds: stageDangerousPi only
- **Fastest iteration cycle for app development**
- Requires: Previous `full` or `from-pm3` build
### `./build-image.sh test`
**Validate all scripts without building**
- Syntax checks all stage scripts
- Verifies required files exist
- Quick sanity check before building
## Stage Structure
### stagePM3 (Proxmark3 Base)
- **01-proxmark3/** - PM3 firmware + client + Python bindings
- **EXPORT_IMAGE** - Creates cached image at this point
- Build time: ~45 minutes
- Change frequency: Rarely (only when updating PM3)
### stageDangerousPi (Customizations)
- **01-Wireless-AP/** - WiFi access point + captive portal
- **02-ttyd/** - Web terminal (bash + PM3)
- **03-dangerous-pi/** - Your FastAPI app + frontend
- **EXPORT_IMAGE** - Creates final deployable image
- Build time: ~5 minutes
- Change frequency: Daily (your code)
## Workflow Examples
### First-time setup:
```bash
./build-image.sh full
# Wait ~1 hour
# Image: deploy/Proxmark3-dangerous-pi.img
```
### Daily development (app changes):
```bash
# Edit your code in app/
./build-image.sh from-dtpi
# Wait ~5 minutes
# Image: deploy/Proxmark3-dangerous-pi.img
```
### Update PM3 version:
```bash
# Edit pi-gen/stagePM3/01-proxmark3/00-run-chroot.sh
./build-image.sh from-pm3
# Wait ~50 minutes
# Updates PM3 cache + final image
```
### Clean rebuild:
```bash
docker rm pigen_work
./build-image.sh full
```
## Cache Management
**QCOW2 caching is enabled** (`USE_QCOW2=1` in config)
Cached images are stored in:
- `work/*/stage2/*.qcow2` - Base OS (30 min to rebuild)
- `work/*/stagePM3/*.qcow2` - PM3 build (45 min to rebuild)
To clear cache and force full rebuild:
```bash
rm -rf /home/work/pi-gen-builder/work
```
## Build Fixes Applied
1. **Directory creation** - Fixed missing `/etc/network/interfaces.d/` errors
2. **No sudo requirement** - Patched pi-gen to skip sudo prompts
3. **Source file copying** - Automated app/systemd/scripts integration
4. **Stage caching** - Enabled QCOW2 for fast incremental builds
## Time Savings
| Build Type | Time | Use Case |
|------------|------|----------|
| Full | ~60 min | First build |
| from-pm3 | ~50 min | Update PM3 |
| from-dtpi | **~5 min** | Daily dev ⭐ |
**Daily workflow time savings: 55 minutes per build!**