Raspberry Pi: first experience and installation of Raspberry Pi OS Lite
0 (0)

By | 03/13/2026
Click to rate this post!
[Total: 0 Average: 0]

For those who don’t follow updates in the Telegram channel rtfmcoua or are visiting my blog for the first time, a reminder that for the last couple of months I’ve been building a “self-hosted home stack”, which already includes a couple of MikroTik devices and a ThinkCentre running FreeBSD.

On the ThinkCentre / FreeBSD I have a NAS with a ZFS mirror pool (see FreeBSD: Home NAS, part 1 – configuring ZFS mirror) and “central monitoring” with VictoriaMetrics + Grafana (see FreeBSD: Home NAS, part 10 – monitoring with VictoriaMetrics).

On top of all that happiness, I decided to add a separate machine for mini-monitoring, and also host things like Glance there (see Glance: setting up a self-hosted browser home page), since I turn off the ThinkCentre during long blackouts (although its power consumption is only about 20 Wh).

And… I once tried Arduino – cool stuff, but things never went beyond “Hello, World” (at least so far), and you can’t really host things like Uptime Kuma on an Arduino.

I’ve long wanted to play with Raspberry Pi, but previously couldn’t figure out “why the hell would I?” – and now, finally, an answer to that great question has appeared.

Choosing a Raspberry Pi

Honestly, I didn’t honestly choose much 🙂

Or rather, I did choose, because “wow, so cute!” – I accidentally came across the Raspberry Pi Compute Module 4 PoE Mini-Computer somewhere, imagined how nicely it would fit into my server rack, and decided to get it.

It looks like this:

There are newer Compute Module version 5 boards – but for my purposes, and especially for a first experience, version 4 is more than enough.

So, we have:

I bought it at https://minicomp.com.ua – not an ad, but the store seems solid, shipped quickly, support via phone/Telegram works, zero complaints.

The only thing I had to buy separately was mounting hardware.

Installing the operating system

A little bit of fun 🙂

Because it’s the first time, and this is not “insert a USB stick with a ready-made image”.

At first I wanted to install Debian, and it actually worked, but…

I couldn’t log in to the system :facepalm:

So I just installed Raspberry Pi OS Lite, and everything went (or rather – got in 🙂 ) without any issues.

However, since it’s a first experience – I’ll keep the process for Debian here as well.

Installing Raspberry Pi Debian

Download from raspi.debian.net:

[setevoy@setevoy-work ~] $ ls ~/Downloads/Rasp/
debian-13-raspi-arm64-daily.tar.xz

Extract it (although, as it turned out, you can skip this – see the simpler option in Installing Raspberry Pi OS Lite below):

[setevoy@setevoy-work ~] $ cd ~/Downloads/Rasp/
[setevoy@setevoy-work ~] $ tar xfp debian-13-raspi-arm64-daily.tar.xz 

The archive contains disk.raw – a full disk image with a ready-made GPT/MBR and boot partition:

[setevoy@setevoy-work ~] $ fdisk -l ~/Downloads/Rasp/disk.raw 
Disk /home/setevoy/Downloads/Rasp/disk.raw: 3 GiB, 3221225472 bytes, 6291456 sectors
...
Disklabel type: gpt
Disk identifier: 580A523C-E6C1-4021-8A56-D664D3C75FA2

Device                                    Start     End Sectors  Size Type
/home/setevoy/Downloads/Rasp/disk.raw1  1048576 6289407 5240832  2.5G Linux root (ARM-64)
/home/setevoy/Downloads/Rasp/disk.raw15    2048 1048575 1046528  511M EFI System

Partition table entries are not in disk order.

Connecting USB to the laptop

This also took a bit of time, because the USB boot switching scheme is very unfamiliar and not at all obvious.

Even felt some nostalgia for the times when you’d flip Primary/Slave jumpers on an HDD.

A picture for those who haven’t seen this in person:

On my CM4 the pins for enabling USB boot were found here:

There was no spare jumper, but you can take one from FAN/VDD:

Move the jumper, connect with a regular USB cable to the laptop, check devices – Broadcom should appear:

[setevoy@setevoy-work ~] $ lsusb | grep Broa
Bus 003 Device 024: ID 0a5c:2711 Broadcom Corp. BCM2711 Boot

Install rpiusbboot – the utility will connect to the Raspberry Pi Compute Module and mount its eMMC (embedded MultiMediaCard) disk to the laptop as a regular flash drive:

[setevoy@setevoy-work ~] $ yay -S rpiusbboot

Run it:

