- Minimum requirements
- amd64 image
- Virtual Machine
- Armbian
- Ubuntu
- Python upgrade
- Manual image release for amd64
- ARMv8 or x86 processor (64 bit)
- 1 GB RAM
- 500 GB HDD
- Python >=3.9 (see how to upgrade below )
- > 2GB DDR3 ECC RAM (8GB+ if using ZFS)
- USB 3.0 / SATA / PCIE / NVME connectors
- SSD - multiple disks for redundancy
Specifications of the tested hardware: hw_comparison.md
All testers are welcome. Open an issue for your specific board to collaborate and share your experience.
-
amd64 Laptop, Desktop or Server connected to the internet via a LAN cable
-
OS disk
: min 32GB SSD is recommended to run the system on- if the computer can boot from an SDcard an Endurance type card can be used similar to the RPi setup
- USB SSD recommendation: Sandisk Extreme Pro USB 128 GB
- if the laptop has an optical drive an Optical Drive Bay Caddy / adapter can be used to change it to a second SSD instead.
-
Data disk
: a new, minimum 1TB SSD is recommended - stores data independent of the operating system- usually placed internally
- find the download links or build locally with the instructions in: /ci/README.md
Instructions to run a RaspiBlitz as a VM on a Linux host machine. The process is similar if you want to run RaspiBlitz on the bare metal.
Tested with:
- Debian image in VirtualBox and linux virt-manager / cockpit-machines
- Ubuntu image in VirtualBox and linux virt-manager / cockpit-machines
- Debian image in VirtualBox raspiblitz#2756 (comment)
- TrueNAS (FreeBSD bhyve) with an Ubuntu VM: raspiblitz#2104 (comment)
- QEMU+UTM
- Download and install the base OS on an at least 32GB drive
- Debian is the most tested and is closest to the RaspberryOS: https://www.debian.org/distrib/
- Ubuntu should work, but less tested
- To just experiment can load a virtualbox image from: https://www.osboxes.org/debian/ or https://www.osboxes.org/ubuntu.
These not need installation, password:
osboxes.org
-
Run the build script in the terminal of the base OS (with sudo access):
# download the build script wget https://raw.githubusercontent.com/rootzoll/raspiblitz/dev/build_sdcard.sh # run sudo bash build_sdcard.sh -f false -b dev -d headless -t false -w off
Options: -EXPORT just print build parameters & exit' -h, --help this help info -i, --interaction [0|1] interaction before proceeding with execution (default: 1) -f, --fatpack [0|1] fatpack mode (default: 1) -u, --github-user [raspiblitz|other] github user to be checked from the repo (default: raspiblitz) -b, --branch [v1.7|v1.8] branch to be built on (default: v1.10) -d, --display [lcd|hdmi|headless] display class (default: lcd) -t, --tweak-boot-drive [0|1] tweak boot drives (default: 1) -w, --wifi-region [off|US|GB|other] wifi iso code (default: US) or 'off'
-
Switch off when ready
-
Attach an other disk (can be even small if you prune or stop bitcoind manually. The second virtual disk will be used as the BLOCKCHAIN drive. This makes that data portable and independent from the OS similar to the combination of the SDcard and separate SSD.
- create a raw image of 500+ GB for best compatibility
- if there are permission issues try to symlink the disk image to
/var/lib/libvirt/images
Many SBC-s are supported: https://www.armbian.com/download/
To verify the downloaded image follow: https://docs.armbian.com/User-Guide_Getting-Started/#how-to-check-download-authenticity
Tested on:
- Odroid XU4 / HC1 / HC2 with the Armbian Buster image from https://www.armbian.com/odroid-xu4/
Burn the image to the SDcard with Etcher.
Assemble and boot.
password: 1234
Follow the instructions in the terminal. Set the new password to raspiblitz
and name the new user admin
to keep in line with the rest of the setup.
Continue with building the SDcard: https://github.com/rootzoll/raspiblitz#build-the-sd-card-image
A common distro to be supplied by the manufacturer for various boards.
Tested on:
- Odroid XU4 with ubuntu-18.04.1-4.14-minimal image from https://de.eu.odroid.in/ubuntu_18.04lts/XU3_XU4_MC1_HC1_HC2
- Nvidia Jetson Nano with Ubuntu Bionic image from https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit#write
Burn the image to the SDCard with Etcher.
Assemble and boot.
password: odroid
apt-get update
apt-get upgrade
if there is an error:
E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?
run:
reboot
and update as above
Continue with building the SDcard: https://github.com/rootzoll/raspiblitz#build-the-sd-card-image
- run the commands below in the terminal line-by-line
# select version pythonVersion="3.10.4" majorPythonVersion=$(echo "$pythonVersion" | awk -F. '{print $1"."$2}' ) # update and upgrade sudo apt update sudo apt upgrade -y # dependencies sudo apt install wget software-properties-common build-essential libnss3-dev zlib1g-dev libgdbm-dev libncurses5-dev libssl-dev libffi-dev libreadline-dev libsqlite3-dev libbz2-dev -y # download wget https://www.python.org/ftp/python/${pythonVersion}/Python-${pythonVersion}.tgz # optional signature for verification wget https://www.python.org/ftp/python/${pythonVersion}/Python-${pythonVersion}.tgz.asc # get PGP pubkey of Pablo Galindo Salgado gpg --recv-key CFDCA245B1043CF2A5F97865FFE87404168BD847 # check for: Good signature from "Pablo Galindo Salgado <[email protected]>" gpg --verify Python-${pythonVersion}.tgz.asc # unzip tar xvf Python-${pythonVersion}.tgz cd Python-${pythonVersion} # configure ./configure --enable-optimizations # install sudo make altinstall # move the python binary to the expected directory sudo mv $(which python${majorPythonVersion}) /usr/bin/ # check ls -la /usr/bin/python${majorPythonVersion} # make the new version the default sudo rm /etc/alternatives/python sudo update-alternatives --install /usr/bin/python python /usr/bin/python${majorPythonVersion} 1 sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python${majorPythonVersion} 1 # check python --version python3 --version
Work notes partially based on: https://github.com/rootzoll/raspiblitz/blob/v1.7/FAQ.md#what-is-the-process-of-creating-a-new-sd-card-image-release
- amd64 Laptop or Server connected to the internet via a LAN cable
Ubuntu Live
USB Stick to start on a clean systemInstallation medium
: min 8GB SDcard / USB stick to install the base image fromOS disk
: min 32 GB Endurance type SDcard or USB SSD to run the operating system on- (
Data disk
: a new, minimum 1TB SSD is recommended - not needed to create the image release) Tails USB Stick
to sign the image offline- PGP keys on an USB stick to sign the image
- NTFS formatted USB Stick or disk to store the signed image (can reuse the Installation medium)
- can be prepared any time on a separate computer and can reuse the Installation medium
- Start
Ubuntu Live
from USB stick - Under Settings: best to set correct keyboard language & power settings to prevent monitor turn off
- Download the latest Debian Desktop netinst.io, SHA512SUMS and Signature and verify the downloaded image
- In a terminal can use the following commands (see the comments for the explanations and an example output)
# Download the base image: wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-11.3.0-amd64-netinst.iso # Download the SHA512SUMS: wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/SHA512SUMS # Download the Signature: wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/SHA512SUMS.sign # Verify: # download the signing pubkey: gpg --keyserver keyring.debian.org --receive-key DF9B9C49EAA9298432589D76DA87E80D6294BE9B # gpg: key DA87E80D6294BE9B: public key "Debian CD signing key <[email protected]>" imported # gpg: Total number processed: 1 # gpg: imported: 1 # Verify the signature of the SHA512SUMS file gpg --verify gpg --verify SHA512SUMS.sign # Look for the output 'Good signature': # gpg: assuming signed data in 'SHA512SUMS' # gpg: Signature made Sat 26 Mar 2022 21:22:41 GMT # gpg: using RSA key DF9B9C49EAA9298432589D76DA87E80D6294BE9B # gpg: Good signature from "Debian CD signing key <[email protected]>" [unknown] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: DF9B 9C49 EAA9 2984 3258 9D76 DA87 E80D 6294 BE9B # Compare the hash to the hash of the image file: sha512sum -c SHA512SUMS --ignore-missing # Look for the output 'OK': # debian-11.3.0-amd64-netinst.iso: OK
- Connect an SDcard reader with a min 8GB SDcard or an USB stick.
- In the file manager open the context menu (right click) on the
netinst.iso
file. - Select the option
Open With Other Application
and chooseOpen With Disk Image Writer
. - Write the image to the SDcard / USB SSD (Installation medium).
- Shut down the Laptop now and remove the
Ubuntu Live
USB Stick.
- Connect the Laptop / Server to the LAN (with cable) with only the OS disk connected (no Data disk)
- Insert the installation medium to the USB and power up - boot from USB.
- Continue to work on the screen of the laptop or a connected monitor
- Install Debian with the defaults:
- leave the root password empty (root user disabled)
- create a new user called
pi
, set the password toraspiblitz
- use a single partition for the OS
- Choose:
Guided - use entire disk
- Select the OS disk
- All files in one partition
- Can remove the
Swap
partition - a swap file will be created on the Data disk later
- Choose:
- At the
Software selection
choose:- Debian desktop environment
- GNOME (could be other as preferred)
- SSH server
- standard system utilities
- Install GRUB on the primary partition (OS Disk)
-
Once the setup is finished reboot and log in with the
pi
user (pw:raspiblitz
) -
Run the following commands to build from the
dev
branch or changedev
with the branch name of your version:# download wget https://raw.githubusercontent.com/rootzoll/raspiblitz/dev/build_sdcard.sh # run sudo bash build_sdcard.sh -f true -b dev -d headless -t false -w off
-
The
[sudo] password for pi:
israspiblitz
-
Confirm the chosen parameters
-
Monitor/Check outputs for warnings/errors
-
(Optional for development - copy the output to a build_sdcard.sh.log)
-
Useful settings:
- In Settings - Power - Automatic Suspend - Plugged In - Off
- In Tweaks - General - Suspend when laptop lid is closed - Off
- run the command (same as running
release
underadmin
):sudo -u admin /home/admin/config.scripts/blitz.preparerelease.sh
- This will shut down the laptop.
- Remove the
Installation medium
and theUbuntu Live
USB stick and the LAN cable
- Connect the
Tails USB Stick
(make it stay offline) - Boot Tails and set and Admin password in Additional Settings (will need it to work with the disk)
- Set the screen to not switch off: Settings > Power -> Blank screen - Never
- Connect USB stick with GPG signing keys - decrypt drive if needed
- Open Terminal and cd into directory of USB Stick under
/media/amnesia
- Run
gpg --import ./secret-key-backup.key
, check andexit
- Disconnect USB stick with GPG keys
-
Start Disks and resize the OS disk partition to 10GB
-
Connect the NTFS USB stick, open in file manager and delete old files
-
Open a terminal from the NTFS disk with right click
-
Run
lsblk
in a terminal to double check the OS disk device name (ignore last partition number) -
Clone and compress the OS disk image (copy 11GB so the 10GB sized partition is comfortably included):
sudo dd if=/dev/[OSdiskddevice] bs=1G count=11 status=progress | gzip > raspiblitz-amd64-vX.X.X-YEAR-MONTH-DAY.img.gz
-
When finished you should see that 30GB was copied (the resulting compressed file is less than 3GB).
-
Create sha256 hash of the image:
sha256sum *.gz > raspiblitz-amd64-vX.X.X-YEAR-MONTH-DAY.img.gz.sha256
-
Sign the sha256 hash file:
gpg --detach-sign --armor *.sha256
-
Check the files:
ls raspiblitz-amd64-vX.X.X-YEAR-MONTH-DAY.img.gz raspiblitz-amd64-vX.X.X-YEAR-MONTH-DAY.img.gz.sha256 raspiblitz-amd64-vX.X.X-YEAR-MONTH-DAY.img.gz.sha256.asc
-
Test with:
gpg --verify *.asc shasum -c *.sha256
-
Shutdown the build computer
-
Upload the new image to server - put the .sig file and .sha256 next to it
-
Copy the sha256sum to GitHub README and update the download link
- Open a terminal in the directory with the downloaded files
raspiblitz-amd64-vX.X.X-YEAR-MONTH-DAY.img.gz raspiblitz-amd64-vX.X.X-YEAR-MONTH-DAY.img.gz.sha256 raspiblitz-amd64-vX.X.X-YEAR-MONTH-DAY.img.gz.sha256.asc
- Paste the following commands (see the comments for the explanations and an example output)
# Import the signing pubkey: curl https://keybase.io/oms/pgp_keys.asc | gpg --import # Verify the signature of the sha256 hash: gpg --verify *.asc # Look for the output 'Good signature': # gpg: assuming signed data in 'raspiblitz-amd64-vX.X.X-YEAR-MONTH-DAY.img.gz.sha256' # gpg: Signature made Mon DAY MONTH YEAR xx:xx:xx GMT # gpg: using RSA key 13C688DB5B9C745DE4D2E4545BFB77609B081B65 # gpg: Good signature from "openoms <[email protected]>" [unknown] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: 13C6 88DB 5B9C 745D E4D2 E454 5BFB 7760 9B08 1B65 # Compare the sha256 hash to the hash of the image file shasum -c *.sha256 # Look for the output 'OK' : # raspiblitz-amd64-vX.X.X-YEAR-MONTH-DAY.img.gz: OK
- Create Torrent file from image (for example with Transmission / qbBittorrent) and place in the
home.admin/assets
folder & link on README - Tracker list recommended to be used with the torrent:
udp://tracker.coppersurfer.tk:6969/announce http://tracker.yoshi210.com:6969/announce http://open.acgtracker.com:1096/announce http://tracker.skyts.net:6969/announce udp://9.rarbg.me:2780/announce http://tracker2.itzmx.com:6961/announce udp://exodus.desync.com:6969/announce http://pow7.com:80/announce udp://tracker.leechers-paradise.org:6969
- Comments:
raspiblitz-raspiblitz-amd64-vX.X.X-YEAR-MONTH-DAY raspiblitz-raspiblitz-amd64-vX.X.X-YEAR-MONTH-DAY image, sha256sum and signature Find more info at: https://github.com/rootzoll/raspiblitz/tree/dev/alternative.platforms # Import the signing pubkey: curl https://keybase.io/oms/pgp_keys.asc | gpg --import gpg --verify *.asc # Verify the signature of the sha256 hash (Look for the output 'Good signature'): gpg --verify *.asc # Look for the output 'Good signature' # Compare the sha256 hash to the hash of the image file (Look for the output 'OK'): shasum -c *.sha256