* 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>
7.7 KiB
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
- Images generated in github actions
- Write the image to a disk connected with USB
- The first boot
- Add wifi
- Add wifi driver (optional)
- Workflow notes
Local build
with the 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 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
- username:
-
start a terminal for guidance
-
alternatively open a browser and go to:
-
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
- Find the the RaspiBlitz_IP in your router dashboard, in the terminal prompt or with
lean image
- press any key to get to a login prompt after the splash screen
- username:
admin
- password:
raspiblitz
- username:
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
afterdeb 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 filenameoutput_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 offile_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