Enhance README and build scripts for hardware-specific optimizations
- Updated README.md to clarify development setup for macOS/Docker and added production build instructions for specific hardware. - Introduced new build scripts for optimized OS images targeting Start9 Server Pure, HP ProDesk 400 G4 DM, and Dell OptiPlex. - Enhanced Dockerfile to specify platform compatibility and improved Alpine profile for Archipelago builds. - Updated configuration files and init scripts to support new hardware profiles and ensure proper service management.
This commit is contained in:
@@ -0,0 +1,412 @@
|
||||
# Building Archipelago for Specific Hardware
|
||||
|
||||
Archipelago supports building optimized OS images for specific hardware targets. Each build includes hardware-specific optimizations, drivers, and configurations.
|
||||
|
||||
## Supported Hardware
|
||||
|
||||
### 🖥️ Start9 Server Pure
|
||||
```bash
|
||||
./build-for-hardware.sh start9-pure iso
|
||||
```
|
||||
|
||||
**Specifications:**
|
||||
- **CPU**: Intel Core i7-10710U (6 cores, 12 threads)
|
||||
- **RAM**: 32GB or 64GB DDR4-3200
|
||||
- **Storage**: 2TB or 4TB NVMe SSD
|
||||
- **Network**: 1x Gigabit Ethernet
|
||||
- **Graphics**: Intel UHD Graphics
|
||||
- **Ports**: 4x USB 3.0, 2x USB 2.0, 1x USB-C 3.1, HDMI, DisplayPort
|
||||
|
||||
**Optimizations:**
|
||||
- Intel microcode updates
|
||||
- Intel graphics acceleration
|
||||
- NVMe SSD optimizations
|
||||
- Power management tuning
|
||||
|
||||
### 🖥️ HP ProDesk 400 G4 DM
|
||||
```bash
|
||||
./build-for-hardware.sh hp-prodesk iso
|
||||
```
|
||||
|
||||
**Specifications:**
|
||||
- **CPU**: Various Intel processors
|
||||
- **RAM**: 8GB+ DDR4
|
||||
- **Storage**: 128GB+ SATA/NVMe SSD
|
||||
- **Network**: 1x Gigabit Ethernet
|
||||
- **Form Factor**: Desktop Mini
|
||||
|
||||
**Optimizations:**
|
||||
- Intel graphics drivers
|
||||
- SATA/NVMe detection and optimization
|
||||
- HP-specific firmware support
|
||||
|
||||
### 🖥️ Dell OptiPlex
|
||||
```bash
|
||||
./build-for-hardware.sh dell-optiplex iso
|
||||
```
|
||||
|
||||
**Specifications:**
|
||||
- **CPU**: Various Intel processors
|
||||
- **RAM**: 8GB+ DDR4
|
||||
- **Storage**: 128GB+ SATA/NVMe SSD
|
||||
- **Network**: 1x Gigabit Ethernet
|
||||
- **Models**: 3050, 7050, 9020, etc.
|
||||
|
||||
**Optimizations:**
|
||||
- Intel graphics drivers
|
||||
- Dell firmware support
|
||||
- Multi-model compatibility
|
||||
|
||||
### 🖥️ Generic x86_64
|
||||
```bash
|
||||
./build-for-hardware.sh generic iso
|
||||
```
|
||||
|
||||
**Specifications:**
|
||||
- **CPU**: Any x86_64 processor (Intel/AMD)
|
||||
- **RAM**: 8GB+ recommended
|
||||
- **Storage**: 128GB+ HDD/SSD
|
||||
- **Network**: Any Ethernet adapter
|
||||
|
||||
**Optimizations:**
|
||||
- Broad hardware compatibility
|
||||
- Generic drivers for maximum coverage
|
||||
- Both Intel and AMD support
|
||||
|
||||
## Build Process
|
||||
|
||||
### Quick Start
|
||||
|
||||
1. **Choose your hardware target:**
|
||||
```bash
|
||||
cd image-recipe
|
||||
./build-for-hardware.sh <target> iso
|
||||
```
|
||||
|
||||
2. **Wait for build to complete** (30-60 minutes first time)
|
||||
|
||||
3. **Find your ISO:**
|
||||
```bash
|
||||
ls results/archipelago-*-<target>-*.iso
|
||||
```
|
||||
|
||||
### Build Types
|
||||
|
||||
#### ISO Image (Recommended)
|
||||
```bash
|
||||
./build-for-hardware.sh start9-pure iso
|
||||
```
|
||||
- Bootable from USB drive
|
||||
- Live system or installation
|
||||
- Easy to flash with tools
|
||||
|
||||
#### Disk Image
|
||||
```bash
|
||||
./build-for-hardware.sh start9-pure disk
|
||||
```
|
||||
- Raw disk image
|
||||
- For direct disk flashing
|
||||
- Advanced users only
|
||||
|
||||
## Hardware-Specific Features
|
||||
|
||||
### Start9 Server Pure
|
||||
- **Coreboot Support**: Optimized for Start9's Coreboot firmware
|
||||
- **No Intel ME**: Respects disabled Intel Management Engine
|
||||
- **NVMe Performance**: Tuned for high-speed NVMe SSDs
|
||||
- **Professional Grade**: Enterprise-level reliability
|
||||
|
||||
### HP ProDesk 400 G4 DM
|
||||
- **Compact Form Factor**: Optimized for small desktop
|
||||
- **Business Features**: Enterprise management support
|
||||
- **Low Power**: Efficient power management
|
||||
- **Silent Operation**: Thermal optimizations
|
||||
|
||||
### Dell OptiPlex
|
||||
- **Wide Model Support**: Works across many OptiPlex models
|
||||
- **Legacy Support**: Compatible with older hardware
|
||||
- **Enterprise Ready**: Business-class features
|
||||
- **Proven Reliability**: Battle-tested hardware
|
||||
|
||||
### Generic Build
|
||||
- **Maximum Compatibility**: Works on most x86_64 hardware
|
||||
- **Fallback Option**: When specific profile unavailable
|
||||
- **DIY Builds**: Perfect for custom hardware
|
||||
- **Virtual Machines**: Works in VirtualBox, VMware, etc.
|
||||
|
||||
## What Gets Customized
|
||||
|
||||
Each hardware build includes:
|
||||
|
||||
### 1. Hardware Detection
|
||||
Automatically detects and optimizes for:
|
||||
- CPU vendor and model
|
||||
- Available RAM
|
||||
- Storage type (NVMe, SATA SSD, HDD)
|
||||
- Network interfaces
|
||||
- Graphics hardware
|
||||
- USB controllers
|
||||
|
||||
### 2. Kernel Modules
|
||||
Includes specific drivers for:
|
||||
- Storage controllers
|
||||
- Network adapters
|
||||
- Graphics cards
|
||||
- USB devices
|
||||
- Audio hardware
|
||||
|
||||
### 3. Firmware
|
||||
Loads appropriate firmware for:
|
||||
- CPU microcode (Intel/AMD)
|
||||
- Network adapters
|
||||
- Graphics cards
|
||||
- Wireless (if applicable)
|
||||
|
||||
### 4. Performance Tuning
|
||||
Optimizes:
|
||||
- I/O scheduler (NVMe vs SATA)
|
||||
- CPU governor (performance vs power)
|
||||
- Memory management
|
||||
- Network buffers
|
||||
- Disk caching
|
||||
|
||||
### 5. System Configuration
|
||||
Sets defaults for:
|
||||
- Boot parameters
|
||||
- Service startup order
|
||||
- Power management
|
||||
- Thermal management
|
||||
- Network configuration
|
||||
|
||||
## Build Output
|
||||
|
||||
After successful build, you'll get:
|
||||
|
||||
```
|
||||
results/
|
||||
├── archipelago-0.1.0-start9-pure-x86_64.iso
|
||||
├── archipelago-0.1.0-hp-prodesk-x86_64.iso
|
||||
├── archipelago-0.1.0-dell-optiplex-x86_64.iso
|
||||
├── archipelago-0.1.0-generic-x86_64.iso
|
||||
└── BUILD_MANIFEST_<target>.txt
|
||||
```
|
||||
|
||||
Each ISO includes:
|
||||
- Hardware-specific optimizations
|
||||
- Appropriate drivers and firmware
|
||||
- Custom boot configuration
|
||||
- Installation scripts
|
||||
- Hardware detection tools
|
||||
|
||||
## Installation
|
||||
|
||||
### 1. Flash ISO to USB
|
||||
|
||||
**macOS:**
|
||||
```bash
|
||||
# Find USB device
|
||||
diskutil list
|
||||
|
||||
# Unmount
|
||||
diskutil unmountDisk /dev/diskX
|
||||
|
||||
# Flash ISO
|
||||
sudo dd if=results/archipelago-0.1.0-start9-pure-x86_64.iso \
|
||||
of=/dev/rdiskX \
|
||||
bs=1m \
|
||||
status=progress
|
||||
```
|
||||
|
||||
**Linux:**
|
||||
```bash
|
||||
# Find USB device
|
||||
lsblk
|
||||
|
||||
# Flash ISO
|
||||
sudo dd if=results/archipelago-0.1.0-start9-pure-x86_64.iso \
|
||||
of=/dev/sdX \
|
||||
bs=1M \
|
||||
status=progress
|
||||
```
|
||||
|
||||
**GUI Tools:**
|
||||
- [balenaEtcher](https://www.balena.io/etcher/) (macOS/Linux/Windows)
|
||||
- [Rufus](https://rufus.ie/) (Windows)
|
||||
- [Raspberry Pi Imager](https://www.raspberrypi.com/software/) (All platforms)
|
||||
|
||||
### 2. Boot from USB
|
||||
|
||||
1. Insert USB drive into target hardware
|
||||
2. Power on and enter boot menu:
|
||||
- **Start9 Pure**: Press F12 during boot
|
||||
- **HP ProDesk**: Press F9 during boot
|
||||
- **Dell OptiPlex**: Press F12 during boot
|
||||
3. Select USB drive from boot menu
|
||||
4. Follow installation prompts
|
||||
|
||||
### 3. First Boot
|
||||
|
||||
After installation:
|
||||
1. Remove USB drive
|
||||
2. Reboot system
|
||||
3. Hardware detection runs automatically
|
||||
4. Services start automatically
|
||||
5. Access UI at `http://<device-ip>:8100`
|
||||
|
||||
## Verification
|
||||
|
||||
After flashing, verify the build:
|
||||
|
||||
```bash
|
||||
# Check ISO integrity
|
||||
sha256sum results/archipelago-0.1.0-start9-pure-x86_64.iso
|
||||
|
||||
# View build manifest
|
||||
cat results/BUILD_MANIFEST_start9-pure.txt
|
||||
|
||||
# Mount ISO to inspect (Linux)
|
||||
sudo mount -o loop archipelago-0.1.0-start9-pure-x86_64.iso /mnt
|
||||
ls -la /mnt
|
||||
cat /mnt/etc/archipelago/hardware.toml
|
||||
sudo umount /mnt
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Build Fails
|
||||
```bash
|
||||
# Clean build artifacts
|
||||
rm -rf results/ build/ apks/ aports/
|
||||
|
||||
# Try again
|
||||
./build-for-hardware.sh start9-pure iso
|
||||
```
|
||||
|
||||
### Wrong Hardware Detected
|
||||
Check hardware profile after boot:
|
||||
```bash
|
||||
cat /etc/archipelago/hardware.toml
|
||||
cat /var/log/archipelago-hardware.log
|
||||
```
|
||||
|
||||
### Boot Issues
|
||||
- Verify ISO checksum
|
||||
- Try different USB port
|
||||
- Check BIOS/UEFI settings:
|
||||
- Enable UEFI boot
|
||||
- Disable Secure Boot (for now)
|
||||
- Enable USB boot
|
||||
- Set boot order
|
||||
|
||||
### Performance Issues
|
||||
View hardware optimization log:
|
||||
```bash
|
||||
cat /var/log/archipelago-hardware.log
|
||||
dmesg | grep -i archipelago
|
||||
journalctl -u archipelago
|
||||
```
|
||||
|
||||
## Advanced Usage
|
||||
|
||||
### Custom Hardware Profile
|
||||
|
||||
Create custom profile for your hardware:
|
||||
|
||||
1. Copy generic profile:
|
||||
```bash
|
||||
cp -r alpine-profile/overlay alpine-profile/overlay-myserver
|
||||
```
|
||||
|
||||
2. Edit hardware config:
|
||||
```bash
|
||||
vim alpine-profile/overlay-myserver/etc/archipelago/hardware.toml
|
||||
```
|
||||
|
||||
3. Build with custom profile:
|
||||
```bash
|
||||
HARDWARE_TARGET=myserver ./build-for-hardware.sh myserver iso
|
||||
```
|
||||
|
||||
### Build All Targets
|
||||
|
||||
Build for all supported hardware:
|
||||
```bash
|
||||
#!/bin/bash
|
||||
for target in start9-pure hp-prodesk dell-optiplex generic; do
|
||||
echo "Building for $target..."
|
||||
./build-for-hardware.sh $target iso
|
||||
done
|
||||
```
|
||||
|
||||
### Automated Testing
|
||||
|
||||
Test ISO in QEMU:
|
||||
```bash
|
||||
qemu-system-x86_64 \
|
||||
-m 4G \
|
||||
-smp 2 \
|
||||
-boot d \
|
||||
-cdrom results/archipelago-0.1.0-start9-pure-x86_64.iso \
|
||||
-enable-kvm
|
||||
```
|
||||
|
||||
## Hardware Requirements
|
||||
|
||||
### Minimum Requirements
|
||||
- **CPU**: 64-bit x86_64 processor
|
||||
- **RAM**: 4GB (8GB recommended)
|
||||
- **Storage**: 64GB (128GB recommended)
|
||||
- **Network**: Ethernet adapter
|
||||
- **Boot**: UEFI or Legacy BIOS
|
||||
|
||||
### Recommended Requirements
|
||||
- **CPU**: Intel i5/i7 or AMD Ryzen 5/7
|
||||
- **RAM**: 16GB+
|
||||
- **Storage**: 256GB+ SSD (NVMe preferred)
|
||||
- **Network**: Gigabit Ethernet
|
||||
- **Boot**: UEFI with GPT
|
||||
|
||||
### Start9 Server Pure (Optimal)
|
||||
- **CPU**: Intel i7-10710U (6 cores, 12 threads)
|
||||
- **RAM**: 32GB or 64GB
|
||||
- **Storage**: 2TB or 4TB NVMe SSD
|
||||
- **Network**: Gigabit Ethernet
|
||||
- **Ports**: Multiple USB 3.0, USB-C
|
||||
|
||||
## Next Steps
|
||||
|
||||
After installation:
|
||||
1. Access web UI: `http://<device-ip>:8100`
|
||||
2. Complete setup wizard
|
||||
3. Install Bitcoin Core
|
||||
4. Add Lightning Network (LND or CLN)
|
||||
5. Install additional apps
|
||||
6. Configure backups
|
||||
7. Secure your node
|
||||
|
||||
## Support
|
||||
|
||||
Need help?
|
||||
- **Documentation**: `docs/`
|
||||
- **Issues**: GitHub Issues
|
||||
- **Community**: Discord (coming soon)
|
||||
- **Hardware-Specific**: Check `BUILD_MANIFEST_<target>.txt`
|
||||
|
||||
## Building Multiple Targets
|
||||
|
||||
To build for all your hardware:
|
||||
|
||||
```bash
|
||||
# Build Start9 Server Pure image
|
||||
./build-for-hardware.sh start9-pure iso
|
||||
|
||||
# Build HP ProDesk image
|
||||
./build-for-hardware.sh hp-prodesk iso
|
||||
|
||||
# Build Dell OptiPlex image
|
||||
./build-for-hardware.sh dell-optiplex iso
|
||||
|
||||
# You'll get separate ISOs optimized for each
|
||||
```
|
||||
|
||||
Each ISO is independent and optimized for its target hardware!
|
||||
Reference in New Issue
Block a user