mirror of
https://github.com/rootzoll/raspiblitz.git
synced 2025-02-28 16:58:03 +01:00
ci: UEFI image generation and build updates (#4033)
* ci: use uefi for amd64 image, debian 12.1.0 * build: add amd64 legacyboot image action * ci: store var values in config, update readme * fix: add raspi repo on aarch64 only fixes: https://github.com/raspiblitz/raspiblitz/issues/4029 * docs: guide to extend the root partition
This commit is contained in:
parent
7dfdcf9b3f
commit
0d0e5581a5
18 changed files with 509 additions and 261 deletions
4
.github/workflows/amd64-fatpack-image.yml
vendored
4
.github/workflows/amd64-fatpack-image.yml
vendored
|
@ -61,12 +61,12 @@ jobs:
|
||||||
echo "BUILD_VERSION=$(git describe --always --tags)" >> $GITHUB_ENV
|
echo "BUILD_VERSION=$(git describe --always --tags)" >> $GITHUB_ENV
|
||||||
|
|
||||||
- name: Hello RaspiBlitz
|
- name: Hello RaspiBlitz
|
||||||
run: echo "Building the raspiblitz-amd64-debian-image-${{env.BUILD_DATE}}-${{env.BUILD_VERSION}} at "
|
run: echo "Building the raspiblitz-amd64-debian-image-${{env.BUILD_DATE}}-${{env.BUILD_VERSION}}"
|
||||||
|
|
||||||
- name: Run the build script
|
- name: Run the build script
|
||||||
run: |
|
run: |
|
||||||
cd ci/amd64
|
cd ci/amd64
|
||||||
bash packer.build.amd64-debian.sh fatpack $GITHUB_ACTOR $GITHUB_HEAD_REF
|
bash packer.build.amd64-debian.sh --pack fatpack --github_user $GITHUB_ACTOR --branch $GITHUB_HEAD_REF --preseed_file preseed.cfg --boot uefi--desktop gnome
|
||||||
|
|
||||||
- name: Compute checksum of the raw image
|
- name: Compute checksum of the raw image
|
||||||
run: |
|
run: |
|
||||||
|
|
2
.github/workflows/amd64-lean-image.yml
vendored
2
.github/workflows/amd64-lean-image.yml
vendored
|
@ -44,7 +44,7 @@ jobs:
|
||||||
- name: Run the build script
|
- name: Run the build script
|
||||||
run: |
|
run: |
|
||||||
cd ci/amd64
|
cd ci/amd64
|
||||||
bash packer.build.amd64-debian.sh lean $GITHUB_ACTOR $GITHUB_HEAD_REF
|
bash packer.build.amd64-debian.sh --pack lean --github_user $GITHUB_ACTOR --branch $GITHUB_HEAD_REF --preseed_file preseed.cfg --boot uefi --desktop gnome
|
||||||
|
|
||||||
- name: Compute checksum of the raw image
|
- name: Compute checksum of the raw image
|
||||||
run: |
|
run: |
|
||||||
|
|
71
.github/workflows/amd64-lean-legacyboot-image.yml
vendored
Normal file
71
.github/workflows/amd64-lean-legacyboot-image.yml
vendored
Normal file
|
@ -0,0 +1,71 @@
|
||||||
|
name: amd64-lean-legacyboot-image-build
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: amd64-lean-legacyboot-image-build-${{ github.head_ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
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 --pack lean --github_user $GITHUB_ACTOR --branch $GITHUB_HEAD_REF --preseed_file preseed.cfg --boot bios --desktop none
|
||||||
|
|
||||||
|
- 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
|
56
Makefile
56
Makefile
|
@ -2,10 +2,16 @@ SHELL = /bin/bash
|
||||||
GITHUB_ACTOR = $(shell git remote -v | grep origin | head -1 | cut -d/ -f4)
|
GITHUB_ACTOR = $(shell git remote -v | grep origin | head -1 | cut -d/ -f4)
|
||||||
GITHUB_HEAD_REF = $(shell git rev-parse --abbrev-ref HEAD)
|
GITHUB_HEAD_REF = $(shell git rev-parse --abbrev-ref HEAD)
|
||||||
|
|
||||||
amd64-lean-image:
|
amd64-lean-desktop-uefi-image:
|
||||||
# Run the build script
|
# Run the build script
|
||||||
cd ci/amd64 && \
|
cd ci/amd64 && \
|
||||||
bash packer.build.amd64-debian.sh lean $(GITHUB_ACTOR) $(GITHUB_HEAD_REF) 0
|
bash packer.build.amd64-debian.sh \
|
||||||
|
--pack lean \
|
||||||
|
--github_user $(GITHUB_ACTOR) \
|
||||||
|
--branch $(GITHUB_HEAD_REF) \
|
||||||
|
--preseed_file preseed.cfg \
|
||||||
|
--boot uefi\
|
||||||
|
--desktop gnome
|
||||||
|
|
||||||
# Compute the checksum of the qemu image
|
# Compute the checksum of the qemu image
|
||||||
cd ci/amd64/builds/raspiblitz-amd64-debian-lean-qemu && \
|
cd ci/amd64/builds/raspiblitz-amd64-debian-lean-qemu && \
|
||||||
|
@ -22,10 +28,42 @@ amd64-lean-image:
|
||||||
# List the generated files
|
# List the generated files
|
||||||
ls -lah ci/amd64/builds/raspiblitz-amd64-debian-lean-qemu/raspiblitz-amd64-debian-lean.qcow2.*
|
ls -lah ci/amd64/builds/raspiblitz-amd64-debian-lean-qemu/raspiblitz-amd64-debian-lean.qcow2.*
|
||||||
|
|
||||||
amd64-fatpack-image:
|
amd64-lean-server-legacyboot-image:
|
||||||
# Run the build script
|
# Run the build script
|
||||||
cd ci/amd64 && \
|
cd ci/amd64 && \
|
||||||
bash packer.build.amd64-debian.sh fatpack $(GITHUB_ACTOR) $(GITHUB_HEAD_REF)
|
bash packer.build.amd64-debian.sh \
|
||||||
|
--pack lean \
|
||||||
|
--github_user $(GITHUB_ACTOR) \
|
||||||
|
--branch $(GITHUB_HEAD_REF) \
|
||||||
|
--preseed_file preseed.cfg \
|
||||||
|
--boot bios-256k.bin \
|
||||||
|
--desktop none
|
||||||
|
|
||||||
|
# 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-desktop-uefi-image:
|
||||||
|
# Run the build script
|
||||||
|
cd ci/amd64 && \
|
||||||
|
bash packer.build.amd64-debian.sh \
|
||||||
|
--pack fatpack \
|
||||||
|
--github_user $(GITHUB_ACTOR) \
|
||||||
|
--branch $(GITHUB_HEAD_REF) \
|
||||||
|
--preseed_file preseed.cfg \
|
||||||
|
--boot uefi\
|
||||||
|
--desktop gnome
|
||||||
|
|
||||||
# Compute the checksum of the qemu image
|
# Compute the checksum of the qemu image
|
||||||
cd ci/amd64/builds/raspiblitz-amd64-debian-fatpack-qemu && \
|
cd ci/amd64/builds/raspiblitz-amd64-debian-fatpack-qemu && \
|
||||||
|
@ -45,7 +83,10 @@ amd64-fatpack-image:
|
||||||
arm64-rpi-lean-image:
|
arm64-rpi-lean-image:
|
||||||
# Run the build script
|
# Run the build script
|
||||||
cd ci/arm64-rpi && \
|
cd ci/arm64-rpi && \
|
||||||
bash packer.build.arm64-rpi.local.sh lean $(GITHUB_ACTOR) $(GITHUB_HEAD_REF)
|
bash packer.build.arm64-rpi.local.sh \
|
||||||
|
--pack lean \
|
||||||
|
--github_user $(GITHUB_ACTOR) \
|
||||||
|
--branch $(GITHUB_HEAD_REF)
|
||||||
|
|
||||||
# Compute the checksum of the raw image
|
# Compute the checksum of the raw image
|
||||||
cd ci/arm64-rpi/packer-builder-arm && \
|
cd ci/arm64-rpi/packer-builder-arm && \
|
||||||
|
@ -65,7 +106,10 @@ arm64-rpi-lean-image:
|
||||||
arm64-rpi-fatpack-image:
|
arm64-rpi-fatpack-image:
|
||||||
# Run the build script
|
# Run the build script
|
||||||
cd ci/arm64-rpi && \
|
cd ci/arm64-rpi && \
|
||||||
bash packer.build.arm64-rpi.local.sh fatpack $(GITHUB_ACTOR) $(GITHUB_HEAD_REF)
|
bash packer.build.arm64-rpi.local.sh \
|
||||||
|
--pack fatpack \
|
||||||
|
--github_user $(GITHUB_ACTOR) \
|
||||||
|
--branch $(GITHUB_HEAD_REF)
|
||||||
|
|
||||||
# Compute the checksum of the raw image
|
# Compute the checksum of the raw image
|
||||||
cd ci/arm64-rpi/packer-builder-arm && \
|
cd ci/arm64-rpi/packer-builder-arm && \
|
||||||
|
|
|
@ -291,9 +291,8 @@ HandleLidSwitchDocked=ignore" | tee /etc/systemd/logind.conf.d/nosuspend.conf
|
||||||
# https://github.com/rootzoll/raspiblitz/issues/138
|
# https://github.com/rootzoll/raspiblitz/issues/138
|
||||||
# https://daker.me/2014/10/how-to-fix-perl-warning-setting-locale-failed-in-raspbian.html
|
# https://daker.me/2014/10/how-to-fix-perl-warning-setting-locale-failed-in-raspbian.html
|
||||||
# https://stackoverflow.com/questions/38188762/generate-all-locales-in-a-docker-image
|
# https://stackoverflow.com/questions/38188762/generate-all-locales-in-a-docker-image
|
||||||
if [ "${baseimage}" = "raspios_arm64" ] || [ "${baseimage}" = "debian" ]; then
|
if [ "${baseimage}" = "raspios_arm64" ] || [ "${cpu}" = aarch64 ] && [ "${baseimage}" = "debian" ]; then
|
||||||
echo -e "\n*** FIXING LOCALES FOR BUILD ***"
|
echo -e "\n*** FIXING LOCALES FOR BUILD ***"
|
||||||
|
|
||||||
sed -i "s/^# en_US.UTF-8 UTF-8.*/en_US.UTF-8 UTF-8/g" /etc/locale.gen
|
sed -i "s/^# en_US.UTF-8 UTF-8.*/en_US.UTF-8 UTF-8/g" /etc/locale.gen
|
||||||
sed -i "s/^# en_US ISO-8859-1.*/en_US ISO-8859-1/g" /etc/locale.gen
|
sed -i "s/^# en_US ISO-8859-1.*/en_US ISO-8859-1/g" /etc/locale.gen
|
||||||
locale-gen
|
locale-gen
|
||||||
|
|
158
ci/README.md
158
ci/README.md
|
@ -1,29 +1,33 @@
|
||||||
<!-- omit in toc -->
|
<!-- omit in toc -->
|
||||||
# Automated builds
|
# Automated builds
|
||||||
* The images are built using the dev branch.
|
|
||||||
* The lean image has no Gnome desktop or WebUI installed.
|
<details>
|
||||||
* Issue: https://github.com/rootzoll/raspiblitz/issues/3053
|
<summary>Table of Contents</summary>
|
||||||
* The templates are made using: https://github.com/chef/bento
|
|
||||||
|
|
||||||
- [Local build](#local-build)
|
- [Local build](#local-build)
|
||||||
- [Generate an arm64-rpi image](#generate-an-arm64-rpi-image)
|
- [Generate an arm64-rpi image](#generate-an-arm64-rpi-image)
|
||||||
- [Generate an amd64 image](#generate-an-amd64-image)
|
- [Generate an amd64 image](#generate-an-amd64-image)
|
||||||
|
- [amd64-lean-desktop-uefi-image](#amd64-lean-desktop-uefi-image)
|
||||||
|
- [amd64-lean-server-legacyboot-image](#amd64-lean-server-legacyboot-image)
|
||||||
- [Images generated in github actions](#images-generated-in-github-actions)
|
- [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)
|
- [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)
|
- [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)
|
- [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)
|
- [The first boot](#the-first-boot)
|
||||||
- [fatpack image](#fatpack-image)
|
- [Lean image with Gnome desktop (default image)](#lean-image-with-gnome-desktop-default-image)
|
||||||
- [lean image](#lean-image)
|
- [Lean server image without Gnome desktop](#lean-server-image-without-gnome-desktop)
|
||||||
- [Add Gnome desktop (optional)](#add-gnome-desktop-optional)
|
- [Add Gnome desktop to the server image (optional)](#add-gnome-desktop-to-the-server-image-optional)
|
||||||
|
- [Fatpack images](#fatpack-images)
|
||||||
|
- [Extend the root partition (optional - recommended)](#extend-the-root-partition-optional---recommended)
|
||||||
- [Add wifi (optional)](#add-wifi-optional)
|
- [Add wifi (optional)](#add-wifi-optional)
|
||||||
- [Add wifi driver (optional)](#add-wifi-driver-optional)
|
- [Add wifi driver (optional)](#add-wifi-driver-optional)
|
||||||
- [Workflow notes](#workflow-notes)
|
- [Workflow notes](#workflow-notes)
|
||||||
- [Packer .json settings:](#packer-json-settings)
|
|
||||||
- [VNC](#vnc)
|
- [VNC](#vnc)
|
||||||
|
- [Packer settings](#packer-settings)
|
||||||
- [Flashing](#flashing)
|
- [Flashing](#flashing)
|
||||||
|
|
||||||
|
</details>
|
||||||
|
|
||||||
## Local build
|
## Local build
|
||||||
with the [Makefile](https://github.com/rootzoll/raspiblitz/blob/dev/Makefile)
|
with the [Makefile](https://github.com/rootzoll/raspiblitz/blob/dev/Makefile)
|
||||||
* needs ~20 GB free space
|
* needs ~20 GB free space
|
||||||
|
@ -33,7 +37,7 @@ with the [Makefile](https://github.com/rootzoll/raspiblitz/blob/dev/Makefile)
|
||||||
* Preparation:
|
* Preparation:
|
||||||
```
|
```
|
||||||
# change to a mountpoint with sufficient space (check with 'df -h')
|
# change to a mountpoint with sufficient space (check with 'df -h')
|
||||||
cd /var/log
|
cd $HOME/
|
||||||
# switch to root
|
# switch to root
|
||||||
sudo su
|
sudo su
|
||||||
# install git and make
|
# install git and make
|
||||||
|
@ -50,94 +54,121 @@ with the [Makefile](https://github.com/rootzoll/raspiblitz/blob/dev/Makefile)
|
||||||
```
|
```
|
||||||
make arm-rpi-lean-image
|
make arm-rpi-lean-image
|
||||||
```
|
```
|
||||||
* find the image and sh256 hashes in the `ci/arm64-rpi/packer-builder-arm` directory
|
* find the image and sha256 hashes in the `ci/arm64-rpi/packer-builder-arm` directory
|
||||||
* the .img.gz file can be written to an SDcard directly with Balena Etcher
|
* the .img.gz file can be written to an SDcard directly with Balena Etcher
|
||||||
|
|
||||||
### Generate an amd64 image
|
### Generate an amd64 image
|
||||||
The workflow locally and in github actions generates a .qcow2 format amd64 image.
|
* The workflow locally and in github actions generates a .qcow2 format amd64 image.
|
||||||
|
* When finished find the compressed .qcow2 image and sha256 hashes in the `ci/amd64/builds` directory
|
||||||
|
|
||||||
|
#### amd64-lean-desktop-uefi-image
|
||||||
|
* lean image, Gnome desktop, UEFI boot
|
||||||
|
* Tested with
|
||||||
|
* written to disk and booted with UEFI
|
||||||
|
```
|
||||||
|
make amd64-lean-desktop-uefi-image
|
||||||
|
```
|
||||||
|
|
||||||
|
#### amd64-lean-server-legacyboot-image
|
||||||
|
* lean image, no desktop (cli only), legacy boot for old computers
|
||||||
* Tested with
|
* Tested with
|
||||||
* libvirt / virsh / virt-manager (https://virt-manager.org/)
|
* libvirt / virsh / virt-manager (https://virt-manager.org/)
|
||||||
* written to disk and booted with legacy boot (non-UEFI)
|
* written to disk and booted with legacy boot (non-UEFI / CSM mode)
|
||||||
```
|
```
|
||||||
make amd64-lean-image
|
amd64-lean-server-legacyboot-image
|
||||||
```
|
```
|
||||||
* find the compressed .qcow2 image and sh256 hashes in the `ci/amd64/builds` directory
|
|
||||||
|
|
||||||
## Images generated in github actions
|
## Images generated in github actions
|
||||||
* To see the downloadable artifacts will need to log in to GitHub
|
* To see the downloadable artifacts will need to log in to GitHub
|
||||||
* Find the latest successful builds for amd64 using the dev branch at:
|
* Find the latest successful build of the default amd64 image:
|
||||||
https://github.com/rootzoll/raspiblitz/actions/workflows/amd64-lean-image.yml?query=workflow%3Aamd64-lean-image-build+branch%3Adev+is%3Asuccess++
|
https://github.com/rootzoll/raspiblitz/actions/workflows/amd64-lean-image.yml?query=workflow%3Aamd64-lean-image-build+branch%3Adev+is%3Asuccess++
|
||||||
```
|
```
|
||||||
# unzip to the same directory
|
# unzip to the same directory
|
||||||
unzip raspiblitz-amd64-image-YEAR-MM-DD-COMMITHASH.zip
|
unzip ./raspiblitz-amd64-image-YEAR-MM-DD-COMMITHASH.zip
|
||||||
```
|
```
|
||||||
## Write the image to a disk connected with USB
|
## 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
|
### Convert the qcow2 volume to a raw disk image
|
||||||
* the raw image is 33.5 GB
|
* the raw image is 30GB
|
||||||
```
|
```
|
||||||
# unzip
|
# unzip
|
||||||
gzip -dkv raspiblitz-amd64-debian-11.5-lean.qcow2.gz
|
gzip -dkv raspiblitz-amd64-debian-lean.qcow2.gz
|
||||||
# convert
|
# convert
|
||||||
qemu-img convert raspiblitz-amd64-debian-11.5-lean.qcow2 raspiblitz-amd64-debian-11.5-lean.img
|
qemu-img convert ./raspiblitz-amd64-debian-lean.qcow2 ./raspiblitz-amd64-debian-lean.img
|
||||||
```
|
```
|
||||||
|
|
||||||
### Write to a disk connected with USB with Balena Etcher or `dd`
|
### Write to a disk connected with USB with Balena Etcher or `dd`
|
||||||
|
* identify the connected disk with `lsblk` eg,: `/dev/sdk`
|
||||||
* [Balena Etcher](https://www.balena.io/etcher/) to write the .img to disk
|
* [Balena Etcher](https://www.balena.io/etcher/) to write the .img to disk
|
||||||
* dd to write the .img to disk
|
* dd to write the .img to disk
|
||||||
```
|
```
|
||||||
# identify partitions
|
disk="/dev/sdk"
|
||||||
lsblk
|
sudo dd if=./raspiblitz-amd64-debian-lean.img of=${disk} bs=4M status=progress
|
||||||
# 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
|
* qemu-image dd to write the .qcow2 directly to disk
|
||||||
```
|
```
|
||||||
sudo apt install -y qemu-utils
|
sudo apt install -y qemu-utils
|
||||||
sudo qemu-img dd if=./raspiblitz-amd64-debian-11.5-lean.qcow2 of=/dev/sde bs=4M
|
disk="/dev/sdk"
|
||||||
```
|
sudo qemu-img dd if=./raspiblitz-amd64-debian-lean.qcow2 of=${disk} 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
|
## The first boot
|
||||||
### fatpack image
|
### Lean image with Gnome desktop (default image)
|
||||||
* log in on screen:
|
* log in on screen:
|
||||||
* username: `admin`
|
* username: `admin`
|
||||||
* password: `raspiblitz`
|
* password: `raspiblitz`
|
||||||
|
|
||||||
* start a terminal for guidance
|
* start a terminal for guidance
|
||||||
|
* connect with ssh over the LAN
|
||||||
|
* username: `admin`
|
||||||
|
* password: `raspiblitz`
|
||||||
|
|
||||||
* alternatively open a browser and go to:
|
### Lean server image without Gnome desktop
|
||||||
|
* press any key to get to a login prompt after the splash screen
|
||||||
|
* username: `admin`
|
||||||
|
* password: `raspiblitz`
|
||||||
|
|
||||||
|
#### Add Gnome desktop to the server image (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
|
||||||
|
```
|
||||||
|
|
||||||
|
### Fatpack images
|
||||||
|
* can open a browser and go to:
|
||||||
* http://localhost
|
* http://localhost
|
||||||
* can also open the WebUI on another computer
|
* 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`
|
* Find the the RaspiBlitz_IP in your router dashboard, in the terminal prompt or with `hostname -I`
|
||||||
* open: http://RaspiBlitz_IP
|
* open: http://RaspiBlitz_IP
|
||||||
|
|
||||||
### lean image
|
### Extend the root partition (optional - recommended)
|
||||||
* press any key to get to a login prompt after the splash screen
|
* The default image is 30GB. The partition can be extended to the full size of the disk.
|
||||||
* username: `admin`
|
* The lvm partition can be extended while mounted so this step can be done later as well while the system is running.
|
||||||
* password: `raspiblitz`
|
* CLI (recommended)
|
||||||
|
|
||||||
#### 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
|
# identify the USB connected disk
|
||||||
systemctl start gdm
|
lsblk
|
||||||
|
df -h
|
||||||
|
# select the disk carefully
|
||||||
|
disk="/dev/sde"
|
||||||
|
# resize the extended partition to the full size of the disk
|
||||||
|
sudo parted ${disk} -- resizepart 2 100%
|
||||||
|
# resize the lvm partition to the full size of the disk
|
||||||
|
sudo parted ${disk} -- resizepart 5 100%
|
||||||
|
# extend the physical volume to size of the lvm partition
|
||||||
|
sudo pvresize ${disk}5
|
||||||
|
# extend the root lvm to the full free space and resize the filesystem
|
||||||
|
sudo lvextend -r -l +100%FREE /dev/mapper/raspiblitz--amd64--vg-root
|
||||||
|
```
|
||||||
|
* GUI with GParted
|
||||||
|
```
|
||||||
|
# install
|
||||||
|
sudo apt install gparted
|
||||||
|
# start the gparted GUI
|
||||||
|
sudo gparted
|
||||||
|
# resize the extended partition to the full size of the disk
|
||||||
|
# extend the lvm to the full free space and resize the filesystem (extends the swap space by default)
|
||||||
|
# in CLI: extend the root lvm
|
||||||
|
sudo lvextend -r -l +100%FREE /dev/mapper/raspiblitz--amd64--vg-root
|
||||||
```
|
```
|
||||||
|
|
||||||
### Add wifi (optional)
|
### Add wifi (optional)
|
||||||
|
@ -153,9 +184,13 @@ https://github.com/rootzoll/raspiblitz/actions/workflows/amd64-lean-image.yml?qu
|
||||||
```
|
```
|
||||||
sudo apt update && sudo apt install firmware-iwlwifi
|
sudo apt update && sudo apt install firmware-iwlwifi
|
||||||
```
|
```
|
||||||
|
* alternatively download the deb package from: http://ftp.debian.org/debian/pool/non-free-firmware/f/firmware-nonfree/firmware-iwlwifi_20230210-5_all.deb
|
||||||
|
* install with:
|
||||||
|
```
|
||||||
|
sudo dpkg -i firmware-iwlwifi_20230210-5_all.deb
|
||||||
|
```
|
||||||
|
|
||||||
## Workflow notes
|
## Workflow notes
|
||||||
|
|
||||||
The github workflow files are the equivalent of the Makefile commands run locally.
|
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 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 build_sdcard.sh is downloaded from the source branch and built with the options pack=[lean|fatpack] to set fatpack=[0|1].
|
||||||
|
@ -176,8 +211,11 @@ After the image is built (and there is no exit with errors) the next steps are:
|
||||||
* compute checksum of the compressed image
|
* compute checksum of the compressed image
|
||||||
* (in github actions: upload the artifacts in one .zip file)
|
* (in github actions: upload the artifacts in one .zip file)
|
||||||
|
|
||||||
### Packer .json settings:
|
### VNC
|
||||||
* `disk_size` - the size op the raw image. The .qcow2 file is compressed.
|
* can follow the setup locally in VNC with the port stated in the first part of the logs eg: `Found available VNC port: 5900 on IP: 127.0.0.1`
|
||||||
|
|
||||||
|
### Packer settings
|
||||||
|
* `disk_size` / `image_size` - the size op the raw image. The .qcow2 file is compressed.
|
||||||
* `template` - image filename
|
* `template` - image filename
|
||||||
* `output_directory` - directory under builds where the image will be placed
|
* `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
|
* the `pi` user is given passwordless sudo access and used for the image setup
|
||||||
|
@ -197,7 +235,5 @@ After the image is built (and there is no exit with errors) the next steps are:
|
||||||
|
|
||||||
cat 2022-09-22-raspios-bullseye-arm64.img.xz.sha256
|
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
|
### 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
|
* using `qemu-img dd bs=4M if=raspiblitz-amd64-debian-lean.qcow2 of=/dev/sdd` changed the UUID so it won't boot without editing GRUB
|
||||||
|
|
4
ci/amd64/_common/env.sh
Normal file
4
ci/amd64/_common/env.sh
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
echo "# Display the environment variables"
|
||||||
|
env
|
|
@ -1,81 +0,0 @@
|
||||||
{
|
|
||||||
"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": "3b0e9718e3653435f20d8c2124de6d363a51a1fd7f911b9ca0c6db6b3d30d53e",
|
|
||||||
"iso_name": "debian-12.0.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"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
115
ci/amd64/debian/build.amd64-debian.pkr.hcl
Normal file
115
ci/amd64/debian/build.amd64-debian.pkr.hcl
Normal file
|
@ -0,0 +1,115 @@
|
||||||
|
packer {
|
||||||
|
required_version = ">= 1.7.0, < 2.0.0"
|
||||||
|
|
||||||
|
required_plugins {
|
||||||
|
qemu = {
|
||||||
|
source = "github.com/hashicorp/qemu"
|
||||||
|
version = ">= 1.0.0, < 2.0.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "pack" { default = "lean" }
|
||||||
|
variable "github_user" { default = "raspiblitz" }
|
||||||
|
variable "branch" { default = "dev" }
|
||||||
|
variable "desktop" { default = "none" }
|
||||||
|
|
||||||
|
variable "boot" { default = "uefi" }
|
||||||
|
variable "preseed_file" { default = "preseed.cfg" }
|
||||||
|
variable "hostname" { default = "raspiblitz-amd64" }
|
||||||
|
|
||||||
|
variable "iso_name" { default = "debian-12.1.0-amd64-netinst.iso" }
|
||||||
|
variable "iso_checksum" { default = "9f181ae12b25840a508786b1756c6352a0e58484998669288c4eec2ab16b8559" }
|
||||||
|
|
||||||
|
variable "disk_size" { default = "30000" }
|
||||||
|
variable "memory" { default = "4096" }
|
||||||
|
variable "cpus" { default = "4" }
|
||||||
|
|
||||||
|
locals {
|
||||||
|
name_template = "${var.hostname}-debian-${var.pack}"
|
||||||
|
bios_file = var.boot == "uefi" ? "OVMF.fd" : "bios-256k.bin"
|
||||||
|
boot_command = var.boot == "uefi" ? [
|
||||||
|
"<wait><wait><wait>c<wait><wait><wait>",
|
||||||
|
"linux /install.amd/vmlinuz ",
|
||||||
|
"auto=true ",
|
||||||
|
"url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/${var.preseed_file} ",
|
||||||
|
"hostname=${var.hostname} ",
|
||||||
|
"domain=${var.hostname}.local ",
|
||||||
|
"interface=auto ",
|
||||||
|
"vga=788 noprompt quiet --<enter>",
|
||||||
|
"initrd /install.amd/initrd.gz<enter>",
|
||||||
|
"boot<enter>"
|
||||||
|
] : [
|
||||||
|
"<esc><wait>install <wait>",
|
||||||
|
"<wait><wait><wait><wait><wait><wait><wait><wait><wait><wait><wait><wait><wait><wait><wait><wait> preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/${var.preseed_file} <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=${var.hostname} <wait>",
|
||||||
|
"netcfg/get_domain=${var.hostname}.local <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>"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
source "qemu" "debian" {
|
||||||
|
boot_command = local.boot_command
|
||||||
|
boot_wait = "5s"
|
||||||
|
cpus = var.cpus
|
||||||
|
disk_size = var.disk_size
|
||||||
|
http_directory = "./http"
|
||||||
|
iso_checksum = var.iso_checksum
|
||||||
|
iso_url = "http://cdimage.debian.org/cdimage/release/current/amd64/iso-cd/${var.iso_name}"
|
||||||
|
memory = var.memory
|
||||||
|
output_directory = "../builds/${local.name_template}-qemu"
|
||||||
|
shutdown_command = "echo 'raspiblitz' | sudo /sbin/shutdown -hP now"
|
||||||
|
ssh_password = "raspiblitz"
|
||||||
|
ssh_port = 22
|
||||||
|
ssh_timeout = "10000s"
|
||||||
|
ssh_username = "pi"
|
||||||
|
format = "qcow2"
|
||||||
|
vm_name = "${local.name_template}.qcow2"
|
||||||
|
headless = false
|
||||||
|
vnc_bind_address = "127.0.0.1"
|
||||||
|
vnc_port_max = 5900
|
||||||
|
vnc_port_min = 5900
|
||||||
|
qemuargs = [
|
||||||
|
["-m", var.memory],
|
||||||
|
["-bios", local.bios_file],
|
||||||
|
["-display", "none"]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
build {
|
||||||
|
description = "Can't use variables here yet!"
|
||||||
|
sources = ["source.qemu.debian"]
|
||||||
|
|
||||||
|
provisioner "shell" {
|
||||||
|
environment_vars = [
|
||||||
|
"HOME_DIR=/home/pi",
|
||||||
|
"github_user=${var.github_user}",
|
||||||
|
"branch=${var.branch}",
|
||||||
|
"pack=${var.pack}",
|
||||||
|
"desktop=${var.desktop}"
|
||||||
|
]
|
||||||
|
|
||||||
|
execute_command = "echo 'raspiblitz' | {{.Vars}} sudo -S -E sh -eux '{{.Path}}'"
|
||||||
|
expect_disconnect = true
|
||||||
|
scripts = [
|
||||||
|
"./../_common/env.sh",
|
||||||
|
"./scripts/update.sh",
|
||||||
|
"./../_common/sshd.sh",
|
||||||
|
"./scripts/networking.sh",
|
||||||
|
"./scripts/sudoers.sh",
|
||||||
|
"./scripts/systemd.sh",
|
||||||
|
"./scripts/build.raspiblitz.sh",
|
||||||
|
"./scripts/cleanup.sh"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,47 +0,0 @@
|
||||||
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
|
|
72
ci/amd64/debian/http/preseed.cfg
Normal file
72
ci/amd64/debian/http/preseed.cfg
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
# https://github.com/chef/bento/blob/main/packer_templates/http/debian/preseed.cfg
|
||||||
|
# https://www.debian.org/releases/stable/example-preseed.txt
|
||||||
|
# https://github.com/tylert/packer-build/blob/master/source/debian/12_bookworm/base-uefi.preseed
|
||||||
|
# variables: https://github.com/tylert/packer-build/blob/master/source/debian/12_bookworm/base-uefi.pkr.hcl
|
||||||
|
|
||||||
|
# Locale Setup
|
||||||
|
d-i debian-installer/language string en
|
||||||
|
d-i debian-installer/country string US
|
||||||
|
d-i debian-installer/locale string en_US.UTF-8
|
||||||
|
# d-i localechooser/supported-locales multiselect en_CA.UTF-8 fr_CA.UTF-8 zh_CN.UTF-8
|
||||||
|
# d-i pkgsel/install-language-support boolean true
|
||||||
|
|
||||||
|
# Keyboard Setup
|
||||||
|
d-i keyboard-configuration/xkb-keymap select us
|
||||||
|
|
||||||
|
# Clock Setup
|
||||||
|
# d-i time/zone string Canada/Eastern
|
||||||
|
d-i time/zone string UTC
|
||||||
|
d-i clock-setup/utc boolean true
|
||||||
|
# set above to false if making a bootable USB to run on same system as Windows
|
||||||
|
|
||||||
|
# Network Setup
|
||||||
|
d-i netcfg/get_hostname string raspiblitz-amd64
|
||||||
|
d-i netcfg/get_domain string
|
||||||
|
# https://bugs.launchpad.net/ubuntu/+source/netcfg/+bug/713385
|
||||||
|
d-i netcfg/choose_interface select auto
|
||||||
|
# make sure you also add "interface=auto" to your boot command too
|
||||||
|
# https://bugs.launchpad.net/ubuntu/+source/netcfg/+bug/713385
|
||||||
|
|
||||||
|
# User Setup
|
||||||
|
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
|
||||||
|
|
||||||
|
# Package Setup
|
||||||
|
d-i hw-detect/load_firmware boolean false
|
||||||
|
d-i hw-detect/load_media boolean false
|
||||||
|
apt-cdrom-setup apt-setup/cdrom/set-first boolean false
|
||||||
|
d-i mirror/country string manual
|
||||||
|
d-i mirror/http/hostname string httpredir.debian.org
|
||||||
|
d-i mirror/http/directory string /debian
|
||||||
|
d-i mirror/http/proxy string
|
||||||
|
d-i apt-setup/contrib boolean true
|
||||||
|
d-i apt-setup/non-free boolean true
|
||||||
|
|
||||||
|
tasksel tasksel/first multiselect ssh-server, standard
|
||||||
|
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
|
||||||
|
|
||||||
|
popularity-contest popularity-contest/participate boolean false
|
||||||
|
|
||||||
|
# Drive setup
|
||||||
|
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
|
||||||
|
|
||||||
|
# Final Setup
|
||||||
|
d-i finish-install/reboot_in_progress note
|
|
@ -9,7 +9,7 @@ else
|
||||||
fatpack="0"
|
fatpack="0"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "${fatpack}" = "1" ]; then
|
if [ "${desktop}" = "gnome" ]; then
|
||||||
echo 'Add Gnome desktop'
|
echo 'Add Gnome desktop'
|
||||||
export DEBIAN_FRONTEND=none
|
export DEBIAN_FRONTEND=none
|
||||||
sudo apt install gnome -y
|
sudo apt install gnome -y
|
|
@ -1,13 +1,17 @@
|
||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
# Install packer
|
# install packer
|
||||||
|
if ! packer version 2>/dev/null; then
|
||||||
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
|
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-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
|
||||||
sudo apt-get update
|
sudo apt-get update
|
||||||
echo -e "\nInstalling packer..."
|
echo -e "\nInstalling packer..."
|
||||||
sudo apt-get install -y packer
|
sudo apt-get install -y packer
|
||||||
|
else
|
||||||
|
echo "# Packer is installed"
|
||||||
|
fi
|
||||||
|
|
||||||
# Install qemu
|
# install qemu
|
||||||
echo -e "\nInstalling qemu..."
|
echo -e "\nInstalling qemu..."
|
||||||
sudo apt-get install -y qemu-system
|
sudo apt-get install -y qemu-system
|
||||||
|
|
||||||
|
@ -16,6 +20,10 @@ source ../set_variables.sh
|
||||||
set_variables "$@"
|
set_variables "$@"
|
||||||
|
|
||||||
# Build the image
|
# Build the image
|
||||||
echo -e "\nBuilding image..."
|
echo -e "\nBuilding the image..."
|
||||||
cd debian
|
cd debian
|
||||||
PACKER_LOG=1 packer build ${vars} -only=qemu amd64-debian.json
|
packer init -upgrade .
|
||||||
|
command="PACKER_LOG=1 packer build ${vars} -only=qemu packer.build.amd64-debian.hcl"
|
||||||
|
echo "# Running: $command"
|
||||||
|
if [ ${#vars} -eq 0 ];then exit 1;fi
|
||||||
|
PACKER_LOG=1 packer build ${vars} -only=qemu.debian build.amd64-debian.pkr.hcl || exit 1
|
||||||
|
|
|
@ -56,7 +56,7 @@ build {
|
||||||
"branch=${var.branch}",
|
"branch=${var.branch}",
|
||||||
"pack=${var.pack}"
|
"pack=${var.pack}"
|
||||||
]
|
]
|
||||||
script = "./raspiblitz.sh"
|
script = "./build.raspiblitz.sh"
|
||||||
}
|
}
|
||||||
|
|
||||||
provisioner "shell" {
|
provisioner "shell" {
|
|
@ -58,11 +58,12 @@ go mod download
|
||||||
go build || exit 1
|
go build || exit 1
|
||||||
|
|
||||||
# set vars
|
# set vars
|
||||||
source ../set_variables.sh
|
source <(../set_variables.sh "$@")
|
||||||
set_variables "$@"
|
|
||||||
|
|
||||||
cp ../arm64-rpi.pkr.hcl ./
|
cp ../build.arm64-rpi.pkr.hcl ./
|
||||||
cp ../raspiblitz.sh ./
|
cp ../build.raspiblitz.sh ./
|
||||||
|
|
||||||
echo -e "\n# Build the image"
|
echo -e "\n# Build the image"
|
||||||
packer build ${vars} arm64-rpi.pkr.hcl
|
command="packer build ${vars} build.arm64-rpi.pkr.hcl"
|
||||||
|
echo "# Running: $command"
|
||||||
|
$command || exit 1
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
#!/bin/bash -e
|
#!/bin/bash -e
|
||||||
|
|
||||||
# set vars
|
# set vars
|
||||||
source ../set_variables.sh
|
source <(../set_variables.sh "$@")
|
||||||
set_variables "$@"
|
|
||||||
|
|
||||||
# Build the image in docker
|
# build the image in docker
|
||||||
echo -e "\nBuild Packer image..."
|
echo -e "\nBuild the image..."
|
||||||
# from https://hub.docker.com/r/mkaczanowski/packer-builder-arm/tags
|
# from https://hub.docker.com/r/mkaczanowski/packer-builder-arm/tags
|
||||||
docker run --rm --privileged -v /dev:/dev -v ${PWD}:/build \
|
command="docker run --rm --privileged -v /dev:/dev -v ${PWD}:/build \
|
||||||
mkaczanowski/packer-builder-arm@sha256:0ff8ce0cf33e37be6c351c8bcb2643835c7f3525b7f591808b91c04238d45695 \
|
mkaczanowski/packer-builder-arm@sha256:0ff8ce0cf33e37be6c351c8bcb2643835c7f3525b7f591808b91c04238d45695 \
|
||||||
build ${vars} arm64-rpi.pkr.hcl
|
build ${vars} build.arm64-rpi.pkr.hcl"
|
||||||
|
echo "# Running: $command"
|
||||||
|
$command || exit 1
|
||||||
|
|
101
ci/set_variables.sh
Normal file → Executable file
101
ci/set_variables.sh
Normal file → Executable file
|
@ -1,46 +1,71 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
function set_variables() {
|
function set_variables() {
|
||||||
if [ $# -gt 0 ]; then
|
|
||||||
pack=$1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $# -gt 1 ]; then
|
declare -A params
|
||||||
github_user=$2
|
while (("$#")); do
|
||||||
fi
|
case "$1" in
|
||||||
|
--pack)
|
||||||
|
params[pack]="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--github_user)
|
||||||
|
params[github_user]="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--branch)
|
||||||
|
params[branch]="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
# arm64-rpi
|
||||||
|
--image_link)
|
||||||
|
params[image_link]="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
# arm64-rpi
|
||||||
|
--image_checksum)
|
||||||
|
params[image_checksum]="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
# amd64
|
||||||
|
# preseed.cfg
|
||||||
|
--preseed_file)
|
||||||
|
params[preseed_file]="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
# amd64
|
||||||
|
# uefi | bios
|
||||||
|
--boot)
|
||||||
|
params[boot]="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
# amd64
|
||||||
|
# none | gnome
|
||||||
|
--desktop)
|
||||||
|
params[desktop]="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
--)
|
||||||
|
shift
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Error: Invalid argument"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
if [ $# -gt 2 ]; then
|
# Reset the global vars string
|
||||||
branch=$3
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $# -gt 4 ]; then
|
|
||||||
image_link="$4"
|
|
||||||
image_checksum="$5"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Initialize the variables string
|
|
||||||
vars=""
|
vars=""
|
||||||
|
# Iterate over all keys in the params array
|
||||||
# Add the pack variable if it is defined
|
for key in "${!params[@]}"; do
|
||||||
if [ -n "${pack}" ]; then
|
# If the value for this key is not empty, add it to vars
|
||||||
vars="$vars -var pack=${pack}"
|
if [ -n "${params[$key]}" ]; then
|
||||||
|
vars="$vars -var $key=${params[$key]}"
|
||||||
fi
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
# Add the github_user variable if it is defined
|
export vars
|
||||||
if [ -n "${github_user}" ]; then
|
|
||||||
vars="$vars -var github_user=${github_user}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Add the branch variable if it is defined
|
|
||||||
if [ -n "${branch}" ]; then
|
|
||||||
vars="$vars -var branch=${branch}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Add the image_link variable if it is defined
|
|
||||||
if [ -n "${image_link}" ]; then
|
|
||||||
vars="$vars -var image_link=${image_link}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Add the image_checksum variable if it is defined
|
|
||||||
if [ -n "${image_checksum}" ]; then
|
|
||||||
vars="$vars -var image_checksum=${image_checksum}"
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue