The best of both worlds: Raspberry Pi OS kernel and firmware for perfect hardware compatibility, combined with Alpine Linux userland for minimal footprint and efficiency.
| Feature | Description |
|---|---|
| π§ Maximum Compatibility | Uses official Raspberry Pi OS kernel and firmware for perfect hardware support |
| πͺΆ Minimal Footprint | Alpine Linux userland with musl libc - fits on a 2GB SD card |
| π Secure by Default | SSH enabled with Dropbear, minimal attack surface |
| π¦ Modern Package Management | Alpine's apk package manager with vast repository access |
| π Network Ready | DHCP on ethernet, WiFi support with wpa_supplicant |
| πΎ SD Card Friendly | /var/log on tmpfs to reduce wear on your SD card |
| βοΈ Zero-Touch Configuration | Configure WiFi, SSH, and system settings before first boot |
| π Weekly Updates | Automated builds with latest Raspberry Pi OS kernels |
Alternative downloads: All Releases | Direct Download | SHA256 Checksum
# Extract the image
xz -d RasPINE-YYYY-MM-DD.img.xz
# Write to SD card (replace /dev/sdX with your SD card device)
sudo dd if=RasPINE-YYYY-MM-DD.img of=/dev/sdX bs=4M status=progress conv=fsyncRasPINE supports zero-touch configuration! Mount the boot partition after writing the image and create a configuration file:
# Mount the boot partition (adjust device as needed)
mkdir -p /mnt/boot
mount /dev/sdX1 /mnt/boot
# Copy and edit the configuration template
cp /mnt/boot/raspine-config.txt.sample /mnt/boot/raspine-config.txt
nano /mnt/boot/raspine-config.txt
# Unmount when done
umount /mnt/bootSee the Boot Configuration section for details on available options.
Insert the SD card and power on your Raspberry Pi. Connect via SSH or console:
- Username:
raspine - Password:
raspberry(or your configured password)
β οΈ Security Note: Change the password immediately after first login usingpasswd
RasPINE includes a powerful boot configuration system that allows you to set up your system before the first boot. This is perfect for headless deployments or when you need to configure multiple devices.
- On the boot partition, you'll find
raspine-config.txt.sample - Copy this to
raspine-config.txtand edit with your settings - On first boot, RasPINE processes this file and applies your configuration
- The config file is automatically deleted after processing for security
Configure multiple WiFi networks with priority ordering:
# Primary network (highest priority if not numbered)
wifi_ssid=HomeNetwork
wifi_password=HomePassword
# Additional networks with priority (higher numbers = higher priority)
wifi_ssid_2=WorkNetwork
wifi_password_2=WorkPassword
wifi_ssid_3=MobileHotspot
wifi_password_3=HotspotPassword
# WiFi country code (affects available channels)
wifi_country=GB
# Allow connection to open networks
enable_open_networks=false# Set password for raspine user
user_password=MySecurePassword
# Enable SSH password authentication (default is key-only)
enable_ssh_password=true
# Add SSH public key for secure access
ssh_key=ssh-rsa AAAAB3NzaC1yc2EAAAA... [email protected]# Set hostname
hostname=my-raspine
# Set timezone
timezone=Europe/London
# Set locale
locale=en_GB.UTF-8# RasPINE Boot Configuration
# WARNING: This file will be DELETED after processing for security!
# === WIFI CONFIGURATION ===
wifi_ssid=MyHomeNetwork
wifi_password=MyHomePassword
wifi_ssid_2=WorkNetwork
wifi_password_2=WorkPassword
wifi_country=GB
enable_open_networks=false
# === USER SECURITY ===
user_password=MySecurePassword123!
enable_ssh_password=false
ssh_key=ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDEx... [email protected]
# === SYSTEM CONFIGURATION ===
hostname=raspine-zero
timezone=Europe/London
locale=en_GB.UTF-8- The configuration file is automatically deleted after processing to protect your passwords
- WiFi passwords and user passwords are never stored in plain text after configuration
- SSH key-only authentication is recommended for production use
- Always keep a backup of your configuration in a secure location
RasPINE works with ALL Raspberry Pi models:
| Series | Models |
|---|---|
| Classic | Pi 1 Model A/B/B+ |
| Zero | Pi Zero, Zero W, Zero 2 W |
| Standard | Pi 2B, 3A+/B/B+, 4B, 5 |
| Compute | CM1, CM3, CM3+, CM4, CM4S |
| Special | Pi 400, Pi 500 |
DHCP is enabled by default on eth0. No configuration needed.
Use the boot configuration system described above to set up WiFi before first boot.
Edit /etc/wpa_supplicant/wpa_supplicant.conf:
network={
ssid="YourNetworkSSID"
psk="YourNetworkPassword"
}Then enable the wireless interface:
sudo ifup wlan0RasPINE uses Alpine's apk package manager:
# Update package index
apk update
# Install packages
apk add nano htop git
# Search for packages
apk search nginx
# Remove packages
apk del package-nameRasPINE includes the custom RasPINE repository with Raspberry Pi OS kernels and firmware:
# Already configured in the image
https://raspine.pistar.uk/v3.22/community# List all services
rc-status
# Start/stop/restart services
rc-service dropbear start
rc-service networking restart
# Enable/disable at boot
rc-update add dropbear default
rc-update del dropbear default# Check Alpine version
cat /etc/alpine-release
# Check kernel version
uname -r
# Check disk usage
df -h
# Check memory usage
free -h| Partition | Size | Format | Mount Point | Purpose |
|---|---|---|---|---|
| 1 | 256MB | FAT32 | /boot/firmware |
Boot files, kernel, firmware, config |
| 2 | ~1.7GB | ext4 | / |
Root filesystem |
- All kernel images (kernel*.img)
- Device tree blobs and overlays
- Kernel modules (
/lib/modules/*) - Firmware blobs (
/lib/firmware/*) - Boot configuration files
- Hardware-specific udev rules
- Complete userland (musl libc)
- OpenRC init system
- BusyBox utilities
- APK package manager
- Dropbear SSH server
- Network management tools
- Boot configuration processor (
raspine-config) - Hybrid integration scripts
- Custom APK repository configuration
| Issue | Solution |
|---|---|
| No network | Check cable/WiFi config, verify with ip addr show |
| WiFi not connecting | Check country code, verify password, check wpa_supplicant logs |
| SSH refused | Ensure dropbear is running: rc-status |
| Config not applied | Config file must be named exactly raspine-config.txt |
| Module errors | Some glibc modules may fail; libc6-compat provides basic compatibility |
| Boot issues | Check /boot/firmware/config.txt and cmdline.txt |
| Package not found | Run apk update first |
Check the Issues page or create a new issue if you encounter problems.
Contributions are welcome! See CONTRIBUTING.md for guidelines.
# Clone the repository
git clone https://github.com/MW0MWZ/RasPINE.git
cd RasPINE
# Make your changes
# Test locally if possible
# Submit a pull requestThis project combines components from:
- Raspberry Pi OS - Raspberry Pi OS License
- Alpine Linux - Alpine License
- Raspberry Pi Foundation for kernel and firmware
- Alpine Linux Team for the minimal userland
- Pi-Star Team for inspiration and collaboration
- The Amateur Radio community for continuous support