[setevoy@setevoy-work ~] $ sudo rpiusbboot 
RPIBOOT: build-date Feb 12 2026 version 20221215~105525 b41ab04a
Waiting for BCM2835/6/7/2711...
Loading embedded: bootcode4.bin
Sending bootcode.bin
Successful read 4 bytes 
Waiting for BCM2835/6/7/2711...
Loading embedded: bootcode4.bin
Second stage boot server
Cannot open file config.txt
Cannot open file pieeprom.sig
Loading embedded: start4.elf
File read: start4.elf
Cannot open file fixup4.dat
Second stage boot server done

Now we have a new disk in the system:

[setevoy@setevoy-work ~] $ lsblk 
NAME          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
sda             8:0    1  29.1G  0 disk  

Copy the image downloaded above:

[setevoy@setevoy-work ~] $ sudo dd if=~/Downloads/Rasp/disk.raw of=/dev/sda bs=4M status=progress conv=fsync

When done – disconnect the Pi’s power, move the jumper back to FAN/VDD, and boot in normal mode.

But… As I wrote above – I couldn’t log in.

There’s this gist with default logins:passwords – none of them worked.

The Debian documentation says that root has no password – but it wouldn’t let me in.

So I gave up on “clean” Debian and just took Raspberry Pi OS Lite, which is Debian-based anyway.

And honestly – it’s probably even better for the Pi.

Plus – got to see for the first time how to reinstall a system on eMMC.

Installing Raspberry Pi OS Lite

Switch the jumper again, connect USB to the laptop, run rpiusbboot once more.

Wipe everything from the Raspberry disk (CAREFULLY double-check the device!):

[setevoy@setevoy-work ~] $ sudo wipefs -a /dev/sda
/dev/sda: 8 bytes were erased at offset 0x00000200 (gpt): 45 46 49 20 50 41 52 54
/dev/sda: 2 bytes were erased at offset 0x000001fe (PMBR): 55 aa
/dev/sda: calling ioctl to re-read partition table: Success

Download the image from the Raspberry website, get the archive 2025-12-04-raspios-trixie-arm64-lite.img.xz.

Now do the same dd, but this time just pipe the image through xzcat:

[setevoy@setevoy-work ~] $ xzcat ~/Downloads/ISO/2025-12-04-raspios-trixie-arm64-lite.img.xz | sudo dd of=/dev/sda bs=4M status=progress conv=fsync

Move the jumper back, boot up, and – success!

Create a user, log in – everything works.

Enabling SSH

Surprise – but systemctl start sshd is not an option here 🙂

Although systemd is present in the system.

Run raspi-config:

setevoy@raspberrypi:~ $ sudo raspi-config

Go to Interface Options:

Select and enable SSH:

Connect:

[setevoy@setevoy-work ~] $ ssh 192.168.0.61
...
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
setevoy@raspberrypi:~ $ 

Run a system upgrade:

setevoy@raspberrypi:~ $ sudo apt update && sudo apt full-upgrade -y

And then configure hostname, timezone, and the rest of the needed system parameters.

Static IP on MikroTik

A bit about networking, though everything is fairly standard here – NetworkManager and nmcli.

I have a MikroTik, and currently the Raspberry Pi has a dynamic IP from the DHCP server pool:

Add a static lease for the Pi’s MAC address:

/ip dhcp-server lease add address=192.168.0.5 mac-address=2C:CF:67:59:14:9D comment=setevoy-pi

Remove the old one:

/ip dhcp-server lease remove 5

Check the connection on Raspberry:

setevoy@raspberrypi:~ $ nmcli device status
DEVICE  TYPE      STATE                   CONNECTION         
eth0    ethernet  connected               Wired connection 1 
lo      loopback  connected (externally)  lo

Then run either sudo nmcli device reapply eth0, or sudo nmcli device disconnect eth0 && sudo nmcli device connect eth0, or just reboot – and now we can connect via the new address:

[setevoy@setevoy-work ~] $ ssh 192.168.0.5
...
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Feb 12 11:54:41 2026 from 192.168.0.3
setevoy@raspberrypi:~ $ 

You can also add a new DNS record on MikroTik right away:

/ip dns static add name=pi.setevoy address=192.168.0.5 ttl=1d

Check it:

/ip dns static print where name=pi.setevoy

And verify from the work laptop:

[setevoy@setevoy-work ~]  $ dig pi.setevoy +short
192.168.0.5

That’s basically it.

Install Docker, Docker Compose, run Glance and Uptime Kuma.

From there, Uptime Kuma can be configured to send alerts to, for example, ntfy.sh – and have monitoring for your monitoring.

And here’s where my Pi lives:

I’ll write about the rack build separately in the final part of the Home NAS setup series.

Loading