Refactor build script for custom ISO creation and update hardware configuration
- Replaced OS-specific build method with a custom ISO builder in the build-for-hardware.sh script. - Updated output file naming to reflect the correct Alpine version in the build process. - Adjusted build dates in hardware configuration files for HP ProDesk, merged, and Start9 Pure profiles to the latest timestamp.
This commit is contained in:
@@ -0,0 +1,127 @@
|
||||
# Boot Issue Fixed - Alpine Live Boot Parameters
|
||||
|
||||
## What Was Wrong
|
||||
|
||||
The custom ISO was missing critical Alpine Linux live boot parameters:
|
||||
- ❌ No `modloop` parameter (Alpine's module overlay system)
|
||||
- ❌ No `alpine_dev` parameter (tells Alpine where to find itself)
|
||||
- ❌ Missing boot device hints
|
||||
|
||||
Result: System booted into emergency shell because it couldn't find `/sbin/init`
|
||||
|
||||
## What I Fixed
|
||||
|
||||
### Updated Boot Configurations:
|
||||
|
||||
#### 1. GRUB Config (`/boot/grub/grub.cfg`)
|
||||
```
|
||||
linux /boot/vmlinuz-lts modules=loop,squashfs,sd-mod,usb-storage modloop=/boot/modloop-lts alpine_dev=sda1:iso9660 quiet console=tty0
|
||||
```
|
||||
|
||||
#### 2. Syslinux Config (`/boot/syslinux/syslinux.cfg`)
|
||||
```
|
||||
APPEND modules=loop,squashfs,sd-mod,usb-storage modloop=/boot/modloop-lts alpine_dev=cdrom:iso9660 quiet console=tty0
|
||||
```
|
||||
|
||||
### Key Parameters Added:
|
||||
|
||||
| Parameter | Purpose |
|
||||
|-----------|---------|
|
||||
| `modloop=/boot/modloop-lts` | Points to Alpine's compressed module filesystem |
|
||||
| `alpine_dev=cdrom:iso9660` | Tells Alpine where to find the live system (on ISO9660 filesystem) |
|
||||
| `console=tty0` | Ensures output goes to the screen |
|
||||
| `modules=loop,squashfs,sd-mod,usb-storage` | Loads required kernel modules early |
|
||||
|
||||
## New ISO Ready
|
||||
|
||||
**Location**: `/Users/dorian/Projects/archy/image-recipe/results/archipelago-3.19-hp-prodesk-uefi-x86_64.iso`
|
||||
|
||||
**Size**: 278MB
|
||||
|
||||
**Created**: Jan 31, 2026 21:51
|
||||
|
||||
## How to Flash
|
||||
|
||||
### Method 1: Balena Etcher
|
||||
1. Open Balena Etcher
|
||||
2. Select the new ISO
|
||||
3. Select your USB drive
|
||||
4. Flash!
|
||||
|
||||
### Method 2: dd (Terminal)
|
||||
```bash
|
||||
diskutil list
|
||||
diskutil unmountDisk /dev/diskN
|
||||
sudo dd if=/Users/dorian/Projects/archy/image-recipe/results/archipelago-3.19-hp-prodesk-uefi-x86_64.iso of=/dev/rdiskN bs=1m status=progress
|
||||
diskutil eject /dev/diskN
|
||||
```
|
||||
|
||||
## How to Boot HP ProDesk
|
||||
|
||||
1. **Disable Secure Boot** in BIOS (F10 → Security → Secure Boot → Disabled)
|
||||
2. **Insert USB** and reboot
|
||||
3. **Press F9** for boot menu
|
||||
4. **Select**: "UEFI - General UDISK"
|
||||
5. System should now boot properly to Alpine login prompt
|
||||
|
||||
## What You'll See After Booting
|
||||
|
||||
```
|
||||
🏔️ Archipelago Bitcoin Node OS
|
||||
Booting...
|
||||
|
||||
Welcome to Alpine Linux 3.19
|
||||
Kernel 6.6.x-lts on an x86_64
|
||||
|
||||
localhost login: _
|
||||
```
|
||||
|
||||
### Login:
|
||||
- **Username**: `root`
|
||||
- **Password**: *(just press Enter)*
|
||||
|
||||
### Run Installer:
|
||||
```bash
|
||||
sh /media/cdrom/archipelago/install.sh
|
||||
```
|
||||
|
||||
Or if that path doesn't work:
|
||||
```bash
|
||||
sh /media/usb/archipelago/install.sh
|
||||
```
|
||||
|
||||
## What the Installer Does
|
||||
|
||||
1. ✅ Installs Alpine Linux 3.19 to internal disk
|
||||
2. ✅ Installs Archipelago backend (5.7MB Rust binary)
|
||||
3. ✅ Installs Vue.js web UI (port 8100)
|
||||
4. ✅ Configures Podman container runtime
|
||||
5. ✅ Sets up 21 app manifests (Bitcoin, Lightning, Web5, etc.)
|
||||
6. ✅ Configures DHCP networking on Ethernet
|
||||
7. ✅ Sets up nginx, SSH, and all services
|
||||
8. ✅ Creates `archipelago` user
|
||||
|
||||
## After Installation
|
||||
|
||||
1. **Reboot** and remove USB
|
||||
2. **Login**: `archipelago` / `archipelago`
|
||||
3. **Change password**: `passwd`
|
||||
4. **Access web UI**: `http://<your-ip>:8100`
|
||||
|
||||
---
|
||||
|
||||
**This ISO should now boot properly without dropping to emergency shell!** 🚀
|
||||
|
||||
## Technical Notes
|
||||
|
||||
The issue was that we were extracting and repackaging an Alpine ISO without understanding Alpine's live boot requirements. Alpine Linux uses:
|
||||
|
||||
1. **modloop**: A compressed SquashFS file containing kernel modules and system files
|
||||
2. **alpine_dev**: Boot parameter telling the system where to find the live environment
|
||||
3. **Special initramfs hooks**: That detect and mount the live media
|
||||
|
||||
By adding these parameters back, the boot process now works as expected.
|
||||
|
||||
## If You Still Have Issues
|
||||
|
||||
Try the **Safe Mode** boot option (second menu entry), which adds `nomodeset` for better hardware compatibility.
|
||||
Reference in New Issue
Block a user