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:
116
BUILD_SYSTEM.md
Normal file
116
BUILD_SYSTEM.md
Normal 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!**
|
||||
Reference in New Issue
Block a user