# Raspberry Pi OS

[Link to Raspberry Pi](https://www.raspberrypi.com/)

# Raspberry Pi OS - IPv6 Deaktivieren/Reaktivieren

<p class="callout info">Hier wird beschrieben wie beim Raspberry OS IPv6 deaktiviert werden kann.</p>

Um IPv6 zu deaktivieren in der **/boot/firmware/cmdline.txt** den eintrag **ipv6.disable=1** hinzufügen.

```bash
echo "ipv6.disable=1" >> /boot/firmware/cmdline.txt
```

Zum Reaktivieren folgenden Befehl ausführen:

```bash
sed -i 's/ipv6.disable=1/ipv6.disable=0/g' /boot/firmware/cmdline.txt
```

Um es erneut zu Deaktivieren folgenden Befehl ausführen:

```bash
sed -i 's/ipv6.disable=0/ipv6.disable=1/g' /boot/firmware/cmdline.txt
```

# Raspberry Pi OS - Backup / Restore

<p class="callout info">Hier wird beschrieben wie ein Backup einer Raspberry Pi OS Installation auf eine Imagedatei und ein Restore von dieser funktioniert.</p>

#### Backup

##### Linux

Um ein Backup einer Raspberry Pi OS Installation durchzuführen, die MicroSD Karte in einen Linux-PC stecken und mit **dd** ein Image erstellen:

```bash
dd if=/dev/mmcblk0 of=raspios.img status=progress
```

Danach mit **sync** sicherstellen, dass alle Schreib/Lesevorgänge abgeschlossen sind:

```bash
sync
```

#### Restore

##### Linux

Das Image kann mit **dd** auf eine MicroSD mit der selben oder größerer Größe geschrieben werden:

<p class="callout warning">Falls nur eine kleinere Speicherkarte zu Verfügung steht, muss das Image nach dieser [Anleitung](https://funktioniert.org/books/raspberry-pi-os/page/raspberry-pi-os-verkleinern-einer-backup-imagedatei) verkleinert werden.</p>

```bash
dd if=raspios.img of=/dev/mmcblk0 status=progress
```

Danach mit **sync** sicherstellen, dass alle Schreib/Lesevorgänge abgeschlossen sind:

```bash
sync
```

<p class="callout info">Im Anschluss die root Partition im **raspi-config** unter **Advanced Options/Expand Filesystem** erweitern.</p>

##### Windows

Auf einem Windows-PC kann das Image mit einen Tool wie [Rufus](https://rufus.ie/de/) auf die Speicherkarte geschrieben werden.

<p class="callout info">Im Anschluss die root Partition im **raspi-config** unter **Advanced Options/Expand Filesystem** erweitern.</p>

# Raspberry Pi OS - WiFi konfigurieren mit dem NetworkManager (nmcli)

<p class="callout info">Hier wird beschrieben wie man eine WiFi Netzwerkverbindung mit dem NetworkManager konfiguriert.</p>

#### Konfigurieren der WLAN Verbindung

<p class="callout info">RaspiOS benötigt die Einstellung der **WiFi localisation** in **raspi-config** vor hinzufügen der Verbindung!</p>



##### Netzwerkverbindung hinzufügen:

Als erstes den Namen des WLAN-Interfaces anzeigen lassen:

```
nmcli
```

Der **con-name** kann frei vergeben werden, dieser wird später bei allen Konfigurationen verwendet.

Die SSID anzeigen lassen:

```
nmcli dev wifi
```

<p class="callout info">Versteckte (hidden) SSIDs werden nicht angezeig!</p>

Die Verbindung hinzufügen (im Beispiel: con-name: home-wifi, SSID: myhomewifi):

```bash
nmcli connection add type wifi con-name "CONNECTIONNAME" ifname wlan0 ssid "SSID" \
wifi-sec.key-mgmt wpa-psk wifi-sec.psk "PASSWORD"
```

<p class="callout info">Um eine versteckte Netzwerkverbindung hinzuzufügen wird **wifi.hidden yes** angefügt.</p>

```bash
nmcli connection add type wifi con-name "CONNECTIONNAME" ifname wlan0 ssid "SSID" \
wifi-sec.key-mgmt wpa-psk wifi-sec.psk "PASSWORD" wifi.hidden yes
```


##### Ändern auf WPA3

Ändern auf WPA3-PSK:

```bash
nmcli connection modify "CONNECTIONNAME" wifi-sec.key-mgmt sae
```

##### Ändern von Anmeldedaten

**<span style="font-family: Liberation Sans, sans-serif;"><span style="font-weight: normal;">Ändern des Passworts</span></span>**<span style="font-family: Liberation Sans, sans-serif;"><span style="font-weight: normal;">:</span></span>

```bash
nmcli connection modify "CONNECTIONNAME" wifi-sec.psk "PASSWORD"
```


##### Verbinden mit dem WLAN-Netzwerk

**<span style="font-family: Liberation Sans, sans-serif;"><span style="font-weight: normal;">Verbindung aktivieren</span></span><span style="font-family: Liberation Sans, sans-serif;"><span style="font-weight: normal;">:</span></span>**

```bash
nmcli connection up "CONNECTIONNAME"
```

<span style="font-family: Liberation Sans, sans-serif;">Verbindung testen</span><span style="font-family: Liberation Sans, sans-serif;">:</span>

```bash
nmcli connection show "CONNECTIONNAME"
```

<p class="callout info">Der Wert **connection.autoconnect-retries** gibt an wieviele Verbindungsversuche durchgeführt werden. Ist der Wert -1 werden vier Versuche durchgeführt. Bei 0 werden unendliche Versuche durchgeführt.</p>

Ändern der Anzahl Verbindungsversuche:

```bash
nmcli connection modify "CONNECTIONNAME" connection.autoconnect-retries 0
```


##### Netzwerkverbindung entfernen

<span style="font-family: Liberation Sans, sans-serif;">Entfernen der Verbindung mit delete:</span>

```bash
nmcli connection delete "CONNECTIONNAME"
```

# Raspberry Pi OS - WiFi / Bluetooth deaktivieren

<p class="callout info">Hier wird beschrieben wie beim Raspberry OS WiFi und/oder Bluetooth deaktiviert werden kann.</p>

#### Permanent

Um beide permanent zu deaktivieren, in der **/boot/firmware/config.txt** am Ende folgendes hinzufügen:

```
[all]
dtoverlay=disable-wifi
dtoverlay=disable-bt
```

# Raspberry Pi OS  - Verkleinern einer Backup Imagedatei

<p class="callout info">Hier wird beschrieben wie eine Imagedatei, welche nach der Anleitung [Raspberry Pi OS - Backup / Restore](https://funktioniert.org/books/raspberry-pi-os/page/raspberry-pi-os-backup-restore) erstellt wurde, verkleinert werden kann. </p>

<p class="callout warning">Zum Verkleinern der Partition wird **gparted** verwendet, falls es noch nicht installiert ist:</p>

```bash
apt install gparted 
```

Mit **fdisk** die Partitionen der Imagedatei auflisten:

```bash
fdisk -l rpios.img
```

```shell
Disk rpios.img: 29.72 GiB, 31914983424 bytes, 62333952 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xdacc6ddd

Device         Boot   Start      End  Sectors  Size Id Type
rpios.img1            16384  1064959  1048576  512M  c W95 FAT32 (LBA)
rpios.img2          1064960 62333951 61268992 29.2G 83 Linux
```

<p class="callout info">Notieren des Startsektors der 2. Partition (1064960)</p>

Mit **losetup** ein Loopdevice mit dem Inhalt der 2. Partition der Imagedatei erstellen, als offset wird der Startpunkt (Startsektor\*512) der 2. Partition angegeben:

```bash
losetup /dev/loop99 rpios.img -o $((1064960*512))
```

Mit **gparted** die Partition verkleinern:

```bash
gparted /dev/loop99
```

Verkleinern auf Minimum plus etwas Reserve (~100MB)

<p class="callout info">Notieren der neuen Größe aus dem Infofenster (z.B. 3788800K)</p>

Das Loopdevice wieder löschen:

```bash
losetup -d /dev/loop99
```

Mit **losetup** ein Loopdevice aus der Imagedatei erstellen:

```bash
losetup /dev/loop99 rpios.img
```

Mit **fdisk** die 2. Partition löschen und mit der neuen Größe wieder erstellen:

```bash
fdisk /dev/loop99
```

- Mit d 2 die 2. partition löschen
- Mit n p 2 eine neue 2.Partition anlegen
- Start der 2. Partition 1064960 angeben
- Bei neuer Größe +3788800K angeben
- Mit w in Tabelle schreiben
- Mit q beenden

Mit **fdisk** die Partitionen auflisten:

```bash
fdisk -l /dev/loop99
```

<p class="callout info">Notieren des Endsektors der 2. Partition (z.B. 8642559)</p>

Das Loopdevice wieder löschen:

```bash
losetup -d /dev/loop99
```

Verkleinern der Imagedatei mit **truncate** auf die Größe (Endsektor\*512):

```bash
truncate -s $(((8642559+1)*512)) rpios.img
```

Überprüfen des Ergebnisses mit **fdisk**:

```bash
fdisk -l rpios.img
```

# Raspberry Pi OS - Watchdog

<p class="callout info">Hier wird beschrieben wie der Hardware Watchdog für einen Raspberry Pi aktiviert wird.</p>

##### Aktivieren des Hardware Watchdogs

In der Datei **/boot/firmware/config.txt** unter **\[all\]** folgenden Eintrag hinzufügen:

```shell
dtparam=watchdog=on
```

Weitere Schritte befinden sich in der [Anleitung zur Installation und Konfiguration des Pakets watchdog](https://funktioniert.org/books/sicherheit/page/linux-watchdog).