- 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.
3.7 KiB
3.7 KiB
Boot Issue Fixed - Alpine Live Boot Parameters
What Was Wrong
The custom ISO was missing critical Alpine Linux live boot parameters:
- ❌ No
modloopparameter (Alpine's module overlay system) - ❌ No
alpine_devparameter (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
- Open Balena Etcher
- Select the new ISO
- Select your USB drive
- Flash!
Method 2: dd (Terminal)
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
- Disable Secure Boot in BIOS (F10 → Security → Secure Boot → Disabled)
- Insert USB and reboot
- Press F9 for boot menu
- Select: "UEFI - General UDISK"
- 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:
sh /media/cdrom/archipelago/install.sh
Or if that path doesn't work:
sh /media/usb/archipelago/install.sh
What the Installer Does
- ✅ Installs Alpine Linux 3.19 to internal disk
- ✅ Installs Archipelago backend (5.7MB Rust binary)
- ✅ Installs Vue.js web UI (port 8100)
- ✅ Configures Podman container runtime
- ✅ Sets up 21 app manifests (Bitcoin, Lightning, Web5, etc.)
- ✅ Configures DHCP networking on Ethernet
- ✅ Sets up nginx, SSH, and all services
- ✅ Creates
archipelagouser
After Installation
- Reboot and remove USB
- Login:
archipelago/archipelago - Change password:
passwd - 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:
- modloop: A compressed SquashFS file containing kernel modules and system files
- alpine_dev: Boot parameter telling the system where to find the live environment
- 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.