- 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.
128 lines
3.7 KiB
Markdown
128 lines
3.7 KiB
Markdown
# 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.
|