Raspberry PI Basics

Tutorial

https://tutorials-raspberrypi.de/

https://www.raspberrypi.org/documentation/installation/installing-images/linux.md

Image auf SD installieren:

unzip 2020-05-27-raspios-buster-full-armhf.zip | 
dd bs=4M of=/dev/mmcblk0p1 iflag=fullblock oflag=direct status=progress; sync

Image kopieren

sudo dd if=/dev/[SD CARD DEVICE NAME] of=[IMAGE FILE NAME].iso bs=4M status=progress

Bei if= den Devicenamen ohne Partitions-ID nehmen, also "/dev/mmcblk0 ", nicht „/dev/mmcblk0p1“. Dann landen zwei Partitionen in einem Image.

In einem zweiten Terminal kann man den Kopierfortschritt beobachten, indem man ein Signal an den prozess schickt (geht in dd leider nicht direkt):

pkill -USR1 -x dd

Pishrink: https://github.com/Drewsif/PiShrink
verkleinert Image, sodass es sich beim ersten boot automatisch auf die Grösse der neuen SDcard vergrössert:

odysseus3:/run/media/thommie/ab51503b-6005-4c24-960f-415e289a2eb1 # pishrink.sh -v raspi05_backup2.img raspi05_backup2_shrink.img
pishrink.sh v0.1.3
pishrink.sh: Copying raspi05_backup2.img to raspi05_backup2_shrink.img... ...
pishrink.sh: Gathering data ...
Creating new /etc/rc.local
pishrink.sh: Checking filesystem ...
rootfs: 116220/3852672 files (0.3% non-contiguous), 1578868/15525376 blocks
resize2fs 1.46.5 (30-Dec-2021)
pishrink.sh: Shrinking filesystem ...
resize2fs 1.46.5 (30-Dec-2021)
Resizing the filesystem on /dev/loop0 to 1425936 (4k) blocks.
Begin pass 2 (max = 473157)
Relocating blocks             XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 3 (max = 474)
Scanning inode table          XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 4 (max = 9713)
Updating inode references     XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/loop0 is now 1425936 (4k) blocks long.

pishrink.sh: Shrinking image ...
pishrink.sh: Shrunk raspi05_backup2_shrink.img from 60G to 5.7G ...

Kopie raus schreiben

sudo dd if=~/raspbian_backup.img of=/dev/sdf

Image mounten

Partitionsstruktur des Images analysieren

odysseus3:/mnt # sfdisk -d /srv/downloads/raspi05_backup_310521.img 
label: dos
label-id: 0x91906680
device: /srv/downloads/raspi05_backup_310521.iso
unit: sectors
sector-size: 512

/srv/downloads/raspi05_backup_310521.img1 : start=        8192, size=      524288, type=c
/srv/downloads/raspi05_backup_310521.img2 : start=      532480, size=    60047360, type=83

Loopback devices erzeugen

losetup -P -f /srv/downloads/raspi05_backup_310521.iso

oder mit kpartx

odysseus3:~ # kpartx -a /srv/downloads/raspi05_backup_310521.iso

Dann werden die loop devices unter /dev/mapper erzeugt und sind mount-bar.

odysseus3:/mnt # mount -o loop /dev/mapper/loop0p1 /mnt/loop0p0/

Danach loop devices mit losetup -D entfernen.

Watchdog

https://diode.io/raspberry%20pi/running-forever-with-the-raspberry-pi-hardware-watchdog-20202/

OBS compile

sudo cmake -DUNIX_STRUCTURE=1 -DENABLE_PIPEWIRE=OFF -D-DENABLE_WAYLAND=OFF
-DBUILD_BROWSER=OFF -DCMAKE_INSTALL_PREFIX=/usr ..
sudo make -j4

OBS mit Software Rendering

OBS bzw. OPENGL versucht beim Starten standardmässig das Rendering über eine GPU, das geht im RASPI schief. Daher muss man über eine Umgebungsvariable das Software-Rendering hart definieren. Für OBS wird dafür der Desktop Shortcut angepasst:

/usr/share/applications/com.obsproject.Studio.desktop

und darin

Exec=env  LIBGL_ALWAYS_SOFTWARE=1 obs

Networking

Der RASPI nutzt dhcpcd als dhcp Client. Bridge settings nicht über /etc/interfaces setzen, sondern über systemd-networkd.

https://wiki.archlinux.org/title/systemd-networkd#Network_bridge_with_DHCP

rtmp Server für Streaming

https://blog.unixweb.de/video-streaming-server-mit-restreamer-2-0/

https://blog.unixweb.de/video-streaming-server-auf-einem-raspberry-pi/

Hier wird als Streaming Lösung der datarhei Restreamer von https://datarhei.com/ der FOSS GmbH Schweiz in einem Docker Container benutzt. Siehe https://hub.docker.com/r/datarhei/restreamer

Argon Gehäuse, Autostart

Das Argon Gehäuse ist in der Voreinstellung nicht auf Autostart eingerichtet, wenn der Netzstrom weg ist und wieder kommt. Dafür im Gehäuse den Jumper S1 von Position 1-2 nach 2-3 umsetzen_