Skip to content

Commit 79256e4

Browse files
authored
os: Switch to bookworm, drop bullseye support (#543)
* Bump forklift and pallet-standard * Update `forklift` invocation in OS build scripts * Undo autoformatter regression * Bump pallet-standard * Stop automatically building bullseye images * Update `CHANGELOG.md` * Build bookworm-based fairscope-latest images * Fix typo in `CHANGELOG.md` * Update `CHANGELOG.md` * Remove bullseye-specific OS build/setup code * Update nonstandard install guide and make it lower-maintenance * Add a bit of clarification to the nonstandard install guide * Add a link to a tech ref doc from the nonstandard install guide
1 parent f377f39 commit 79256e4

File tree

9 files changed

+32
-150
lines changed

9 files changed

+32
-150
lines changed

.github/workflows/build-os-bookworm.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ on:
1717
- 'software/**'
1818
- '!software/CHANGELOG.md'
1919
- '.github/workflows/build-os*.yml'
20-
#merge_group:
20+
merge_group:
2121
workflow_dispatch:
2222
inputs:
2323
git-ref:
@@ -37,6 +37,7 @@ jobs:
3737
variant:
3838
- adafruithat
3939
- planktoscopehat
40+
- fairscope-latest
4041
base_variant_name:
4142
- lite
4243
permissions:

.github/workflows/build-os-bullseye-dx.yml

Lines changed: 0 additions & 55 deletions
This file was deleted.

.github/workflows/build-os-bullseye.yml

Lines changed: 0 additions & 56 deletions
This file was deleted.

.github/workflows/build-os.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,7 @@ jobs:
330330
version="$(printf "%.7s" "${{ github.sha }}")"
331331
fi
332332
variant="${{ inputs.variant }}"
333-
if [[ "${{ inputs.base_release_name }}" != "bullseye" ]]; then
333+
if [[ "${{ inputs.base_release_name }}" != "bookworm" ]]; then
334334
variant="$variant.${{ inputs.base_release_name }}"
335335
fi
336336
if [[ "${{ inputs.arch }}" != "arm64" ]]; then

documentation/docs/setup/software/nonstandard-install.md

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
# Non-Standard Installation
22

3-
This page provides instructions for setting up non-standard versions of the PlanktoScope OS on a PlanktoScope. The PlanktoScope project also uses this same process for creating the official PlanktoScope software SD card images used in the [standard software installation process](standard-install.md).
3+
This page provides instructions for setting up non-standard versions of the PlanktoScope OS on a PlanktoScope. The PlanktoScope project uses an automated version of this process for creating the official PlanktoScope software SD card images used in the [standard software installation process](standard-install.md).
44

55
## Prerequisites
66

77
This guide assumes that:
88

99
1. You have previous experience with using the command-line terminal on the Raspberry Pi OS or another Linux distribution.
1010
2. You have already confirmed that your PlanktoScope works without any problems with software installed by the standard PlanktoScope software setup process.
11-
3. You already know how to use the PlanktoScope software.
11+
3. You are already familiar with the PlanktoScope software and the way the PlanktoScope project does [versioning](../../reference/software/release-process.md) of the PlanktoScope OS.
1212

13-
If you have not used the PlanktoScope software before, you should first start with the standard software setup process in order to troubleshoot any problems with your PlanktoScope hardware; you can then try the non-standard setup process afterwards.
13+
If you have not used the PlanktoScope software before, you should first start with the standard software setup process in order to troubleshoot any problems with your PlanktoScope hardware; you can then try the non-standard setup process later.
1414

1515
In order to complete the non-standard setup process, you will need all of the following:
1616

17-
1. A Raspberry Pi computer. We only test to ensure that the PlanktoScope software works on the Raspberry Pi 4; it may or may not work on the Raspberry Pi 3, and it does not yet work on the Raspberry Pi 5.
17+
1. A Raspberry Pi computer. Each version of PlanktoScope OS is only compatible with certain versions of Raspberry Pi computers; for more information, please check the [software product specifications](../../reference/software/product-specs.md) for the version of PlanktoScope OS which you want to set up.
1818
2. A keyboard connected to your Raspberry Pi.
1919
3. A display connected to your Raspberry Pi.
2020
4. A micro-SD card for your Raspberry Pi.
@@ -25,17 +25,29 @@ In order to complete the non-standard setup process, you will need all of the fo
2525

2626
### Download a Raspberry Pi OS SD card image
2727

28-
The setup scripts for the PlanktoScope OS assume that you will be setting up the PlanktoScope software on a 64-bit version of the Raspberry Pi OS with Debian version 11 (bullseye), preferably the version released on 2023-03-12. You can choose any of the following three variants of that version of the Raspberry Pi OS, depending on your needs:
28+
#### Choose an appropriate Raspberry Pi OS release version
2929

30-
- ["Raspberry Pi OS with desktop"](https://downloads.raspberrypi.com/raspios_oldstable_arm64/images/raspios_oldstable_arm64-2024-03-12/2024-03-12-raspios-bullseye-arm64.img.xz)
31-
- ["Raspberry Pi OS with desktop and recommended software"](https://downloads.raspberrypi.com/raspios_oldstable_full_arm64/images/raspios_oldstable_full_arm64-2024-03-12/2024-03-12-raspios-bullseye-arm64-full.img.xz)
32-
- ["Raspberry Pi OS Lite"](https://downloads.raspberrypi.com/raspios_oldstable_lite_arm64/images/raspios_oldstable_lite_arm64-2024-03-12/2024-03-12-raspios-bullseye-arm64-lite.img.xz)
33-
34-
The standard PlanktoScope software SD card images are built on the Raspberry Pi OS Lite image, which only provides a command-line interface, without a graphical desktop environment or web browser; because the PlanktoScope's graphical user interface must be accessed from a web browser, you might prefer to use the "Raspberry Pi OS with desktop" image in order to have a graphical desktop environment with a web browser. This would allow you to operate the PlanktoScope by plugging in a display, keyboard, and mouse to your Raspberry Pi; otherwise, you will have to connect to the PlanktoScope from another device over Ethernet or Wi-Fi in order access the PlanktoScope's graphical user interface.
30+
The setup scripts for the PlanktoScope OS assume that you will be setting up the PlanktoScope software on a 64-bit version of the Raspberry Pi OS with the same Raspberry Pi OS release name (e.g. `bookworm`) and release date (e.g. `2024-11-19`) as what we use in building our official SD card images of the PlanktoScope OS.
3531

3632
!!! warning
33+
The PlanktoScope OS setup scripts are very likely to work incorrectly (in obvious or subtle ways) on other versions of Raspberry Pi OS. For example, we are aware that some Raspberry Pi OS versions come with buggy or incompatible versions of system packages required by PlanktoScope OS.
34+
35+
Here is how you can determine the appropriate release name and release date to use for the version of PlanktoScope OS which you want to set up:
36+
37+
1. Base OS release name: check the "distro" information for the base operating system for that version of PlanktoScope OS in the [software product specifications](../../reference/software/product-specs.md). For example, the section for PlanktoScope OS v2025.0.0 lists its base distro as "Raspberry Pi OS 12 (bookworm)", so the base OS release name is `bookworm`.
38+
2. Base OS release date: check the `base_release_date` field of the matching `build-os-{base OS release name}.yml` file (e.g. `build-os-bookworm.yml`) in the `.github/workflows` subdirectory of the PlanktoScope OS repository at that version of the PlanktoScope OS. For example, v2025.0.0's required base release date might be something like `2024-11-19`.
39+
40+
If you need help determining this information, please post a message in the `#6-dev-software` channel on the PlanktoScope Slack and mention the version of the PlanktoScope OS which you want to set up with this non-standard method, so that we can help you.
41+
42+
#### Choose an appropriate Raspberry Pi OS variant
43+
44+
The standard PlanktoScope software SD card images are built on the Raspberry Pi OS Lite image for the appropriate release version of Raspberry Pi OS. The Lite image only provides a command-line interface, without a graphical desktop environment or web browser. Because the PlanktoScope's graphical user interface must be accessed from a web browser, you might prefer to use the "Raspberry Pi OS with desktop" image in order to have a graphical desktop environment with a web browser. This would allow you to operate the PlanktoScope by plugging in a display, keyboard, and mouse to your Raspberry Pi; otherwise, you will have to connect to the PlanktoScope from another device over Ethernet or Wi-Fi in order to access the PlanktoScope's graphical user interface.
45+
46+
We also build and use (but we don't officially release or support) developer-focused SD card images (which we label "-dx" as an abbreviation for "developer experience") which come with the Raspberry Pi OS graphical desktop environment (which is called "Raspberry Pi OS with desktop" in the Raspberry Pi OS download page). To learn more about these `-dx` images, please post a message in the `#6-dev-software` channel on the PlanktoScope Slack.
47+
48+
#### Download the correct Raspberry Pi OS image
3749

38-
The latest version of Raspberry Pi OS, with Debian version 12 (bookworm), can be downloaded from [the Raspberry Pi Operating system images page](https://www.raspberrypi.com/software/operating-systems/), but the PlanktoScope software setup scripts do not yet work on Debian version 12; that page also has links named "Archive" under the download buttons where you can find older versions with Debian version 11 (bullseye) under the "Raspberry Pi OS (Legacy)" section; those links are the same as the links we listed above.
50+
Once you have determined the appropriate release name, release date, and variant of Raspberry Pi OS, you should download the appropriate 64-bit version of Raspberry Pi OS from the [Raspberry Pi OS download page](https://www.raspberrypi.com/software/operating-systems/). If the appropriate release date is not shown on that page, you may need to use the "Archive" link in the section of that page corresponding to the appropriate release name and variant; with the "Archive" link, you can choose an image with the appropriate release date. If you need help, please post a message in the `#6-dev-software` channel on the PlanktoScope Slack and mention the release name, release date, and variant which you are trying to download.
3951

4052
### Write the OS image to an SD card
4153

software/CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,9 @@ All dates in this file are given in the [UTC time zone](https://en.wikipedia.org
1818

1919
### Changed
2020

21+
- (Breaking change; System) The official PlanktoScope OS images are now built on Raspberry Pi OS 12 (bookworm) instead of Raspberry Pi OS 11 (bullseye). No support will be given for running the PlanktoScope OS setup scripts on bullseye base images, and the OS setup scripts will not work on bullseye.
2122
- (Application: GUI) The Node-RED dashboard now initializes the Sample page's Dilution Factor field to 1.0, instead of leaving it empty.
22-
- (System: networking) Wi-Fi hotspot behavior and network connection management is now based on NetworkManager, in preparation for an upgrade to Raspberry Pi OS 12 (bookworm). Thus, NetworkManager is installed on bullseye-based images, while dhcpcd is now uninstalled on bullseye-based images. As part of this change the previous autohotspot service has been removed, as it's redundant with functionality provided by NetworkManager.
23+
- (System: networking) Wi-Fi hotspot behavior and network connection management is now based on NetworkManager, as part of an upgrade to Raspberry Pi OS 12 (bookworm). As part of this change the previous autohotspot service has been removed, as it's redundant with functionality now provided by NetworkManager.
2324

2425
### Removed
2526

software/distro/setup/base-os/networking/install.sh

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,6 @@ sudo -E apt-get install -y -o Dpkg::Progress-Fancy=0 \
1010
network-manager firewalld dnsmasq-base
1111
sudo systemctl enable NetworkManager.service
1212

13-
# Uninstall dhcpcd if we're on bullseye
14-
DISTRO_VERSION_ID="$(. /etc/os-release && echo "$VERSION_ID")"
15-
if [ "$DISTRO_VERSION_ID" -le 11 ]; then # Support Raspberry Pi OS 11 (bullseye)
16-
sudo -E apt-get purge -y -o Dpkg::Progress-Fancy=0 \
17-
dhcpcd5
18-
fi
19-
2013
# Set the wifi country
2114
# FIXME: instead have the user set the wifi country via a first-launch setup wizard, and do it
2215
# without using raspi-config. It should also be updated if the user changes the wifi country.

software/distro/setup/base-os/platform-hardware/config.sh

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
# it harder for our project to enable running the PlanktoScope software on computers besides the
1515
# Raspberry Pi. So we should avoid adding more raspi-config commands.
1616

17-
if ! command -v raspi-config &> /dev/null; then
17+
if ! command -v raspi-config &>/dev/null; then
1818
echo "Warning: raspi-config is unavailable, so no RPi-specific hardware configuration will be applied!"
1919
exit 0
2020
fi
@@ -24,17 +24,8 @@ sudo raspi-config nonint do_spi 0
2424
sudo raspi-config nonint do_i2c 0
2525

2626
# The following command enables the serial port and serial port console.
27-
# do_serial_cons and do_serial_hw are needed for Raspberry Pi OS 12 (bookworm) and above, while
28-
# do_serial is needed for Raspberry Pi OS (bullseye).
29-
DISTRO_VERSION_ID="$(. /etc/os-release && echo "$VERSION_ID")"
30-
if [ $DISTRO_VERSION_ID -ge 12 ]; then # Support Raspberry Pi OS 12 (bookworm)
31-
sudo raspi-config nonint do_serial_hw 0
32-
sudo raspi-config nonint do_serial_cons 0
33-
else # Support Raspberry Pi OS 11 (bullseye)
34-
sudo raspi-config nonint do_serial 0
35-
fi
27+
sudo raspi-config nonint do_serial_hw 0
28+
sudo raspi-config nonint do_serial_cons 0
3629

37-
# The following command enables the camera on the 32-bit Raspberry Pi OS (ARMv7):
38-
sudo raspi-config nonint do_camera 0
3930
# The following command disables legacy camera support so that we can use libcamera:
4031
sudo raspi-config nonint do_legacy 1

software/distro/setup/planktoscope-app-env/gps/install.sh

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,12 +12,7 @@ sudo -E apt-get install -y -o Dpkg::Progress-Fancy=0 \
1212
# The following command enables the serial port but disables the login shell over the serial port.
1313
# We use this because the serial port is reserved for a GPS device.
1414
# Note that this overrides a setting in the base-os/platform-hardware/config.sh script.
15-
DISTRO_VERSION_ID="$(. /etc/os-release && echo "$VERSION_ID")"
16-
if [ "$DISTRO_VERSION_ID" -ge 12 ]; then # Support Raspberry Pi OS 12 (bookworm)
17-
sudo raspi-config nonint do_serial_cons 1
18-
else # Support Raspberry Pi OS 11 (bullseye)
19-
sudo raspi-config nonint do_serial 2
20-
fi
15+
sudo raspi-config nonint do_serial_cons 1
2116

2217
# Enable automatic time update from GPSD
2318
file="/boot/config.txt"

0 commit comments

Comments
 (0)