centos:ansible:ffmuc-rpb4-ol

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
centos:ansible:ffmuc-rpb4-ol [25.02.2021 17:07. ] – [Kopieren des Ansible-Playbooks] ansible-playbook-ffmuc-offloader-auf_basis_raspberry-4b.v6.tar.gz wget-link korrigiert djangocentos:ansible:ffmuc-rpb4-ol [07.04.2022 18:58. ] – [Kopieren des Raspbian Images auf die microSD-Karte] django
Zeile 11: Zeile 11:
  
 ====== Inhalt ====== ====== Inhalt ======
 +
 +<WRAP center round alert 30%>
 +**ACHTUNG:** Artikel in Überarbeitung!!! **ACHTUNG:**
 +</WRAP>
 +
 +
 <WRAP center round tip 90%> <WRAP center round tip 90%>
 Das Kapitel hier ist in folgende Abschnitte strukturiert.  Das Kapitel hier ist in folgende Abschnitte strukturiert. 
Zeile 66: Zeile 72:
 Grundlegende Informationen zu **[[https://www.ansible.com/|Ansible]]** und dessen Umgang bei der täglichen Arbeit finden sich im Kapitel **[[centos:ansible:start|Ansible]]** hier im **[[:start|WIKI]]**. Grundlegende Informationen zu **[[https://www.ansible.com/|Ansible]]** und dessen Umgang bei der täglichen Arbeit finden sich im Kapitel **[[centos:ansible:start|Ansible]]** hier im **[[:start|WIKI]]**.
  
-==== Installation von Ansible ====+==== Installation von Ansible und Git ====
 Je nach verwendeter Systemumgebung installieren wir nun das vom Paketmaintainer zur Verfügung gestellte  **RPM** bzw. **DEB** Paket. Im Falle von RedHat basierenden Systemen wie **[[https://www.centos.org/|CentOS]]** oder **[[https://getfedora.org/|Fedora]]** benutzen wir das Paketverwaltungswerkzeug **YUM/DNF** oder im Falle von **[[https://www.debian.org/|Debian]]** und **[[https://ubuntu.com/|Ubuntu]]** das Werkzeug **APT**. Je nach verwendeter Systemumgebung installieren wir nun das vom Paketmaintainer zur Verfügung gestellte  **RPM** bzw. **DEB** Paket. Im Falle von RedHat basierenden Systemen wie **[[https://www.centos.org/|CentOS]]** oder **[[https://getfedora.org/|Fedora]]** benutzen wir das Paketverwaltungswerkzeug **YUM/DNF** oder im Falle von **[[https://www.debian.org/|Debian]]** und **[[https://ubuntu.com/|Ubuntu]]** das Werkzeug **APT**.
-   * RPM basierende Systeme: <code> # dnf install ansible</code> bzw. <code> # yum install ansible</code> +   * RPM basierende Systeme: <code> # dnf install ansible git</code> bzw. <code> # yum install ansible git</code> 
-   * DEB basierende Systeme: <code> # apt install ansible</code> bzw. als eigeloggter User via **''sudo''** mit <code> $ sudo apt install ansible</code>+   * DEB basierende Systeme: <code> # apt install ansible git </code> bzw. als eigeloggter User via **''sudo''** mit <code> $ sudo apt install ansible git</code> 
  
 ==== Einrichten der eigenen Ansible-Umgebung ==== ==== Einrichten der eigenen Ansible-Umgebung ====
 +=== Ansible Arbeitsverzeichnis ===
 +Für unsere Ansible-Aufgaben (Playbooks) legen wir uns nun im Home-Verzeichnis unseres Admin-Users ein zugehöriges Verzeichnis an.
 +   $ mkdir ~/ansible
 +
 +/*
 === Verzeichnis-Struktur === === Verzeichnis-Struktur ===
-/* 
-Für unseren Admininstrationsuser legen wir uns zu erst einmal die passende Orderstruktur im Homeverzeichnis an. 
-   $ mkdir -p ~/ansible/{inventory,playbooks/templates/Raspbian} 
- 
-Hieraus ergibt sich folgende Struktur: 
-<code>ansible/ 
-├── inventory 
-└── playbooks 
-    └── templates 
-        └── Raspbian</code> 
- 
-:GO: 
-*/ 
- 
 Gemäß **[[http://docs.ansible.com/ansible/latest/playbooks_best_practices.html|Ansible's Best Practices]]** gibt es durchaus einige Möglichkeiten wie man seine Playbooks organisiert. In aller Regel wird man hier die eigenen individuellen Bedürfnisse (seiner Unternehmung) vornan stellen.  Gemäß **[[http://docs.ansible.com/ansible/latest/playbooks_best_practices.html|Ansible's Best Practices]]** gibt es durchaus einige Möglichkeiten wie man seine Playbooks organisiert. In aller Regel wird man hier die eigenen individuellen Bedürfnisse (seiner Unternehmung) vornan stellen. 
  
Zeile 146: Zeile 144:
               ~/ansible/roles/common/{tasks,handlers,templates,files,vars,defaults,meta}/main.yml               ~/ansible/roles/common/{tasks,handlers,templates,files,vars,defaults,meta}/main.yml
  
 +*/
 === Ansible-Konfigurationsdatei === === Ansible-Konfigurationsdatei ===
 /* /*
Zeile 236: Zeile 235:
 Beim Parameter **''Hostname''** geben wir die IP-Adresse an, die unser **DHCP**-Server dem Raspberry verpasst an; in obigen Konfigurationsbeispiel hat unser Raspberry die IP-Adresse **''10.0.10.29''**. Die Datei mit dem Eingangs erzeugten **[[#erstellen_eines_ssh-schluesselpaares|SSH-Schlüssel]]** geben wir beim Parameter **''IdentityFile''** an. Beim Parameter **''Hostname''** geben wir die IP-Adresse an, die unser **DHCP**-Server dem Raspberry verpasst an; in obigen Konfigurationsbeispiel hat unser Raspberry die IP-Adresse **''10.0.10.29''**. Die Datei mit dem Eingangs erzeugten **[[#erstellen_eines_ssh-schluesselpaares|SSH-Schlüssel]]** geben wir beim Parameter **''IdentityFile''** an.
    
 +==== Klonen des GIT-Repositories (Ansible-Playbook) ====
 +
 +   $ cd ~/ansible
 +   $ git clone https://github.com/Django-BOfH/ffmuc-rpb4-ol.git .
 +Somit ergibt sich folgende Verzeichnis- und Dateistruktur:
 +<code>/ansible/
 +├── filter_plugins
 +│   └── main.yml
 +├── inventories
 +│   ├── production
 +│   │   └── hosts.yml
 +│   └── staging
 +│       └── hosts.yml
 +├── library
 +│   └── main.yml
 +├── LICENSE
 +├── module_utils
 +│   └── main.yml
 +├── README.md
 +├── roles
 +│   ├── basic
 +│   │   ├── defaults
 +│   │   │   └── main.yml
 +│   │   ├── files
 +│   │   │   └── main.yml
 +│   │   ├── handlers
 +│   │   │   └── main.yml
 +│   │   ├── meta
 +│   │   │   └── main.yml
 +│   │   ├── tasks
 +│   │   │   ├── hostname.yml
 +│   │   │   ├── hosts.yml
 +│   │   │   ├── main.yml
 +│   │   │   ├── reboot.yml
 +│   │   │   ├── rfkill.yml
 +│   │   │   ├── update.yml
 +│   │   │   └── usercomment.yml
 +│   │   ├── templates
 +│   │   │   ├── hosts.j2
 +│   │   │   └── main.yml
 +│   │   └── vars
 +│   │       └── main.yml
 +│   ├── batman
 +│   │   ├── defaults
 +│   │   │   └── main.yml
 +│   │   ├── files
 +│   │   │   └── main.yml
 +│   │   ├── handlers
 +│   │   │   └── main.yml
 +│   │   ├── meta
 +│   │   │   └── main.yml
 +│   │   ├── tasks
 +│   │   │   ├── backport.yml
 +│   │   │   ├── batmanstart.yml
 +│   │   │   ├── compile.yml
 +│   │   │   ├── install.yml
 +│   │   │   ├── interfaceconfigure.yml
 +│   │   │   ├── main.yml
 +│   │   │   ├── modulloads.yml
 +│   │   │   ├── reboot.yml
 +│   │   │   └── utilsinstall.yml
 +│   │   ├── templates
 +│   │   │   ├── batman-adv.module.j2
 +│   │   │   ├── dkms.j2
 +│   │   │   ├── interfaces.j2
 +│   │   │   └── main.yml
 +│   │   └── vars
 +│   │       └── main.yml
 +│   ├── client-mesh
 +│   │   ├── defaults
 +│   │   │   └── main.yml
 +│   │   ├── files
 +│   │   │   └── main.yml
 +│   │   ├── handlers
 +│   │   │   └── main.yml
 +│   │   ├── meta
 +│   │   │   └── main.yml
 +│   │   ├── tasks
 +│   │   │   ├── batmanmitwifi.yml
 +│   │   │   ├── batmanohnewifi.yml
 +│   │   │   ├── clientohnemesh.yml
 +│   │   │   ├── getvxlanid.yml
 +│   │   │   ├── main.yml
 +│   │   │   ├── meshohneclient.yml
 +│   │   │   └── meshundclient.yml
 +│   │   ├── templates
 +│   │   │   ├── interfaces_client_ohne_mesh.j2
 +│   │   │   ├── interfaces_mesh_mit_client.j2
 +│   │   │   ├── interfaces_mesh_ohne_client.j2
 +│   │   │   ├── main.yml
 +│   │   │   ├── rclocal_both.j2
 +│   │   │   └── rclocal_vxlan.j2
 +│   │   └── vars
 +│   │       └── main.yml
 +│   ├── common
 +│   │   ├── defaults
 +│   │   │   └── main.yml
 +│   │   ├── files
 +│   │   │   └── main.yml
 +│   │   ├── handlers
 +│   │   │   └── main.yml
 +│   │   ├── meta
 +│   │   │   └── main.yml
 +│   │   ├── tasks
 +│   │   │   └── main.yml
 +│   │   ├── templates
 +│   │   │   └── main.yml
 +│   │   └── vars
 +│   │       └── main.yml
 +│   ├── ext-respondd
 +│   │   ├── defaults
 +│   │   │   └── main.yml
 +│   │   ├── files
 +│   │   │   └── main.yml
 +│   │   ├── handlers
 +│   │   │   └── main.yml
 +│   │   ├── meta
 +│   │   │   └── main.yml
 +│   │   ├── tasks
 +│   │   │   ├── aliasgenerate.yml
 +│   │   │   ├── configgenerate.yml
 +│   │   │   ├── copyconfig.yml
 +│   │   │   ├── gitclone.yml
 +│   │   │   ├── gitinstall.yml
 +│   │   │   ├── main.yml
 +│   │   │   └── servicestartup.yml
 +│   │   ├── templates
 +│   │   │   ├── ext-respondd_alias.json.j2
 +│   │   │   ├── ext-respondd_config.json.j2
 +│   │   │   └── main.yml
 +│   │   └── vars
 +│   │       └── main.yml
 +│   ├── fastd
 +│   │   ├── defaults
 +│   │   │   └── main.yml
 +│   │   ├── files
 +│   │   │   └── main.yml
 +│   │   ├── handlers
 +│   │   │   └── main.yml
 +│   │   ├── meta
 +│   │   │   └── main.yml
 +│   │   ├── tasks
 +│   │   │   ├── directorygenerate.yml
 +│   │   │   ├── fastdconfigure.yml
 +│   │   │   ├── fastdgetsocket.yml
 +│   │   │   ├── fastdinstall.yml
 +│   │   │   ├── fastdkeygen.yml
 +│   │   │   ├── fastdsecretkeyget.yml
 +│   │   │   ├── fastdstartup.yml
 +│   │   │   └── main.yml
 +│   │   ├── templates
 +│   │   │   ├── fastd.j2
 +│   │   │   └── main.yml
 +│   │   └── vars
 +│   │       └── main.yml
 +│   ├── final
 +│   │   ├── defaults
 +│   │   │   └── main.yml
 +│   │   ├── files
 +│   │   │   └── main.yml
 +│   │   ├── handlers
 +│   │   │   └── main.yml
 +│   │   ├── meta
 +│   │   │   └── main.yml
 +│   │   ├── tasks
 +│   │   │   ├── main.yml
 +│   │   │   └── reboot.yml
 +│   │   ├── templates
 +│   │   │   └── main.yml
 +│   │   └── vars
 +│   │       └── main.yml
 +│   ├── hostapd
 +│   │   ├── defaults
 +│   │   │   └── main.yml
 +│   │   ├── files
 +│   │   │   └── main.yml
 +│   │   ├── handlers
 +│   │   │   └── main.yml
 +│   │   ├── meta
 +│   │   │   └── main.yml
 +│   │   ├── tasks
 +│   │   │   ├── configure.yml
 +│   │   │   ├── genconfig.yml
 +│   │   │   ├── install.yml
 +│   │   │   ├── main.yml
 +│   │   │   ├── servicestartup.yml
 +│   │   │   └── wlanbridging.yml
 +│   │   ├── templates
 +│   │   │   ├── hostapd.j2
 +│   │   │   ├── main.yml
 +│   │   │   └── rclocal_wifi.j2
 +│   │   └── vars
 +│   │       └── main.yml
 +│   ├── kvm_hostgen
 +│   │   ├── defaults
 +│   │   │   └── main.yml
 +│   │   ├── files
 +│   │   │   └── main.yml
 +│   │   ├── handlers
 +│   │   │   └── main.yml
 +│   │   ├── meta
 +│   │   │   └── main.yml
 +│   │   ├── tasks
 +│   │   │   ├── generate.yml
 +│   │   │   └── main.yml
 +│   │   ├── templates
 +│   │   │   └── main.yml
 +│   │   └── vars
 +│   │       └── main.yml
 +│   ├── kvm-new
 +│   │   ├── defaults
 +│   │   │   └── main.yml
 +│   │   ├── files
 +│   │   │   └── main.yml
 +│   │   ├── handlers
 +│   │   │   └── main.yml
 +│   │   ├── meta
 +│   │   │   └── main.yml
 +│   │   ├── tasks
 +│   │   │   └── main.yml
 +│   │   ├── templates
 +│   │   │   └── main.yml
 +│   │   └── vars
 +│   │       └── main.yml
 +│   ├── oled
 +│   │   ├── defaults
 +│   │   │   └── main.yml
 +│   │   ├── files
 +│   │   │   └── main.yml
 +│   │   ├── handlers
 +│   │   │   └── main.yml
 +│   │   ├── meta
 +│   │   │   └── main.yml
 +│   │   ├── tasks
 +│   │   │   ├── adafruitclone.yml
 +│   │   │   ├── adafruitconfig.yml
 +│   │   │   ├── i2c_arm.yml
 +│   │   │   ├── i2c-bcm2708.yml
 +│   │   │   ├── i2c-dev.yml
 +│   │   │   ├── main.yml
 +│   │   │   ├── packages.yml
 +│   │   │   ├── reboot.yml
 +│   │   │   ├── scriptclone.yml
 +│   │   │   ├── scriptconfig.yml
 +│   │   │   ├── scriptstartup.yml
 +│   │   │   └── scriptstart.yml
 +│   │   ├── templates
 +│   │   │   ├── bandwidth.j2
 +│   │   │   ├── config.j2
 +│   │   │   ├── main.yml
 +│   │   │   └── oled-bandwidth.j2
 +│   │   └── vars
 +│   │       └── main.yml
 +│   ├── vxlan
 +│   │   ├── defaults
 +│   │   │   └── main.yml
 +│   │   ├── files
 +│   │   │   └── main.yml
 +│   │   ├── handlers
 +│   │   │   └── main.yml
 +│   │   ├── meta
 +│   │   │   └── main.yml
 +│   │   ├── tasks
 +│   │   │   ├── configure.yml
 +│   │   │   ├── main.yml
 +│   │   │   └── vxlanstart.yml
 +│   │   ├── templates
 +│   │   │   ├── main.yml
 +│   │   │   ├── systemd-service-file.j2
 +│   │   │   └── vxlan-init.j2
 +│   │   └── vars
 +│   │       └── main.yml
 +│   └── wireguard
 +│       ├── defaults
 +│       │   └── main.yml
 +│       ├── files
 +│       │   └── main.yml
 +│       ├── handlers
 +│       │   └── main.yml
 +│       ├── meta
 +│       │   └── main.yml
 +│       ├── tasks
 +│       │   ├── brokerinform.yml
 +│       │   ├── checkup.yml
 +│       │   ├── configuration.yml
 +│       │   ├── genkeys.yml
 +│       │   ├── genlinklocal.yml
 +│       │   ├── install.yml
 +│       │   ├── main.yml
 +│       │   ├── radv-filter.yml
 +│       │   └── wireguardstart.yml
 +│       ├── templates
 +│       │   ├── broker.j2
 +│       │   ├── checkup.j2
 +│       │   ├── crontab.j2
 +│       │   ├── main.yml
 +│       │   ├── radv-filter.j2
 +│       │   └── uplink.j2
 +│       └── vars
 +│           └── main.yml
 +└── wireguard-offloader.yml
 +</code>
 ==== Kopieren des Ansible-Playbooks ==== ==== Kopieren des Ansible-Playbooks ====
 Nun können wir uns "endlich" daran machen unseren Offloader auf Basis eines Raspberry 4B zu bauen. Hierzu greifen wir auf folgendes Playbook zurück und laden es uns auf unseren Rechner: Nun können wir uns "endlich" daran machen unseren Offloader auf Basis eines Raspberry 4B zu bauen. Hierzu greifen wir auf folgendes Playbook zurück und laden es uns auf unseren Rechner:
Zeile 2100: Zeile 2401:
  
 ==== Download des auf Debian Buster basierenden Raspbian ==== ==== Download des auf Debian Buster basierenden Raspbian ====
-/* 
-Nachdem es aktuell((Stand: Februar 2020)) noch kein fertiges Gluon Image für das **[[https://www.raspberrypi.org/products/raspberry-pi-4-model-b/|Raspberry PI 4B]]** gibt, holen wir uns nun das aktuelle Raspbian auf unseren Rechner. Dies hat mitunter auch noch den Charme, dass wir bei Bedarf alle normalen Anwendungen wie Webserver, Chatserver oder z.B. den Unifi-Controller einfach installieren können.  
  
-Eine Anleitung zur manuellen Installation findet man auf der **[[https://www.raspberrypi.org/documentation/installation/installing-images/README.md|offiziellen Raspbian Seite]]**.  +Nachdem es aktuell((Stand: April 2022)) noch kein fertiges Gluon Image für das **[[https://www.raspberrypi.org/products/raspberry-pi-4-model-b/|Raspberry PI 4B]]** gibt, holen wir uns nun das aktuelle **[[https://www.raspberrypi.org/software/operating-systems/|Raspberry Pi OS]]** (früher unter dem Namen //Raspbian// bekannt) auf unseren Rechner. Dies hat mitunter auch noch den Charme, dass wir bei Bedarf alle normalen Anwendungen wie Webserver, Chatserver oder z.B. den Unifi-Controller einfach installieren können. 
- +
-   $ wget https://downloads.raspberrypi.org/raspbian_lite_latest +
- +
-Bevor wir nun das Archiv entpacken überprüfen wir noch die Integrität der heruntergeladenen Datei. Hierzu berechnen wir erst einmal die **SHA256**-Prüfsumme der Datei **raspbian_lite_latest**. +
-   $ sha256sum raspbian_lite_latest +
- +
-  12ae6e17bf95b6ba83beca61e7394e7411b45eba7e6a520f434b0748ea7370e8  raspbian_lite_latest +
- +
-Die Zeichenfolge überprüfen wir nun mit den Angaben auf der Seite: https://www.raspberrypi.org/downloads/raspbian/ +
-{{ :centos:ansible:raspbian_buster_lite.png?600 |Bild: Bildschirmhardcopy der Seite www.raspberrypi.org/downloads/raspbian/ (Stand: 16.02.2020)}} +
- +
- +
-Da sich beide SHA-Werte **__nicht__** unterscheiden können wir das herunter geladene ZIP-Archiv nun entpacken.    +
-   $ unzip raspbian_lite_latest +
- +
-<code>Archive:  raspbian_lite_latest +
-  inflating: 2020-02-13-raspbian-buster-lite.img   +
-</code> +
- +
-:GO: +
-*/ +
- +
-Nachdem es aktuell((Stand: Februar 2021)) noch kein fertiges Gluon Image für das **[[https://www.raspberrypi.org/products/raspberry-pi-4-model-b/|Raspberry PI 4B]]** gibt, holen wir uns nun das aktuelle **[[https://www.raspberrypi.org/software/operating-systems/|Raspberry Pi OS]]** (früher unter dem Namen //Raspbian// bekannt) auf unseren Rechner. Dies hat mitunter auch noch den Charme, dass wir bei Bedarf alle normalen Anwendungen wie Webserver, Chatserver oder z.B. den Unifi-Controller einfach installieren können. +
  
 Eine Anleitung zur manuellen Installation findet man auf der **[[https://www.raspberrypi.org/documentation/installation/installing-images/README.md|offiziellen Raspbian Seite]]**.  Eine Anleitung zur manuellen Installation findet man auf der **[[https://www.raspberrypi.org/documentation/installation/installing-images/README.md|offiziellen Raspbian Seite]]**. 
  
-   $ https://downloads.raspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf-2021-01-12/2021-01-11-raspios-buster-armhf-lite.zip+   wget https://downloads.raspberrypi.org/raspios_lite_arm64/images/raspios_lite_arm64-2022-01-28/2022-01-28-raspios-bullseye-arm64-lite.zip{,.sha256}
  
 Bevor wir nun das Archiv entpacken überprüfen wir noch die Integrität der heruntergeladenen Datei. Hierzu berechnen wir erst einmal die **SHA256**-Prüfsumme der Datei **raspbian_lite_latest**. Bevor wir nun das Archiv entpacken überprüfen wir noch die Integrität der heruntergeladenen Datei. Hierzu berechnen wir erst einmal die **SHA256**-Prüfsumme der Datei **raspbian_lite_latest**.
-   $ sha256sum 2021-01-11-raspios-buster-armhf-lite.zip +   $ sha256sum --check 2022-01-28-raspios-bullseye-arm64-lite.zip.sha256 
 +    
 +  2022-01-28-raspios-bullseye-arm64-lite.zip: OK
  
-  d49d6fab1b8e533f7efc40416e98ec16019b9c034bc89c59b83d0921c2aefeef  2021-01-11-raspios-buster-armhf-lite.zip+Da der SHA256-Prüfsummencheck positiv erfolgreich war und mit einem **OK** bestätigt wurde, können wir nun das Archiv entpacken. 
 +   $ unzip 2022-01-28-raspios-bullseye-arm64-lite.zip
  
-Die Zeichenfolge überprüfen wir nun mit den Angaben auf der Seitehttps://www.raspberrypi.org/downloads/raspbian/ +<code>Archive 2022-01-28-raspios-bullseye-arm64-lite.zip 
-{{ :centos:ansible:raspberry_pi_os_light.png?606 |Bild: Bildschirmhardcopy der Seite www.raspberrypi.org/software/operating-systems (Stand: 14.02.2021)}}+  inflating2022-01-28-raspios-bullseye-arm64-lite.img</code>
  
-Da sich beide SHA-Werte **__nicht__** unterscheiden können wir das herunter geladene ZIP-Archiv nun entpacken.    
-   $ unzip 2021-01-11-raspios-buster-armhf-lite.zip  
- 
-<code>Archive:  2021-01-11-raspios-buster-armhf-lite.zip 
-  inflating: 2021-01-11-raspios-buster-armhf-lite.img 
-</code> 
  
 ==== Kopieren des Raspbian Images auf die microSD-Karte ==== ==== Kopieren des Raspbian Images auf die microSD-Karte ====
-/* 
-Nun können wir das Image auf die MicroSD Karte, die wir später in den Raspberry 4B stecken kopieren. Wir werfen also am besten einmal einen Blick in das syslog unseres Arbeitsrechners und erkennen so das Device unserer Speicherkarte. 
-   # tail -f /var/log/syslog 
- 
-<code>Feb 16 21:47:29 T410 kernel: usb 1-1.2: new high-speed USB device number 6 using ehci-pci 
-Feb 16 21:47:29 T410 kernel: usb 1-1.2: New USB device found, idVendor=1908, idProduct=0226, bcdDevice= 1.11 
-Feb 16 21:47:29 T410 kernel: usb 1-1.2: New USB device strings: Mfr=0, Product=0, SerialNumber=0 
-Feb 16 21:47:29 T410 kernel: usb-storage 1-1.2:1.0: USB Mass Storage device detected 
-Feb 16 21:47:29 T410 kernel: scsi host4: usb-storage 1-1.2:1.0 
-Feb 16 21:47:29 T410 mtp-probe[38884]: checking bus 1, device 6: "/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2" 
-Feb 16 21:47:29 T410 mtp-probe[38884]: bus: 1, device: 6 was not an MTP device 
-Feb 16 21:47:29 T410 mtp-probe[38887]: checking bus 1, device 6: "/sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2" 
-Feb 16 21:47:29 T410 mtp-probe[38887]: bus: 1, device: 6 was not an MTP device 
-Feb 16 21:47:30 T410 kernel: scsi 4:0:0:0: Direct-Access     Generic  Mass-Storage     1.11 PQ: 0 ANSI: 2 
-Feb 16 21:47:30 T410 kernel: sd 4:0:0:0: Attached scsi generic sg2 type 0 
-Feb 16 21:47:30 T410 kernel: sd 4:0:0:0: [sdb] 62333952 512-byte logical blocks: (31.9 GB/29.7 GiB) 
-Feb 16 21:47:30 T410 kernel: sd 4:0:0:0: [sdb] Write Protect is off 
-Feb 16 21:47:30 T410 kernel: sd 4:0:0:0: [sdb] No Caching mode page found 
-Feb 16 21:47:30 T410 kernel: sd 4:0:0:0: [sdb] Assuming drive cache: write through 
-Feb 16 21:47:30 T410 kernel: sdb: sdb1 sdb2 < sdb5 > 
-Feb 16 21:47:30 T410 kernel: sd 4:0:0:0: [sdb] Attached SCSI removable disk 
-Feb 16 21:47:31 T410 kernel: EXT4-fs (sdb5): recovery complete 
-Feb 16 21:47:31 T410 kernel: EXT4-fs (sdb5): mounted filesystem with ordered data mode. Opts: (null) 
-Feb 16 21:47:31 T410 kernel: ext4 filesystem being mounted at /run/media/django/SETTINGS supports timestamps until 2038 (0x7fffffff) 
-Feb 16 21:47:31 T410 journal[1042]: Mounted /dev/sdb5 at /run/media/django/SETTINGS on behalf of uid 1000</code> 
- 
-In dem gezeigtem Fall handelt es sich also um die Gerätedatei **''/dev/sdb''**. Wir wissen also wie wir nun die zuvor heruntergeladene **[[#download_des_auf_debian_buster_basierenden_raspbian|Debian Buster Image-Datei]]** auf die MicroSD-Karte kopieren müssen. In der Regel hat der "normale Nutzer" keine Rechte um diese Gerätedatei anzusprechen, wir müssen also als Benutzer **root** oder mir den Rechten des Benutzers **root** die  Gerätedatei **'' /dev/sdb''** in diesem Konfigurationsbeispiel ansprechen. 
- 
-   # dd if=~/2020-02-13-raspbian-buster-lite.img of=/dev/sdb bs=4M status=progress conv=fsync 
- 
-Da wir später weder Tastatur noch Monitor an unseren Raspberry 4B anstecken wollen, diesen demnach im **headless**-Mode betreiben wollen und werden, legen wir noch eine Datei **''/boot/ssh''** auf der SD-Karte ab. Nach dem erneuten Anstecken der MicroSD-Karte wir der Speicher in der Regel im Verzeichnis **''/run/media/''** gemountet. Zum Anlagen der betreffenden Datei  **''ssh''** in dem Verzeichnis reicht also folgender Aufruf: 
-   # touch /run/media/django/boot/ssh 
- 
-Anschließend können wir nach einem unmounten des Gerätes **''/dev/sdb''** die Micro-SD-Karte in den Kartenslot des Raspberry 4B stecken und den Kleinstcomputer mit dem Netzwerk und dem zugehörigen Netzteil verbinden und starten. 
- 
-:GO: 
-*/ 
- 
- 
 Nun können wir das Image auf die MicroSD Karte, die wir später in den Raspberry 4B stecken kopieren. Wir werfen also am besten einmal einen Blick in das syslog unseres Arbeitsrechners und erkennen so das Device unserer Speicherkarte. Nun können wir das Image auf die MicroSD Karte, die wir später in den Raspberry 4B stecken kopieren. Wir werfen also am besten einmal einen Blick in das syslog unseres Arbeitsrechners und erkennen so das Device unserer Speicherkarte.
 <code> # tail -f /var/log/messages</code> bzw. <code> $ sudo tail -f /var/log/syslog</code> <code> # tail -f /var/log/messages</code> bzw. <code> $ sudo tail -f /var/log/syslog</code>
Zeile 2204: Zeile 2438:
 In dem gezeigtem Fall handelt es sich also um die Gerätedatei **''/dev/mmcblk0''**. Wir wissen also wie wir nun die zuvor heruntergeladene **[[#download_des_auf_debian_buster_basierenden_raspbian|Debian Buster Image-Datei]]** auf die MicroSD-Karte kopieren müssen. In der Regel hat der "normale Nutzer" keine Rechte um diese Gerätedatei anzusprechen, wir müssen also als Benutzer **root** oder mir den Rechten des Benutzers **root** die  Gerätedatei **''/dev/mmcblk0''** in diesem Konfigurationsbeispiel ansprechen. In dem gezeigtem Fall handelt es sich also um die Gerätedatei **''/dev/mmcblk0''**. Wir wissen also wie wir nun die zuvor heruntergeladene **[[#download_des_auf_debian_buster_basierenden_raspbian|Debian Buster Image-Datei]]** auf die MicroSD-Karte kopieren müssen. In der Regel hat der "normale Nutzer" keine Rechte um diese Gerätedatei anzusprechen, wir müssen also als Benutzer **root** oder mir den Rechten des Benutzers **root** die  Gerätedatei **''/dev/mmcblk0''** in diesem Konfigurationsbeispiel ansprechen.
  
-<code> # dd if=/home/django/Freifunk/2021-01-11-raspios-buster-armhf-lite.img of=/dev/mmcblk0 bs=4M status=progress conv=fsync</code> bzw. <code> $ sudo dd if=/home/django/Freifunk/2021-01-11-raspios-buster-armhf-lite.img of=/dev/mmcblk0 bs=4M status=progress conv=fsync</code>+<code> # dd if=/home/django/Freifunk/2022-01-28-raspios-bullseye-arm64-lite.img of=/dev/mmcblk0 bs=4M status=progress conv=fsync</code> bzw.  
 +<code> $ sudo dd if=/home/django/Freifunk/2022-01-28-raspios-bullseye-arm64-lite.img of=/dev/mmcblk0 bs=4M status=progress conv=fsync</code>
  
 Da wir später weder Tastatur noch Monitor an unseren Raspberry 4B anstecken wollen, diesen demnach im **headless**-Mode betreiben wollen und werden, legen wir noch eine Datei **''/boot/ssh''** auf der SD-Karte ab. Nach dem erneuten Anstecken der MicroSD-Karte wir der Speicher in der Regel im Verzeichnis **''/run/media/''** oder auch **''/media/''**gemountet. Zum Anlagen der betreffenden Datei  **''ssh''** in dem Verzeichnis reicht also folgender Aufruf, bei dem wir den Usernamen natürlich unseren Gegebenheiten entsprechend anpassen.: Da wir später weder Tastatur noch Monitor an unseren Raspberry 4B anstecken wollen, diesen demnach im **headless**-Mode betreiben wollen und werden, legen wir noch eine Datei **''/boot/ssh''** auf der SD-Karte ab. Nach dem erneuten Anstecken der MicroSD-Karte wir der Speicher in der Regel im Verzeichnis **''/run/media/''** oder auch **''/media/''**gemountet. Zum Anlagen der betreffenden Datei  **''ssh''** in dem Verzeichnis reicht also folgender Aufruf, bei dem wir den Usernamen natürlich unseren Gegebenheiten entsprechend anpassen.:
 <code> # touch /run/media/django/boot/ssh</code> bzw. <code> $ touch /media/django/boot/ssh</code> <code> # touch /run/media/django/boot/ssh</code> bzw. <code> $ touch /media/django/boot/ssh</code>
  
-Anschließend können wir nach einem unmounten des Gerätes **''/dev/sdb''** die Micro-SD-Karte in den Kartenslot des Raspberry 4B stecken und den Kleinstcomputer mit dem Netzwerk sowie dem zugehörigen Netzteil verbinden und starten.+Anschliessend können wir nach einem unmounten des Gerätes **''/dev/sdb''** die Micro-SD-Karte in den Kartenslot des Raspberry 4B stecken und den Kleinstcomputer mit dem Netzwerk sowie dem zugehörigen Netzteil verbinden und starten.
  
 ==== Ändern des Default-Passwortes und kopieren des SSH-Public-Keys auf den Raspberry 4 ==== ==== Ändern des Default-Passwortes und kopieren des SSH-Public-Keys auf den Raspberry 4 ====