This article outlines the complete process to configure a Raspberry Pi running Raspberry Pi OS Bookworm (Debian 12) as a StorMagic NSH witness service node. It covers OS installation, networking using NetworkManager, VNC setup (optional), NSH installation, ELF interpreter patching, and service startup.
Note: All images are clickable for enlarging, or can be opened in a new tab
Resolution/Information:
Table of Contents
- Install Raspberry Pi OS (Bookworm).
- Configure Hostname and DNS.
- Configure Networking with NetworkManager.
- Enable VNC (Optional).
- Install the StorMagic Witness Service.
- Patch the ELF Interpreter Paths.
- Start and Enable the Service.
- Verify Service.
- Utilize Witness.
Raspberry Pi OS Timeline Summary:
Raspberry Pi OS started using a 64-bit kernel with a 32-bit userland as a transitional step around the late Raspberry Pi OS Buster and early Bullseye era — specifically:
- Before 2020 All Raspberry Pi OS builds used a 32-bit kernel and 32-bit userland (armhf).
This ensured full compatibility with all models of the Pi, including early ones like the Pi 1 and Zero.
- 2020 – 2021 (Late Buster → Bullseye Era)
Raspberry Pi Foundation introduced a hybrid build. - 64-bit kernel (aarch64).
- 32-bit userland (armhf).
This allowed:
- Better performance on Pi 3 and Pi 4.
- Use of more memory (>3 GB) with newer boards.
- Compatibility with 32-bit-only applications.
This hybrid mode became the default in many Bullseye images unless you explicitly chose the full 64-bit image.
- 2022 Onward (Full 64-bit available) Full 64-bit Raspberry Pi OS was released for general use (kernel + userland both 64-bit).
But hybrid 64-bit kernel + 32-bit userland remained common, especially for legacy support.
key System-level changes made in Debian 12 (Bookworm).
/lib/ld-linux.so.3 removed in Debian 11 (Bullseye) and prior, 32-bit ARM armhf binaries compiled with: /lib/ld-linux.so.3 could still run because that path existed as a legacy symlink (usually pointing to /lib/ld-linux-armhf.so.3).
Note: In Debian 12 (Bookworm), that legacy interpreter path was completely removed for standards compliance (FHS + multiarch cleanup).
As a result:
- Older statically compiled binaries fail with "cannot execute: required file not found."
Options for fixing the break in path:
- Rebuilding against /lib/ld-linux-armhf.so.3
- Manually adding a symlink (ln -s /lib/ld-linux-armhf.so.3 /lib/ld-linux.so.3)
- Using patchelf to rewrite the interpreter path in ELF headers
Networking Stack: dhcpcd replaced by NetworkManager.
In Debian 12, the default Raspberry Pi OS now uses NetworkManager instead of dhcpcd.
Differences:
- Feature dhcpcd (Bullseye & earlier) vs. NetworkManager (Bookworm).
- Simplicity Lightweight, config-driven vs. D-Bus/GUI-integrated, policy-based.
- Config files /etc/dhcpcd.conf /etc/NetworkManager/.
- Wi-Fi & eth management Manual/static easier to script GUI-friendly, but needs profiles.
- Autostart behavior dhcpcd controlled directly systemd-networkd & NM now take over.
- Compatibility Works well with headless Pi Needs adjustment for CLI/headless.
Note: Migration to NetworkManager may break existing headless configs if dhcpcd.conf was previously used to define static IPs or DNS settings.
Note: The arm package will use terms like 'NSH' meaning neutral storage host versus 'Witness'.
1. Install Raspberry Pi OS (Bookworm)
Use the official Raspberry Pi Imager tool to write the operating system to a microSD card.
- Download Raspberry Pi Imager: https://www.raspberrypi.com/software.
- If you scroll down to all options.
- Select “Raspberry Pi OS Lite (32-bit)” from the “Other” section.
You want to ensure you select the 32 bit option:
This will be a 64 bit kernel with what is referred to as a 32 bit Userland for running 32 bit applications, while being able to utilze the capabilities of a 64 bit Kernel.
- Option 1 is a 64 bit Kernel and a 64 bit Userland so it will not work with 32 bit applicaitons.
- Option 3 is now legacy but still viable. If Bullseye is what you'd like please see this other link. Installing an SvSAN witness on Raspberry Pi (Raspbian 32bit) – StorMagic (Bullseye)
-
- Click the gear icon for advanced options:
- Set hostname (e.g. smwitness.yourdomain).
- Enable SSH.
- Set username and password.
- Optionally configure Wi-Fi credentials.
- Write the image to the microSD card.
- Insert the card into the Raspberry Pi and boot.
- Click the gear icon for advanced options:
2. Configure Hostname and DNS
Set a unique hostname and ensure it resolves properly on the network.
- To set the hostname:
sudo hostnamectl set-hostname smwitness.yourdomain
- Add it to the hostfile: /etc/hosts
- Example 10.x.x.x hostname.FQDN (Long name) "Space" hostname (Shortname).
- This ensures local resolution of the hostname for services that rely on FQDN.
3. Configure Networking with NetworkManager.
- Debian 12 and Bookworm Raspberry Pi OS now use NetworkManager by default instead of dhcpcd.
- Enable / Activate NetworkManager:
sudo systemctl enable NetworkManager
sudo systemctl start NetworkManager
- Set a static IP address:
nmcli connection modify eth0 ipv4.addresses 10.10.10.100/24
nmcli connection modify eth0 ipv4.gateway 10.10.10.1
nmcli connection modify eth0 ipv4.dns "10.10.10.5"
nmcli connection modify eth0 ipv4.method manual nmcli connection up eth0
These settings persist across reboots and support policy-based configuration.
4. Enable VNC (Optional).
- To enable GUI access over VNC:
- For steps on setting up Realvnc please see the below link.
Raspberry Pi VNC: how to set up a remote desktop | RealVNC
- Install the UI components and VNC server:
- Enable VNC via raspi-config:
- Navigate to: Interface Options > VNC > Enable
You can now connect via VNC using a VNC viewer pointed to the Pi’s IP address.
5. Install the StorMagic Witness Service.
- The package needed can be downloaded from the following link: https://nextcloud.stormagic.com/index.php/s/2gjx2rriWk2BQYK
- The software will need to be obtained and transferred to the device.
Options: Either download and unzip from the GUI or transfer it via SCP if not using the GUI.
- If using the automation toolkit, extract the provided bundle:
Patch the binaries:
This restores compatibility with the new dynamic linker location in Bookworm.
7. Start and Enable the Service.
*This step is for if something doesn't complete successfully or you prefer to do it manually. *
Start and enable the witness service:
Check the service status:
You should now see smdisco and smclusterd running.
8. Verify Operation.
Check that the service is listening on UDP ports:
Expected output includes lines like:
9. Utilize Witness.
From the SvHCI interface, confirm that the witness shows up under the discovery tab or can be manually added by IP or FQDN.
If you do not see it there already you will need to add it as an entry on both hosts in order to use it in the cluster. Select to add an entry and apply the devices information and click apply.
On the Discovery tab select to edit the cluster. Apply any notes and using the drop down select the new witness and click apply.
Staying on the discovery tab you will now see the cluster witness is the new Rasberry Pi.
Within the targets tab you now will see the targets being monitored by this witness.
Notes:
-
If DNS resolution is unavailable, use static IP discovery.
-
Ensure firewalls or VLAN restrictions do not block UDP traffic to/from the witness. SvSAN 6.3.x - Port Numbers – StorMagic
-
If the interpreter path patching is skipped, the daemons will fail silently or show "cannot execute: required file not found".
For further information or queries please contact support@stormagic.com
See Also
Installing an SvSAN witness on Raspberry Pi (Raspbian 32bit) – StorMagic (pre-Bookworm).
Comments
0 comments
Article is closed for comments.