Add automated image builds for VM, bare metal (amd64) and RPi (arm64-rpi) (#3486)

* add amd64 image build with lean and fatpack option

* use the pi user for setup

* add notes to ci readme

* add gnome desktop to fatpack image, reduce to 30GB

* documentation updates

* install gnome with --force-yes

* install gnome desktop non-interactively

* change links to rootzoll dev

* pass user and branch to build_sdcard.sh from PR

* add user and branch to Makefile

* Add arm64 rpi image build (#74)

ci:
* add arm64-rpi image build
* rename to raspiblitz-amd64-debian-11.5-lean/fatpack
* use rm -f to not exit with error
* place amd64 images under ci/amd64/builds/
* make /dev/shm world writable for fatpack
* fix vlc remove and --var syntax
* remove sudo-s
* leave update and upgrade to the build_sdcard.sh
* increase image size to 16GB, rename build dir

build_sdcard.sh:
* detect raspios_arm64 with raspi.list
* switch ssmtp to msmtp
related: https://github.com/rootzoll/raspiblitz/pull/2232

Co-authored-by: rootzoll <johndoe@example.com>

* i2pd: unified install from repo, /usr/sbin to PATH

related: #2413, fixes amd64 build

* update CHANGES.md

* fix amd64 path in Makefile

* use only qemu image, run on ubuntu-22.04

* use file_checksum for the arm64-rpi base image

* Fix the local arm64-rpi image generation (#75)

* add selfrun script
* ubuntu: add universe repo and qemu-user-static
* test on ubuntu live (jammy)

* build from branches: [ "dev", "v1.8", "v1.9" ]

* correct Makefile paths for the  local run

* make the local run non-interactive

* improve readme and Makefile

* increase disk image sizes to 32GB

* set image sizes to 30 GB for amd64 and arm64-rpi

* add network-manager for amd64

* add to readme

* skip Code&Compile for VM builds

* add to readme

* amd64 base image update to debian 11.6.0

* remove debian version from filenames

* skip Code&Compile for amd64 builds

* Merge branch 'dev' into add-amd64-image-build

* amd64: increase cpu and RAM, compile mempool last

* trigger workflows only on scripts used or called

* Update ci/arm64-rpi/packer.build.arm64-rpi.sh

Co-authored-by: Daniel Bast <2790401+dbast@users.noreply.github.com>

* arm64 remove setup-qemu-action, leave npm last

* set only manual trigger for fatpack, edit triggers

Co-authored-by: rootzoll <johndoe@example.com>
Co-authored-by: Daniel Bast <2790401+dbast@users.noreply.github.com>
This commit is contained in:
openoms 2022-12-20 15:31:51 +01:00 committed by GitHub
parent b8b86b3b10
commit 4ab6c46a27
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
28 changed files with 1128 additions and 94 deletions

View File

@ -0,0 +1,89 @@
name: amd64-fatpack-image-build
on:
workflow_dispatch:
#push:
# branches: [ "dev", "v1.8", "v1.9" ]
# paths:
# - 'build_sdcard.sh'
# - 'home.admin/bitcoin.install.sh'
# - 'home.admin/lnd.install.sh'
# - 'home.admin/cl.install.sh'
# - 'home.admin/cl-plugin.cln-grpc.sh'
# - 'home.admin/tor.install.sh'
# - 'home.admin/blitz.i2pd.sh'
# - 'home.admin/blitz.web.sh'
# - 'home.admin/bonus.nodejs.sh'
# - 'home.admin/bonus.rtl.sh'
# - 'home.admin/bonus.btcpayserver.sh'
# - 'home.admin/bonus.thunderhub.sh'
# - 'home.admin/bonus.jam.sh install'
# - 'home.admin/bonus.mempool.sh'
# - 'home.admin/blitz.web.api.sh'
# - 'home.admin/blitz.web.ui.sh'
# - 'home.admin/blitz.display.sh'
# - 'ci/amd64/**'
#pull_request:
# branches: [ "dev", "v1.8", "v1.9" ]
# paths:
# - 'build_sdcard.sh'
# - 'home.admin/bitcoin.install.sh'
# - 'home.admin/lnd.install.sh'
# - 'home.admin/cl.install.sh'
# - 'home.admin/cl-plugin.cln-grpc.sh'
# - 'home.admin/tor.install.sh'
# - 'home.admin/blitz.i2pd.sh'
# - 'home.admin/blitz.web.sh'
# - 'home.admin/bonus.nodejs.sh'
# - 'home.admin/bonus.rtl.sh'
# - 'home.admin/bonus.btcpayserver.sh'
# - 'home.admin/bonus.thunderhub.sh'
# - 'home.admin/bonus.jam.sh install'
# - 'home.admin/bonus.mempool.sh'
# - 'home.admin/blitz.web.api.sh'
# - 'home.admin/blitz.web.ui.sh'
# - 'home.admin/blitz.display.sh'
# - 'ci/amd64/**'
jobs:
amd64-image-build:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- name: Set values
run: |
echo "BUILD_DATE=$(date +"%Y-%m-%d")" >> $GITHUB_ENV
echo "BUILD_VERSION=$(git describe --always --tags)" >> $GITHUB_ENV
- name: Hello RaspiBlitz
run: echo "Building the raspiblitz-amd64-debian-image-${{env.BUILD_DATE}}-${{env.BUILD_VERSION}} at "
- name: Run the build script
run: |
cd ci/amd64
bash packer.build.amd64-debian.sh fatpack $GITHUB_ACTOR $GITHUB_HEAD_REF
- name: Compute checksum of the raw image
run: |
cd ci/amd64/builds/raspiblitz-amd64-debian-fatpack-qemu/
sha256sum raspiblitz-amd64-debian-fatpack.qcow2 > raspiblitz-amd64-debian-fatpack.qcow2.sha256
- name: Compress image
run: |
cd ci/amd64/builds/raspiblitz-amd64-debian-fatpack-qemu/
gzip -v9 raspiblitz-amd64-debian-fatpack.qcow2
- name: Compute checksum of the compressed image
run: |
cd ci/amd64/builds/raspiblitz-amd64-debian-fatpack-qemu/
sha256sum raspiblitz-amd64-debian-fatpack.qcow2.gz > raspiblitz-amd64-debian-fatpack.qcow2.gz.sha256
- name: Upload the image and checksums
uses: actions/upload-artifact@v3
with:
name: raspiblitz-amd64-image-${{env.BUILD_DATE}}-${{env.BUILD_VERSION}}
path: |
${{github.workspace}}/ci/amd64/builds/raspiblitz-amd64-debian-fatpack-qemu/raspiblitz-amd64-debian-fatpack.qcow2.sha256
${{github.workspace}}/ci/amd64/builds/raspiblitz-amd64-debian-fatpack-qemu/raspiblitz-amd64-debian-fatpack.qcow2.gz
${{github.workspace}}/ci/amd64/builds/raspiblitz-amd64-debian-fatpack-qemu/raspiblitz-amd64-debian-fatpack.qcow2.gz.sha256

67
.github/workflows/amd64-lean-image.yml vendored Normal file
View File

@ -0,0 +1,67 @@
name: amd64-lean-image-build
on:
workflow_dispatch:
push:
branches: [ "dev", "v1.8", "v1.9" ]
paths:
- 'build_sdcard.sh'
- 'home.admin/bitcoin.install.sh'
- 'home.admin/tor.install.sh'
- 'home.admin/blitz.i2pd.sh'
- 'home.admin/blitz.web.sh'
- 'home.admin/blitz.display.sh'
- 'ci/amd64/**'
pull_request:
branches: [ "dev", "v1.8", "v1.9" ]
paths:
- 'build_sdcard.sh'
- 'home.admin/bitcoin.install.sh'
- 'home.admin/tor.install.sh'
- 'home.admin/blitz.i2pd.sh'
- 'home.admin/blitz.web.sh'
- 'home.admin/blitz.display.sh'
- 'ci/amd64/**'
jobs:
amd64-image-build:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- name: Set values
run: |
echo "BUILD_DATE=$(date +"%Y-%m-%d")" >> $GITHUB_ENV
echo "BUILD_VERSION=$(git describe --always --tags)" >> $GITHUB_ENV
- name: Hello RaspiBlitz
run: echo "Building the raspiblitz-amd64-debian-image-${{env.BUILD_DATE}}-${{env.BUILD_VERSION}}"
- name: Run the build script
run: |
cd ci/amd64
bash packer.build.amd64-debian.sh lean $GITHUB_ACTOR $GITHUB_HEAD_REF
- name: Compute checksum of the raw image
run: |
cd ci/amd64/builds/raspiblitz-amd64-debian-lean-qemu
sha256sum raspiblitz-amd64-debian-lean.qcow2 > raspiblitz-amd64-debian-lean.qcow2.sha256
- name: Compress image
run: |
cd ci/amd64/builds/raspiblitz-amd64-debian-lean-qemu
gzip -v9 raspiblitz-amd64-debian-lean.qcow2
- name: Compute checksum of the compressed image
run: |
cd ci/amd64/builds/raspiblitz-amd64-debian-lean-qemu
sha256sum raspiblitz-amd64-debian-lean.qcow2.gz > raspiblitz-amd64-debian-lean.qcow2.gz.sha256
- name: Upload the image and checksums
uses: actions/upload-artifact@v3
with:
name: raspiblitz-amd64-image-${{env.BUILD_DATE}}-${{env.BUILD_VERSION}}
path: |
${{github.workspace}}/ci/amd64/builds/raspiblitz-amd64-debian-lean-qemu/raspiblitz-amd64-debian-lean.qcow2.sha256
${{github.workspace}}/ci/amd64/builds/raspiblitz-amd64-debian-lean-qemu/raspiblitz-amd64-debian-lean.qcow2.gz
${{github.workspace}}/ci/amd64/builds/raspiblitz-amd64-debian-lean-qemu/raspiblitz-amd64-debian-lean.qcow2.gz.sha256

View File

@ -0,0 +1,89 @@
name: arm64-rpi-fatpack-image-build
on:
workflow_dispatch:
#push:
# branches: [ "dev", "v1.8", "v1.9" ]
# paths:
# - 'build_sdcard.sh'
# - 'home.admin/bitcoin.install.sh'
# - 'home.admin/lnd.install.sh'
# - 'home.admin/cl.install.sh'
# - 'home.admin/cl-plugin.cln-grpc.sh'
# - 'home.admin/tor.install.sh'
# - 'home.admin/blitz.i2pd.sh'
# - 'home.admin/blitz.web.sh'
# - 'home.admin/bonus.nodejs.sh'
# - 'home.admin/bonus.rtl.sh'
# - 'home.admin/bonus.btcpayserver.sh'
# - 'home.admin/bonus.thunderhub.sh'
# - 'home.admin/bonus.jam.sh install'
# - 'home.admin/bonus.mempool.sh'
# - 'home.admin/blitz.web.api.sh'
# - 'home.admin/blitz.web.ui.sh'
# - 'home.admin/blitz.display.sh'
# - 'ci/arm64-rpi/**'
#pull_request:
# branches: [ "dev", "v1.8", "v1.9" ]
# paths:
# - 'build_sdcard.sh'
# - 'home.admin/bitcoin.install.sh'
# - 'home.admin/lnd.install.sh'
# - 'home.admin/cl.install.sh'
# - 'home.admin/cl-plugin.cln-grpc.sh'
# - 'home.admin/tor.install.sh'
# - 'home.admin/blitz.i2pd.sh'
# - 'home.admin/blitz.web.sh'
# - 'home.admin/bonus.nodejs.sh'
# - 'home.admin/bonus.rtl.sh'
# - 'home.admin/bonus.btcpayserver.sh'
# - 'home.admin/bonus.thunderhub.sh'
# - 'home.admin/bonus.jam.sh install'
# - 'home.admin/bonus.mempool.sh'
# - 'home.admin/blitz.web.api.sh'
# - 'home.admin/blitz.web.ui.sh'
# - 'home.admin/blitz.display.sh'
# - 'ci/arm64-rpi/**'
jobs:
arm64-rpi-image-build:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- name: Set values
run: |
echo "BUILD_DATE=$(date +"%Y-%m-%d")" >> $GITHUB_ENV
echo "BUILD_VERSION=$(git describe --always --tags)" >> $GITHUB_ENV
- name: Hello Raspiblitz
run: echo "Building the raspiblitz-arm64-rpi-fatpack-image-${{ env.BUILD_DATE }}-${{ env.BUILD_VERSION }}"
- name: Run the build script
run: |
cd ci/arm64-rpi
bash packer.build.arm64-rpi.sh fatpack $GITHUB_ACTOR $GITHUB_HEAD_REF
- name: Compute checksum of the raw image
run: |
cd ci/arm64-rpi
sha256sum raspiblitz-arm64-rpi-fatpack.img > raspiblitz-arm64-rpi-fatpack.img.sha256
- name: Compress image
run: |
cd ci/arm64-rpi
gzip -v9 raspiblitz-arm64-rpi-fatpack.img
- name: Compute checksum of the compressed image
run: |
cd ci/arm64-rpi
sha256sum raspiblitz-arm64-rpi-fatpack.img.gz > raspiblitz-arm64-rpi-fatpack.img.gz.sha256
- name: Upload the image and checksums
uses: actions/upload-artifact@v3
with:
name: raspiblitz-arm64-fatpack-rpi-image-${{ env.BUILD_DATE }}-${{ env.BUILD_VERSION }}
path: |
${{ github.workspace }}/ci/arm64-rpi/raspiblitz-arm64-rpi-fatpack.img.sha256
${{ github.workspace }}/ci/arm64-rpi/raspiblitz-arm64-rpi-fatpack.img.gz
${{ github.workspace }}/ci/arm64-rpi/raspiblitz-arm64-rpi-fatpack.img.gz.sha256

View File

@ -0,0 +1,67 @@
name: arm64-rpi-lean-image-build
on:
workflow_dispatch:
push:
branches: [ "dev", "v1.8", "v1.9" ]
paths:
- 'build_sdcard.sh'
- 'home.admin/bitcoin.install.sh'
- 'home.admin/tor.install.sh'
- 'home.admin/blitz.i2pd.sh'
- 'home.admin/blitz.web.sh'
- 'home.admin/blitz.display.sh'
- 'ci/arm64-rpi/**'
pull_request:
branches: [ "dev", "v1.8", "v1.9" ]
paths:
- 'build_sdcard.sh'
- 'home.admin/bitcoin.install.sh'
- 'home.admin/tor.install.sh'
- 'home.admin/blitz.i2pd.sh'
- 'home.admin/blitz.web.sh'
- 'home.admin/blitz.display.sh'
- 'ci/arm64-rpi/**'
jobs:
arm64-rpi-image-build:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- name: Set values
run: |
echo "BUILD_DATE=$(date +"%Y-%m-%d")" >> $GITHUB_ENV
echo "BUILD_VERSION=$(git describe --always --tags)" >> $GITHUB_ENV
- name: Hello Raspiblitz
run: echo "Building the raspiblitz-arm64-rpi-lean-image-${{ env.BUILD_DATE }}-${{ env.BUILD_VERSION }}"
- name: Run the build script
run: |
cd ci/arm64-rpi
bash packer.build.arm64-rpi.sh lean $GITHUB_ACTOR $GITHUB_HEAD_REF
- name: Compute checksum of the raw image
run: |
cd ci/arm64-rpi
sha256sum raspiblitz-arm64-rpi-lean.img > raspiblitz-arm64-rpi-lean.img.sha256
- name: Compress image
run: |
cd ci/arm64-rpi
gzip -v9 raspiblitz-arm64-rpi-lean.img
- name: Compute checksum of the compressed image
run: |
cd ci/arm64-rpi
sha256sum raspiblitz-arm64-rpi-lean.img.gz > raspiblitz-arm64-rpi-lean.img.gz.sha256
- name: Upload the image and checksums
uses: actions/upload-artifact@v3
with:
name: raspiblitz-arm64-rpi-image-${{ env.BUILD_DATE }}-${{ env.BUILD_VERSION }}
path: |
${{ github.workspace }}/ci/arm64-rpi/raspiblitz-arm64-rpi-lean.img.sha256
${{ github.workspace }}/ci/arm64-rpi/raspiblitz-arm64-rpi-lean.img.gz
${{ github.workspace }}/ci/arm64-rpi/raspiblitz-arm64-rpi-lean.img.gz.sha256

4
.gitignore vendored
View File

@ -6,3 +6,7 @@ __pycache__
lightning_pb2.pyc
lightning_pb2_grpc.pyc
/.vagrant/
ci/amd64/builds
ci/arm64-rpi/raspiblitz-arm64-rpi*
ci/arm64-rpi/.packer*
ci/arm64-rpi/packer-builder-arm

View File

@ -2,7 +2,8 @@
## What's new in Version 1.9.0 of RaspiBlitz?
- New: CL Watchtower (The Eye of Satoshi) [details](https://github.com/talaia-labs/rust-teos/tree/master/watchtower-plugin)
- New: Automated disk image build for amd64 (VM, laptop, desktop, server) and arm64-rpi (Raspberry Pi) [details](https://github.com/rootzoll/raspiblitz/tree/dev/ci/README.md)
- New: CLN Watchtower (The Eye of Satoshi) [details](https://github.com/talaia-labs/rust-teos/tree/master/watchtower-plugin)
- New: LNDg v1.4.0 [details](https://github.com/cryptosharks131/lndg)
- New: Support of X708 UPS HAT [details](https://github.com/rootzoll/raspiblitz/pull/3087)
- New: BOS Telegram Bot Support (see OPTIONS on LND Balance of Satoshis menu entry)
@ -21,10 +22,9 @@
- Update: Channel Tools (chantools) v0.10.5 [details](https://github.com/guggero/chantools/releases/tag/v0.10.5)
- Update: JoinMarket v0.9.8 [details](https://github.com/JoinMarket-Org/joinmarket-clientserver/releases/tag/v0.9.8)
- Update: JoininBox v0.7.4 [details](https://github.com/openoms/joininbox/releases/tag/v0.7.3)
- Update: Electrum Server in Rust (electrs) v0.9.9 [details](https://github.com/romanz/electrs/blob/master/RELEASE-NOTES.md#099-jul-12-2022)
- Update: Balance of Satoshis 13.6.0 (BOS) [details](https://github.com/alexbosworth/balanceofsatoshis/blob/master/CHANGELOG.md#1360)
- Update: Circuitbreaker v0.3.2 [details](https://github.com/lightningequipment/circuitbreaker/blob/master/README.md)
- Fixed: SCB/Emergency-Backup to USB drive (now also with cln emergency file)
- Fixed: SCB/Emergency-Backup to USB drive (now also with CLN emergency.recover file)
- Info: Run RaspiBlitz on Proxmox [details](https://github.com/rootzoll/raspiblitz/tree/dev/alternative.platforms/Proxmox)
- Info: IP2Tor unavailable & deactivated in SSH menus [details](https://github.com/rootzoll/raspiblitz/issues/3417#issuecomment-1310303480)
- Info: 32GB sdcard is now enforced (after being recommended since v1.5)

83
Makefile Normal file
View File

@ -0,0 +1,83 @@
SHELL = /bin/bash
GITHUB_ACTOR = $(shell git remote -v | grep origin | head -1 | cut -d/ -f4)
GITHUB_HEAD_REF = $(shell git rev-parse --abbrev-ref HEAD)
amd64-lean-image:
# Run the build script
cd ci/amd64 && \
bash packer.build.amd64-debian.sh lean $(GITHUB_ACTOR) $(GITHUB_HEAD_REF) 0
# Compute the checksum of the qemu image
cd ci/amd64/builds/raspiblitz-amd64-debian-lean-qemu && \
sha256sum raspiblitz-amd64-debian-lean.qcow2 > raspiblitz-amd64-debian-lean.qcow2.sha256
# Compress the image
cd ci/amd64/builds/raspiblitz-amd64-debian-lean-qemu && \
gzip -v9 raspiblitz-amd64-debian-lean.qcow2
# Compute the checksum of the compressed image
cd ci/amd64/builds/raspiblitz-amd64-debian-lean-qemu && \
sha256sum raspiblitz-amd64-debian-lean.qcow2.gz > raspiblitz-amd64-debian-lean.qcow2.gz.sha256
# List the generated files
ls -lah ci/amd64/builds/raspiblitz-amd64-debian-lean-qemu/raspiblitz-amd64-debian-lean.qcow2.*
amd64-fatpack-image:
# Run the build script
cd ci/amd64 && \
bash packer.build.amd64-debian.sh fatpack $(GITHUB_ACTOR) $(GITHUB_HEAD_REF)
# Compute the checksum of the qemu image
cd ci/amd64/builds/raspiblitz-amd64-debian-fatpack-qemu && \
sha256sum raspiblitz-amd64-debian-fatpack.qcow2 > raspiblitz-amd64-debian-fatpack.qcow2.sha256
# Compress the image
cd ci/amd64/builds/raspiblitz-amd64-debian-fatpack-qemu && \
gzip -v9 raspiblitz-amd64-debian-fatpack.qcow2
# Compute the checksum of the compressed image
cd ci/amd64/builds/raspiblitz-amd64-debian-fatpack-qemu && \
sha256sum raspiblitz-amd64-debian-fatpack.qcow2.gz > raspiblitz-amd64-debian-fatpack.qcow2.gz.sha256
# List the generated files
ls -lah ci/amd64/builds/raspiblitz-amd64-debian-lean-qemu/raspiblitz-amd64-debian-fatpack.qcow2.*
arm64-rpi-lean-image:
# Run the build script
cd ci/arm64-rpi && \
bash packer.build.arm64-rpi.local.sh lean $(GITHUB_ACTOR) $(GITHUB_HEAD_REF)
# Compute the checksum of the raw image
cd ci/arm64-rpi/packer-builder-arm && \
sha256sum raspiblitz-arm64-rpi-lean.img > raspiblitz-arm64-rpi-lean.img.sha256
# Compress the image
cd ci/arm64-rpi/packer-builder-arm && \
gzip -v9 raspiblitz-arm64-rpi-lean.img
# Compute the checksum of the compressed image
cd ci/arm64-rpi/packer-builder-arm && \
sha256sum raspiblitz-arm64-rpi-lean.img.gz > raspiblitz-arm64-rpi-lean.img.gz.sha256
# List the generated files
ls -lah ci/arm64-rpi/packer-builder-arm/raspiblitz-arm64-rpi-lean.img.*
arm64-rpi-fatpack-image:
# Run the build script
cd ci/arm64-rpi && \
bash packer.build.arm64-rpi.local.sh fatpack $(GITHUB_ACTOR) $(GITHUB_HEAD_REF)
# Compute the checksum of the raw image
cd ci/arm64-rpi/packer-builder-arm && \
sha256sum raspiblitz-arm64-rpi-fatpack.img > raspiblitz-arm64-rpi-fatpack.img.sha256
# Compress the image
cd ci/arm64-rpi/packer-builder-arm && \
gzip -v9 raspiblitz-arm64-rpi-fatpack.img
# Compute the checksum of the compressed image
cd ci/arm64-rpi/packer-builder-arm && \
sha256sum raspiblitz-arm64-rpi-fatpack.img.gz > raspiblitz-arm64-rpi-fatpack.img.gz.sha256
# List the generated files
ls -lah ci/arm64-rpi/packer-builder-arm/raspiblitz-arm64-rpi-fatpack.img.*

View File

@ -4,11 +4,7 @@
- [Recommended specs](#recommended-specs)
- [amd64 image](#amd64-image)
- [Requirements](#requirements)
- [Download](#download)
- [Verify](#verify)
- [Write the image to the OS disk](#write-the-image-to-the-os-disk)
- [Extend the partition](#extend-the-partition)
- [Start the Raspiblitz setup](#start-the-raspiblitz-setup)
- [Automated builds](#automated-builds)
- [Virtual Machine](#virtual-machine)
- [Create the base image](#create-the-base-image)
- [Building the Raspiblitz scripts](#building-the-raspiblitz-scripts)
@ -17,7 +13,7 @@
- [Armbian](#armbian)
- [Ubuntu](#ubuntu)
- [Python upgrade](#python-upgrade)
- [Create an image release for amd64](#create-an-image-release-for-amd64)
- [Manual image release for amd64](#manual-image-release-for-amd64)
- [Requirements:](#requirements-1)
- [Create an NTFS formatted USB Stick / USB disk](#create-an-ntfs-formatted-usb-stick--usb-disk)
- [Boot Ubuntu Live from USB](#boot-ubuntu-live-from-usb)
@ -30,10 +26,9 @@
- [Start Tails](#start-tails)
- [Import the signing keys](#import-the-signing-keys)
- [Prepare the disk](#prepare-the-disk)
- [Verify the downloaded image](#verify-the-downloaded-image)
- [Linux instructions](#linux-instructions)
- [Create a torrent](#create-a-torrent)
- [Switch off sleep, suspend and hibernation](#switch-off-sleep-suspend-and-hibernation)
- [Verify the downloaded image](#verify-the-downloaded-image)
- [Linux instructions](#linux-instructions)
- [Create a torrent](#create-a-torrent)
## Minimum requirements
* ARMv8 or x86 processor (64 bit)
@ -51,7 +46,6 @@ Specifications of the tested hardware: [hw_comparison.md](hw_comparison.md)
All testers are welcome. Open an issue for your specific board to collaborate and share your experience.
## amd64 image
### Requirements
* amd64 Laptop, Desktop or Server connected to the internet via a LAN cable
@ -61,35 +55,8 @@ All testers are welcome. Open an issue for your specific board to collaborate an
* if the laptop has an optical drive an [Optical Drive Bay Caddy / adapter](https://www.amazon.co.uk/dp/B07SHSCVC7/) 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
### Download
* raspiblitz-amd64-v1.7.2-2022-04-03
* manually created with the [process described below](#Create-an-image-release-for-amd64) from the [`dev` branch](https://github.com/rootzoll/raspiblitz/tree/dev) at [43c7384](https://github.com/rootzoll/raspiblitz/tree/43c7384cb70523c57990e0c409d51cfd7b818a10)
* Torrent [file](/home.admin/assets/raspiblitz-amd64-v1.7.2-2022-04-03.torrent) and [magnet link](/home.admin/assets/raspiblitz-amd64-v1.7.2-2022-04-03.magnet)
* Direct downloads:
* https://mega.nz/folder/AlsC0A4L#mTPOke2OLJIGU4iMyAqwBw
* https://keybase.pub/oms/images/raspiblitz-amd64-v1.7.2-2022-04-03
```
# download from keybase using the command line
mkdir raspiblitz-amd64-v1.7.2-2022-04-03
cd raspiblitz-amd64-v1.7.2-2022-04-03
wget -c https://oms.keybase.pub/images/raspiblitz-amd64-v1.7.2-2022-04-03/raspiblitz-amd64-v1.7.2-2022-04-03.img.gz
wget -c https://oms.keybase.pub/images/raspiblitz-amd64-v1.7.2-2022-04-03/raspiblitz-amd64-v1.7.2-2022-04-03.img.gz.sha256
wget -c https://oms.keybase.pub/images/raspiblitz-amd64-v1.7.2-2022-04-03/raspiblitz-amd64-v1.7.2-2022-04-03.img.gz.sha256.asc
```
### [Verify](#Verify-the-downloaded-image)
### Write the image to the OS disk
* On a separate computer: write the image to the USB connected OSdisk or SDcard with [Balena Etcher](https://www.balena.io/etcher/)
* On the same computer: boot an Ubuntu Live from USB with which the image can be downloaded, verified and flashed on an internal or USB connected OS disk
### Extend the partition
* start Disks or any partition manager and extend the partition to the full size of the disk on the OS disk (just flashed)
### Start the Raspiblitz setup
* Assemble and start the computer.
* Log in with admin and open a terminal on the local desktop or log in with ssh (username `admin` password: `raspiblitz`)
* Continue the setup as described in the [main readme](https://github.com/rootzoll/raspiblitz#setup-process-detailed-documentation)
### Automated builds
* find the download links or build locally with the instructions in: [/ci/README.md](/ci/README.md)
## Virtual Machine
@ -233,7 +200,7 @@ Continue with building the SDcard: https://github.com/rootzoll/raspiblitz#build-
python3 --version
```
## Create an image release for amd64
## Manual image release for amd64
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
@ -386,8 +353,8 @@ Work notes partially based on: https://github.com/rootzoll/raspiblitz/blob/v1.7/
* 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
## Verify the downloaded image
### Linux instructions
### Verify the downloaded image
#### Linux instructions
* Open a terminal in the directory with the downloaded files
```
raspiblitz-amd64-vX.X.X-YEAR-MONTH-DAY.img.gz
@ -416,7 +383,7 @@ Work notes partially based on: https://github.com/rootzoll/raspiblitz/blob/v1.7/
# raspiblitz-amd64-vX.X.X-YEAR-MONTH-DAY.img.gz: OK
```
## Create a torrent
### Create a torrent
* 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:
```
@ -449,8 +416,3 @@ Work notes partially based on: https://github.com/rootzoll/raspiblitz/blob/v1.7/
# Compare the sha256 hash to the hash of the image file (Look for the output 'OK'):
shasum -c *.sha256
```
## Switch off sleep, suspend and hibernation
* Run in the terminal:
```
sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
```

View File

@ -223,7 +223,7 @@ esac
# AUTO-DETECTION: OPERATINGSYSTEM
# ---------------------------------------
if [ $(cat /etc/os-release 2>/dev/null | grep -c 'Debian') -gt 0 ]; then
if [ $(uname -n | grep -c 'raspberrypi') -gt 0 ] && [ "${cpu}" = aarch64 ]; then
if [ -f /etc/apt/sources.list.d/raspi.list ] && [ "${cpu}" = aarch64 ]; then
# default image for RaspberryPi
baseimage="raspios_arm64"
elif [ $(uname -n | grep -c 'rpi') -gt 0 ] && [ "${cpu}" = aarch64 ]; then
@ -279,7 +279,7 @@ if [ "${baseimage}" = "raspios_arm64" ]||[ "${baseimage}" = "debian_rpi64" ]||[
fi
echo "*** Remove unnecessary packages ***"
sudo apt remove --purge -y libreoffice* oracle-java* chromium-browser nuscratch scratch sonic-pi plymouth python2 vlc cups
sudo apt remove --purge -y libreoffice* oracle-java* chromium-browser nuscratch scratch sonic-pi plymouth python2 vlc* cups
sudo apt clean -y
sudo apt autoremove -y
@ -313,7 +313,9 @@ general_utils="policykit-1 htop git curl bash-completion vim jq dphys-swapfile b
python_dependencies="python3-venv python3-dev python3-wheel python3-jinja2 python3-pip python3-mako"
server_utils="rsync net-tools xxd netcat openssh-client openssh-sftp-server sshpass psmisc ufw sqlite3"
[ "${baseimage}" = "armbian" ] && armbian_dependencies="armbian-config" # add armbian-config
apt_install ${general_utils} ${python_dependencies} ${server_utils} ${armbian_dependencies}
[ "${architecture}" = "amd64" ] && amd64_dependencies="network-manager" # add amd64 dependency
apt_install ${general_utils} ${python_dependencies} ${server_utils} ${armbian_dependencies} ${amd64_dependencies}
sudo apt clean -y
sudo apt autoremove -y
@ -775,7 +777,7 @@ if ${fatpack}; then
sudo /home/admin/config.scripts/bonus.nodejs.sh on || exit 1
echo "* Optional Packages (may be needed for extended features)"
apt_install qrencode secure-delete fbi ssmtp unclutter xterm python3-pyqt5 xfonts-terminus apache2-utils nginx python3-jinja2 socat libatlas-base-dev hexyl autossh
apt_install qrencode secure-delete fbi msmtp unclutter xterm python3-pyqt5 xfonts-terminus apache2-utils nginx python3-jinja2 socat libatlas-base-dev hexyl autossh
echo "* Adding LND ..."
/home/admin/config.scripts/lnd.install.sh install || exit 1
@ -792,20 +794,20 @@ if ${fatpack}; then
# Fallback Nodes List from Bitcoin Core
sudo -u admin curl https://raw.githubusercontent.com/bitcoin/bitcoin/master/contrib/seeds/nodes_main.txt -o /home/admin/fallback.bitcoin.nodes
echo "* Adding Code&Compile for WEBUI-APP: RTL"
/home/admin/config.scripts/bonus.rtl.sh install || exit 1
echo "* Adding Code&Compile for WEBUI-APP: BTCPAYSERVER"
/home/admin/config.scripts/bonus.btcpayserver.sh install || exit 1
echo "* Adding Code&Compile for WEBUI-APP: MEMPOOL"
/home/admin/config.scripts/bonus.mempool.sh install || exit 1
echo "* Adding Code&Compile for WEBUI-APP: THUNDERHUB"
/home/admin/config.scripts/bonus.thunderhub.sh install || exit 1
echo "* Adding Code&Compile for WEBUI-APP: BTC RPC EXPLORER"
/home/admin/config.scripts/bonus.btc-rpc-explorer.sh install || exit 1
echo "* Adding Code&Compile for WEBUI-APP: LNBITS"
/home/admin/config.scripts/bonus.lnbits.sh install || exit 1
echo "* Adding Code&Compile for WEBUI-APP: JAM"
/home/admin/config.scripts/bonus.jam.sh install || exit 1
echo "* Adding Code&Compile for WEBUI-APP: BTCPAYSERVER"
/home/admin/config.scripts/bonus.btcpayserver.sh install || exit 1
echo "* Adding Code&Compile for WEBUI-APP: RTL"
/home/admin/config.scripts/bonus.rtl.sh install || exit 1
echo "* Adding Code&Compile for WEBUI-APP: THUNDERHUB"
/home/admin/config.scripts/bonus.thunderhub.sh install || exit 1
echo "* Adding Code&Compile for WEBUI-APP: BTC RPC EXPLORER"
/home/admin/config.scripts/bonus.btc-rpc-explorer.sh install || exit 1
echo "* Adding Code&Compile for WEBUI-APP: MEMPOOL"
/home/admin/config.scripts/bonus.mempool.sh install || exit 1
echo "* Adding Raspiblitz API ..."
sudo /home/admin/config.scripts/blitz.web.api.sh on "${defaultAPIuser}" "${defaultAPIrepo}" "blitz-${branch}" || exit 1

202
ci/README.md Normal file
View File

@ -0,0 +1,202 @@
<!-- omit in toc -->
# Automated builds
* The images are built using the dev branch.
* The lean image has no Gnome desktop or WebUI installed.
* Issue: https://github.com/rootzoll/raspiblitz/issues/3053
* The templates are made using: https://github.com/chef/bento
- [Local build](#local-build)
- [Generate an arm64-rpi image](#generate-an-arm64-rpi-image)
- [Generate an amd64 image](#generate-an-amd64-image)
- [Images generated in github actions](#images-generated-in-github-actions)
- [Write the image to a disk connected with USB](#write-the-image-to-a-disk-connected-with-usb)
- [Convert the qcow2 volume to a raw disk image](#convert-the-qcow2-volume-to-a-raw-disk-image)
- [Write to a disk connected with USB with Balena Etcher or `dd`](#write-to-a-disk-connected-with-usb-with-balena-etcher-or-dd)
- [Extend the partition on the new disk (optional)](#extend-the-partition-on-the-new-disk-optional)
- [The first boot](#the-first-boot)
- [fatpack image](#fatpack-image)
- [lean image](#lean-image)
- [Add Gnome desktop (optional)](#add-gnome-desktop-optional)
- [Add wifi](#add-wifi)
- [Add wifi driver (optional)](#add-wifi-driver-optional)
- [Workflow notes](#workflow-notes)
- [Packer .json settings:](#packer-json-settings)
- [VNC](#vnc)
- [Flashing](#flashing)
## Local build
with the [Makefile](https://github.com/rootzoll/raspiblitz/blob/dev/Makefile)
* needs ~20 GB free space
* tested on:
* Ubuntu Live (jammy)
* Debian Bullseye Desktop
* Preparation:
```
# change to a mountpoint with sufficient space (check with 'df -h')
cd /var/log
# switch to root
sudo su
# install git and make
apt update && apt install -y git make
# download the repo (or your fork)
git clone https://github.com/rootzoll/raspiblitz
cd raspiblitz
# checkout the desired branch
git checkout dev
```
### Generate an arm64-rpi image
* The workflow locally and in github actions generates a .img raw format image for the Raspberry Pi.
```
make arm-rpi-lean-image
```
* find the image and sh256 hashes in the `ci/arm64-rpi/packer-builder-arm` directory
* the .img.gz file can be written to an SDcard directly with Balena Etcher
### Generate an amd64 image
The workflow locally and in github actions generates a .qcow2 format amd64 image.
* Tested with
* libvirt / virsh / virt-manager (https://virt-manager.org/)
* written to disk and booted with legacy boot (non-UEFI)
```
make amd64-lean-image
```
* find the compressed .qcow2 image and sh256 hashes in the `ci/amd64/builds` directory
## Images generated in github actions
* Find the images in the green runs in github actions at:
https://github.com/rootzoll/raspiblitz/actions
```
# unzip to the same directory
unzip raspiblitz-amd64-image-YEAR-MM-DD-COMMITHASH.zip
```
## Write the image to a disk connected with USB
identify the connected disk with `lsblk` eg `/dev/sdd`
### Convert the qcow2 volume to a raw disk image
* the raw image is 33.5 GB
```
# unzip
gzip -dkv raspiblitz-amd64-debian-11.5-lean.qcow2.gz
# convert
qemu-img convert raspiblitz-amd64-debian-11.5-lean.qcow2 raspiblitz-amd64-debian-11.5-lean.img
```
### Write to a disk connected with USB with Balena Etcher or `dd`
* [Balena Etcher](https://www.balena.io/etcher/) to write the .img to disk
* dd to write the .img to disk
```
# identify partitions
lsblk
# write to disk
sudo dd if=./raspiblitz-amd64-debian-11.5-lean.img of=/dev/sde bs=4M status=progress
```
* qemu-image dd to write the .qcow2 directly to disk
```
sudo apt install -y qemu-utils
sudo qemu-img dd if=./raspiblitz-amd64-debian-11.5-lean.qcow2 of=/dev/sde bs=4M
```
### Extend the partition on the new disk (optional)
* Use Disks to resize the Extended Partition to the full size of the disk
* To extend the LVM:
```
# identify the USB connected disk
lsblk
df -h
# extend the lvm to the full free space and resize the filesystem
sudo lvextend -r -l +100%FREE /dev/mapper/raspiblitz--amd74--debian--11--vg-root
# alternatively download the script
git clone https://git.scs.carleton.ca/git/extend-lvm.git
# run with the disk as the parameter (sde for example)
sudo bash extend-lvm/extend-lvm.sh /dev/sde
```
## The first boot
### fatpack image
* log in on screen:
* username: `admin`
* password: `raspiblitz`
* start a terminal for guidance
* alternatively open a browser and go to:
* http://localhost
* can also open the WebUI on another computer
* Find the the RaspiBlitz_IP in your router dashboard, in the terminal prompt or with `hostname -I`
* open: http://RaspiBlitz_IP
### lean image
* press any key to get to a login prompt after the splash screen
* username: `admin`
* password: `raspiblitz`
#### Add Gnome desktop (optional)
* Connect to the internet (easiest to plug in a LAN cable - use a USB - LAN adapter if have no port)
```
apt install gnome
systemctl start gdm
```
## Add wifi
* if the wifi driver is included in the FOSS Debian distro
* in the command line run the network manager interface to connect:
```
sudo nmtui
```
## Add wifi driver (optional)
* as in https://wiki.debian.org/iwlwifi
* add the component `non-free` after `deb http://deb.debian.org/debian bullseye main` in `/etc/apt/sources.list`
* install the wifi driver for the mentioned cards:
```
sudo apt update && sudo apt install firmware-iwlwifi
```
## Workflow notes
The github workflow files are the equivalent of the Makefile commands run locally.
The local repo owner (`GITHUB_ACTOR`) and branch (`GITHUB_HEAD_REF`) is picked up.
The build_sdcard.sh is downloaded from the source branch and built with the options pack=[lean|fatpack] to set fatpack=[0|1].
The github workflow is running the job in an ubuntu-22.04 image.
The amd64 image is built with running a qemu VM
* installs the base OS (Debian 11.5)
* connects with ssh and runs the scripts including the build_sdcard.sh
The arm64-rpi image genenaration runs in Docker in github actions and without Docker locally.
* the base image (RasberryOS) is started in the qemu VM
* packer runs the build_sdcard.sh directly in the VM
After the image is built (and there is no exit with errors) the next steps are:
* compute checksum of the qemu/raw image
* compress the image with gzip
* compute checksum of the compressed image
* (in github actions: upload the artifacts in one .zip file)
### Packer .json settings:
* `disk_size` - the size op the raw image. The .qcow2 file is compressed.
* `template` - image filename
* `output_directory` - directory under builds where the image will be placed
* the `pi` user is given passwordless sudo access and used for the image setup
* use `file_checksum` instead of `file_checksum_url`. The image must be downloaded and verified with PGP manually to fill the field:
```
# image
wget https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-09-26/2022-09-22-raspios-bullseye-arm64.img.xz
# signature
wget https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-09-26/2022-09-22-raspios-bullseye-arm64.img.xz.sig
# hash
wget https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-09-26/2022-09-22-raspios-bullseye-arm64.img.xz.sha256
curl https://www.raspberrypi.org/raspberrypi_downloads.gpg.key | gpg --import
sha256sum -c 2022-09-22-raspios-bullseye-arm64.img.xz.sha256 && \
gpg --verify 2022-09-22-raspios-bullseye-arm64.img.xz.sig
cat 2022-09-22-raspios-bullseye-arm64.img.xz.sha256
```
### VNC
* can follow the setup locally in VNC with the port stated in the first part of the logs eg: `Found available VNC port: 5952 on IP: 127.0.0.1`
### Flashing
* using `qemu-img dd bs=4M if=raspiblitz-amd64-debian-11.5-lean.qcow2 of=/dev/sdd` changed the UUID so it won't boot without editing GRUB

20
ci/amd64/_common/sshd.sh Normal file
View File

@ -0,0 +1,20 @@
#!/bin/sh -eux
SSHD_CONFIG="/etc/ssh/sshd_config"
# ensure that there is a trailing newline before attempting to concatenate
sed -i -e '$a\' "$SSHD_CONFIG"
USEDNS="UseDNS no"
if grep -q -E "^[[:space:]]*UseDNS" "$SSHD_CONFIG"; then
sed -i "s/^\s*UseDNS.*/${USEDNS}/" "$SSHD_CONFIG"
else
echo "$USEDNS" >>"$SSHD_CONFIG"
fi
GSSAPI="GSSAPIAuthentication no"
if grep -q -E "^[[:space:]]*GSSAPIAuthentication" "$SSHD_CONFIG"; then
sed -i "s/^\s*GSSAPIAuthentication.*/${GSSAPI}/" "$SSHD_CONFIG"
else
echo "$GSSAPI" >>"$SSHD_CONFIG"
fi

View File

@ -0,0 +1,81 @@
{
"variables": {
"box_basename": "debian",
"build_directory": "../builds",
"build_timestamp": "{{isotime \"20060102150405\"}}",
"pack": "{{user `pack`}}",
"cpus": "4",
"disk_size": "30000",
"git_revision": "__unknown_git_revision__",
"guest_additions_url": "",
"headless": "false",
"http_directory": "{{template_dir}}/http",
"http_proxy": "{{env `http_proxy`}}",
"https_proxy": "{{env `https_proxy`}}",
"iso_checksum": "e482910626b30f9a7de9b0cc142c3d4a079fbfa96110083be1d0b473671ce08d",
"iso_name": "debian-11.6.0-amd64-netinst.iso",
"memory": "4096",
"mirror": "http://cdimage.debian.org/cdimage/release",
"mirror_directory": "current/amd64/iso-cd",
"name": "debian",
"no_proxy": "{{env `no_proxy`}}",
"preseed_path": "debian-9/preseed.cfg",
"qemu_display": "none",
"qemu_bios": "bios-256k.bin",
"template": "raspiblitz-amd64-debian-{{user `pack`}}",
"boot_command": "<esc><wait>install <wait> preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/{{user `preseed_path`}} <wait>debian-installer=en_US.UTF-8 <wait>auto <wait>locale=en_US.UTF-8 <wait>kbd-chooser/method=us <wait>keyboard-configuration/xkb-keymap=us <wait>netcfg/get_hostname={{ .Name }} <wait>netcfg/get_domain=vagrantup.com <wait>fb=false <wait>debconf/frontend=noninteractive <wait>console-setup/ask_detect=false <wait>console-keymaps-at/keymap=us <wait>grub-installer/bootdev=default <wait><enter><wait>",
"version": "TIMESTAMP"
},
"builders": [
{
"boot_command": "{{user `boot_command`}}",
"boot_wait": "5s",
"cpus": "{{ user `cpus` }}",
"disk_size": "{{user `disk_size`}}",
"headless": "{{ user `headless` }}",
"http_directory": "{{user `http_directory`}}",
"iso_checksum": "{{user `iso_checksum`}}",
"iso_url": "{{user `mirror`}}/{{user `mirror_directory`}}/{{user `iso_name`}}",
"memory": "{{ user `memory` }}",
"output_directory": "{{ user `build_directory` }}/{{user `template`}}-qemu",
"shutdown_command": "echo 'raspiblitz' | sudo /sbin/shutdown -hP now",
"ssh_password": "raspiblitz",
"ssh_port": 22,
"ssh_timeout": "10000s",
"ssh_username": "pi",
"type": "qemu",
"format": "qcow2",
"vm_name": "{{ user `template` }}.qcow2",
"qemuargs": [
[ "-m", "{{ user `memory` }}" ],
[ "-bios", "{{ user `qemu_bios` }}" ],
[ "-display", "{{ user `qemu_display` }}" ]
]
}
],
"provisioners": [
{
"type": "shell",
"environment_vars": [
"HOME_DIR=/home/pi",
"http_proxy={{user `http_proxy`}}",
"https_proxy={{user `https_proxy`}}",
"no_proxy={{user `no_proxy`}}",
"github_user={{user `github_user`}}",
"branch={{user `branch`}}",
"pack={{user `pack`}}"
],
"execute_command": "echo 'raspiblitz' | {{.Vars}} sudo -S -E sh -eux '{{.Path}}'",
"expect_disconnect": true,
"scripts": [
"{{template_dir}}/scripts/update.sh",
"{{template_dir}}/../_common/sshd.sh",
"{{template_dir}}/scripts/networking.sh",
"{{template_dir}}/scripts/sudoers.sh",
"{{template_dir}}/scripts/systemd.sh",
"{{template_dir}}/scripts/raspiblitz.sh",
"{{template_dir}}/scripts/cleanup.sh"
]
}
]
}

View File

@ -0,0 +1,47 @@
choose-mirror-bin mirror/http/proxy string
d-i apt-setup/use_mirror boolean true
d-i base-installer/kernel/override-image string linux-server
d-i clock-setup/utc boolean true
d-i clock-setup/utc-auto boolean true
d-i finish-install/reboot_in_progress note
d-i grub-installer/only_debian boolean true
d-i grub-installer/with_other_os boolean true
d-i keymap select us
d-i mirror/country string manual
d-i mirror/http/directory string /debian
d-i mirror/http/hostname string httpredir.debian.org
d-i mirror/http/proxy string
d-i partman-auto-lvm/guided_size string max
d-i partman-auto/choose_recipe select atomic
d-i partman-auto/method string lvm
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true
d-i partman-lvm/device_remove_lvm boolean true
d-i partman/choose_partition select finish
d-i partman/confirm boolean true
d-i partman/confirm_nooverwrite boolean true
d-i partman/confirm_write_new_label boolean true
d-i passwd/root-login boolean false
d-i passwd/root-password-again password raspiblitz
d-i passwd/root-password password raspiblitz
d-i passwd/user-fullname string pi
d-i passwd/user-uid string 1000
d-i passwd/user-password password raspiblitz
d-i passwd/user-password-again password raspiblitz
d-i passwd/username string pi
d-i pkgsel/include string sudo bzip2 acpid cryptsetup zlib1g-dev wget curl dkms fuse make nfs-common net-tools cifs-utils rsync
d-i pkgsel/install-language-support boolean false
d-i pkgsel/update-policy select none
d-i pkgsel/upgrade select full-upgrade
# Prevent packaged version of VirtualBox Guest Additions being installed:
d-i preseed/early_command string sed -i \
'/in-target/idiscover(){/sbin/discover|grep -v VirtualBox;}' \
/usr/lib/pre-pkgsel.d/20install-hwpackages
d-i time/zone string UTC
d-i user-setup/allow-password-weak boolean true
d-i user-setup/encrypt-home boolean false
d-i preseed/late_command string sed -i '/^deb cdrom:/s/^/#/' /target/etc/apt/sources.list
apt-cdrom-setup apt-setup/cdrom/set-first boolean false
apt-mirror-setup apt-setup/use_mirror boolean true
popularity-contest popularity-contest/participate boolean false
tasksel tasksel/first multiselect standard, ssh-server

View File

@ -0,0 +1,55 @@
#!/bin/sh -eux
echo "remove linux-headers"
dpkg --list \
| awk '{ print $2 }' \
| grep 'linux-headers' \
| xargs apt-get -y purge;
echo "remove specific Linux kernels, such as linux-image-4.9.0-13-amd64 but keeps the current kernel and does not touch the virtual packages"
dpkg --list \
| awk '{ print $2 }' \
| grep 'linux-image-[234].*' \
| grep -v `uname -r` \
| xargs apt-get -y purge;
echo "remove linux-source package"
dpkg --list \
| awk '{ print $2 }' \
| grep linux-source \
| xargs apt-get -y purge;
echo "remove obsolete networking packages"
apt-get -y purge ppp pppconfig pppoeconf;
echo "remove popularity-contest package"
apt-get -y purge popularity-contest;
echo "remove installation-report package"
apt-get -y purge installation-report;
echo "autoremoving packages and cleaning apt data"
apt-get -y autoremove;
apt-get -y clean;
echo "remove /var/cache"
find /var/cache -type f -exec rm -rf {} \;
echo "truncate any logs that have built up during the install"
find /var/log -type f -exec truncate --size=0 {} \;
echo "blank netplan machine-id (DUID) so machines get unique ID generated on boot"
truncate -s 0 /etc/machine-id
echo "remove the contents of /tmp and /var/tmp"
rm -rf /tmp/* /var/tmp/*
echo "force a new random seed to be generated"
rm -f /var/lib/systemd/random-seed
echo "delete the SSH keys (will be recreated on the first boot)"
rm -f /etc/ssh/ssh_host_*
echo "clear the history so our install isn't there"
rm -f /root/.wget-hsts
export HISTSIZE=0

View File

@ -0,0 +1,9 @@
#!/bin/sh -eux
# Disable Predictable Network Interface names and use eth0
sed -i 's/en[[:alnum:]]*/eth0/g' /etc/network/interfaces;
sed -i 's/GRUB_CMDLINE_LINUX="\(.*\)"/GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0 \1"/g' /etc/default/grub;
update-grub;
# Adding a 2 sec delay to the interface up, to make the dhclient happy
echo "pre-up sleep 2" >> /etc/network/interfaces

View File

@ -0,0 +1,19 @@
#!/bin/sh -eux
echo 'Download the build_sdcard.sh script ...'
wget https://raw.githubusercontent.com/${github_user}/raspiblitz/${branch}/build_sdcard.sh
if [ ${pack} = "fatpack" ]; then
fatpack="1"
else
fatpack="0"
fi
if [ "${fatpack}" = "1" ]; then
echo 'Add Gnome desktop'
export DEBIAN_FRONTEND=none
sudo apt install gnome -y
fi
echo 'Build RaspiBlitz ...'
bash build_sdcard.sh -f ${fatpack} -u ${github_user} -b ${branch} -d headless -t false -w off -i false

View File

@ -0,0 +1,9 @@
#!/bin/sh -eux
# Only add the secure path line if it is not already present
grep -q 'secure_path' /etc/sudoers \
|| sed -i -e '/Defaults\s\+env_reset/a Defaults\tsecure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"' /etc/sudoers;
# Set up password-less sudo for the pi user
echo 'pi ALL=(ALL) NOPASSWD:ALL' >/etc/sudoers.d/99_pi;
chmod 440 /etc/sudoers.d/99_pi;

View File

@ -0,0 +1,4 @@
#!/bin/sh -eux
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=751636
apt-get install libpam-systemd

View File

@ -0,0 +1,19 @@
#!/bin/sh -eux
arch="$(uname -r | sed 's/^.*[0-9]\{1,\}\.[0-9]\{1,\}\.[0-9]\{1,\}\(-[0-9]\{1,2\}\)-//')"
debian_version="$(lsb_release -r | awk '{print $2}')"
major_version="$(echo $debian_version | awk -F. '{print $1}')"
# Disable systemd apt timers/services
systemctl stop apt-daily.timer
systemctl stop apt-daily-upgrade.timer
systemctl disable apt-daily.timer
systemctl disable apt-daily-upgrade.timer
systemctl mask apt-daily.service
systemctl mask apt-daily-upgrade.service
systemctl daemon-reload
## leave update and upgrade to the build_sdcard.sh
#apt-get update
#apt-get -y upgrade linux-image-$arch
#apt-get -y install linux-headers-$(uname -r)

View File

@ -0,0 +1,37 @@
#!/bin/bash -e
# Install packer
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt-get update
echo -e "\nInstalling packer..."
sudo apt-get install -y packer
# Install qemu
echo -e "\nInstalling qemu..."
sudo apt-get install -y qemu-system
if [ $# -gt 0 ]; then
pack=$1
else
pack=lean
fi
if [ $# -gt 1 ]; then
github_user=$2
else
github_user=rootzoll
fi
if [ $# -gt 2 ]; then
branch=$3
else
branch=dev
fi
# Build the image
echo -e "\nBuilding image..."
cd debian
PACKER_LOG=1 packer build \
--var pack=${pack} --var github_user=${github_user} --var branch=${branch} \
-only=qemu amd64-debian.json

View File

@ -0,0 +1,66 @@
variable "pack" {}
variable "github_user" {}
variable "branch" {}
source "arm" "raspiblitz-arm64-rpi" {
file_checksum_type = "sha256"
file_checksum = "c42856ffca096480180b5aff66e1dad2f727fdc33359b24e0d2d49cc7676b576"
file_target_extension = "xz"
file_unarchive_cmd = ["xz", "--decompress", "$ARCHIVE_PATH"]
file_urls = ["https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2022-09-26/2022-09-22-raspios-bullseye-arm64.img.xz"]
image_build_method = "resize"
image_chroot_env = ["PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin"]
image_partitions {
filesystem = "vfat"
mountpoint = "/boot"
name = "boot"
size = "256M"
start_sector = "8192"
type = "c"
}
image_partitions {
filesystem = "ext4"
mountpoint = "/"
name = "root"
size = "0"
start_sector = "532480"
type = "83"
}
image_path = "raspiblitz-arm64-rpi-${var.pack}.img"
image_size = "30G"
image_type = "dos"
qemu_binary_destination_path = "/usr/bin/qemu-arm-static"
qemu_binary_source_path = "/usr/bin/qemu-arm-static"
}
build {
sources = ["source.arm.raspiblitz-arm64-rpi"]
provisioner "shell" {
inline = [
"echo 'nameserver 1.1.1.1' > /etc/resolv.conf",
"echo 'nameserver 8.8.8.8' >> /etc/resolv.conf",
"echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections",
"apt-get install -y sudo wget",
"apt-get -y autoremove",
"apt-get -y clean",
]
}
provisioner "shell" {
environment_vars = [
"github_user=${var.github_user}",
"branch=${var.branch}",
"pack=${var.pack}"
]
script = "./raspiblitz.sh"
}
provisioner "shell" {
inline = [
"echo '# delete the SSH keys (will be recreated on the first boot)'",
"rm -f /etc/ssh/ssh_host_*",
"echo 'OK'",
]
}
}

View File

@ -0,0 +1,79 @@
#!/bin/bash -e
echo "\n# Install dependencies with apt"
if [ "$(uname -n)" = "ubuntu" ]; then
sudo add-apt-repository -y universe
fi
# Install dependencies
# needed on Ubuntu Live ('lsb_release -cs': jammy)
sudo apt install -y qemu-user-static || exit 1
# from https://github.com/mkaczanowski/packer-builder-arm/blob/master/docker/Dockerfile
sudo apt install -y \
wget \
curl \
ca-certificates \
dosfstools \
fdisk \
gdisk \
kpartx \
libarchive-tools \
parted \
psmisc \
qemu-utils \
sudo \
xz-utils || exit 1
echo -e "\n# Install Packer..."
if ! packer version 2>/dev/null; then
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository -y "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt-get update -y && sudo apt-get install packer -y || exit 1
else
echo "# Packer is installed"
fi
echo -e "\n# Install Go"
export PATH=$PATH:/usr/local/go/bin
if ! go version 2>/dev/null | grep "1.18.9"; then
wget --progress=bar:force https://go.dev/dl/go1.18.9.linux-amd64.tar.gz
echo "015692d2a48e3496f1da3328cf33337c727c595011883f6fc74f9b5a9c86ffa8 go1.18.9.linux-amd64.tar.gz" | sha256sum -c - || exit 1
sudo rm -rf /usr/local/go && sudo tar -C /usr/local -xzf go1.18.9.linux-amd64.tar.gz
sudo rm -rf go1.18.9.linux-amd64.tar.gz
else
echo "# Go 1.18.9 is installed"
fi
echo -e "\n# Download the packer-builder-arm plugin"
git clone https://github.com/mkaczanowski/packer-builder-arm
cd packer-builder-arm
# pin to commit hash https://github.com/mkaczanowski/packer-builder-arm/commits/master
git reset --hard 6636c687ece53f7d1f5f2b35aa41f0e6132949c4
echo -e "\n# Build the packer-builder-arm plugin"
go mod download
go build || exit 1
if [ $# -gt 0 ]; then
pack=$1
else
pack=lean
fi
if [ $# -gt 1 ]; then
github_user=$2
else
github_user=rootzoll
fi
if [ $# -gt 2 ]; then
branch=$3
else
branch=dev
fi
cp ../arm64-rpi.pkr.hcl ./
cp ../raspiblitz.sh ./
echo -e "\n# Build the image"
packer build -var github_user=${github_user} -var branch=${branch} -var pack=${pack} arm64-rpi.pkr.hcl

View File

@ -0,0 +1,26 @@
#!/bin/bash -e
if [ $# -gt 0 ]; then
pack=$1
else
pack=lean
fi
if [ $# -gt 1 ]; then
github_user=$2
else
github_user=rootzoll
fi
if [ $# -gt 2 ]; then
branch=$3
else
branch=dev
fi
# Build the image in docker
echo -e "\nBuild Packer image..."
# from https://hub.docker.com/r/mkaczanowski/packer-builder-arm/tags
docker run --rm --privileged -v /dev:/dev -v ${PWD}:/build \
mkaczanowski/packer-builder-arm:1.0.5@sha256:a6371a3230b94c308e9a8cd55da1ae0d23bd670b7e558b39683c24f489d03e53 \
build -var github_user=${github_user} -var branch=${branch} -var pack=${pack} arm64-rpi.pkr.hcl

View File

@ -0,0 +1,15 @@
#!/bin/sh -eux
echo 'Download the build_sdcard.sh script ...'
wget https://raw.githubusercontent.com/${github_user}/raspiblitz/${branch}/build_sdcard.sh
if [ "${pack}" = "fatpack" ]; then
fatpack="1"
# make /dev/shm world writable for qemu
sudo chmod 777 /dev/shm
else
fatpack="0"
fi
echo 'Build RaspiBlitz ...'
bash build_sdcard.sh -f ${fatpack} -u ${github_user} -b ${branch} -d headless -t false -w off -i false

View File

@ -113,13 +113,13 @@ elif [ "$1" = "keyvalue" ] && [ "$2" = "on" ]; then
sudo sed -i "/^save .*/d" /etc/redis/redis.conf
# restart with new config
sudo systemctl restart redis-server
if ! ischroot; then sudo systemctl restart redis-server; fi
# clean old databases if exist
sudo rm /var/lib/redis/dump.rdb 2>/dev/null
# restart again this time there is no old data dump to load
sudo systemctl restart redis-server
if ! ischroot; then sudo systemctl restart redis-server; fi
# uninstall
elif [ "$1" = "keyvalue" ] && [ "$2" = "off" ]; then

View File

@ -1 +0,0 @@
magnet:?xt=urn:btih:7885922bd94ccbed5572628931e8b2a5d5b7212a&dn=raspiblitz-amd64-v1.7.2-2022-04-03&tr=http%3a%2f%2ftracker.skyts.net%3a6969%2fannounce&tr=http%3a%2f%2ftracker.yoshi210.com%3a6969%2fannounce&tr=udp%3a%2f%2ftracker.leechers-paradise.org%3a6969&tr=http%3a%2f%2ftracker2.itzmx.com%3a6961%2fannounce&tr=udp%3a%2f%2f9.rarbg.me%3a2780%2fannounce&tr=http%3a%2f%2fpow7.com%3a80%2fannounce&tr=udp%3a%2f%2fexodus.desync.com%3a6969%2fannounce&tr=udp%3a%2f%2ftracker.coppersurfer.tk%3a6969%2fannounce&tr=http%3a%2f%2fopen.acgtracker.com%3a1096%2fannounce

View File

@ -111,6 +111,12 @@ function bitcoinI2Pstatus {
echo "# Running: 'blitz.i2pd.sh $*'"
source /mnt/hdd/raspiblitz.conf
# make sure to be present in PATH
if ! echo "$PATH" | grep "/usr/sbin"; then
export PATH=$PATH:/usr/sbin
echo "PATH=\$PATH:/usr/sbin" | sudo tee -a /etc/profile
fi
if [ "$1" = "install" ]; then
isInstalled=$(sudo systemctl list-unit-files | grep -c i2pd)
@ -118,34 +124,12 @@ if [ "$1" = "install" ]; then
echo "# i2pd is already installed."
else
echo "# Installing i2pd ..."
ARCHITECTURE=$(dpkg --print-architecture)
if [ ${ARCHITECTURE} = arm64 ]; then
# use the deb repo
add_repo
add_repo
sudo apt-get update
sudo apt-get install -y i2pd
else
# install from github
# https://github.com/PurpleI2P/i2pd/releases
VERSION=2.43.0
DISTRO=$(lsb_release -cs)
sudo apt-get update
sudo apt-get install -y i2pd
mkdir -p download/i2pd
cd download/i2pd || exit 1
wget -O i2pd_${VERSION}-1${DISTRO}1_${ARCHITECTURE}.deb https://github.com/PurpleI2P/i2pd/releases/download/${VERSION}/i2pd_${VERSION}-1${DISTRO}1_${ARCHITECTURE}.deb
# verify
wget -O SHA512SUMS https://github.com/PurpleI2P/i2pd/releases/download/${VERSION}/SHA512SUMS
wget -O SHA512SUMS.asc https://github.com/PurpleI2P/i2pd/releases/download/${VERSION}/SHA512SUMS.asc
curl https://repo.i2pd.xyz/r4sas.gpg | gpg --import
gpg --verify SHA512SUMS.asc || (echo "# PGP signature error"; exit 5)
sha512sum -c SHA512SUMS --ignore-missing || (echo "# Checksum error"; exit 6)
# install
sudo dpkg -i --force-confnew i2pd_${VERSION}-1${DISTRO}1_${ARCHITECTURE}.deb
fi
fi
exit 0
fi