Der Raspberry Pi ist ein Einplatinencomputer, der von der britischen Raspberry Pi Foundation entwickelt wurde.
Der Rechner enthält ein Ein-Chip-System von Broadcom mit einem ARM-Mikroprozessor, die Grundfläche der Platine entspricht etwa den Abmessungen einer Kreditkarte.
Der Raspberry Pi kam Anfang 2012 auf den Markt; sein großer Markterfolg wird teils als Revival des bis dahin weitgehend bedeutungslos gewordenen Heimcomputers zum Programmieren und Experimentieren angesehen.
Der im Vergleich zu üblichen Personal Computern sehr einfach aufgebaute Rechner wurde von der Stiftung mit dem Ziel entwickelt, jungen Menschen den Erwerb von Programmier- und Hardwarekenntnissen zu erleichtern.
Entsprechend niedrig wurde der Verkaufspreis angesetzt, der je nach Modell etwa 5 bis 35 USD beträgt.
Bis Oktober 2015 wurden mehr als sieben Millionen Geräte verkauft.
Die Entwicklung des Raspberry Pi wurde mit mehreren Auszeichnungen bzw. Ehrungen bedacht.
Es existiert ein großes Zubehör- und Softwareangebot für zahlreiche Anwendungsbereiche.
Verbreitet ist beispielsweise die Verwendung als Mediacenter, da der Rechner Videodaten mit voller HD-Auflösung (1080p) dekodieren und über die HDMI-Schnittstelle ausgeben kann.
Als Betriebssystem kommen vor allem angepasste Linux-Distributionen mit grafischer Benutzeroberfläche zum Einsatz; für das neueste Modell existiert auch Windows 10 in einer speziellen Internet-of-Things-Version ohne grafische Benutzeroberfläche.
Der Startvorgang erfolgt von einer wechselbaren SD-Speicherkarte als internes Boot-Medium.
Eine native Schnittstelle für Festplattenlaufwerke ist nicht vorhanden, zusätzlicher Massenspeicher kann per USB-Schnittstelle angeschlossen werden, z. B. externe Festplatten/SSDs oder USB-Speichersticks.
- Chipsatz Broadcom BCM2711 64-bit SoC @ 1.5GHz
- Quad-Core Cortex-A72 (ARM v8)
- 2.4 GHz und 5.0 GHz IEEE 802.11b/g/n/ac Wireless LAN
- Bluetooth 5.0 (Classic & Low Energy)
- Dual-Core-Coprozessor Videocore IV® Multimedia
- 1 GB LPDDR2-Speicher
- Unterstützt alle aktuellen ARM GNU/Linux-Distributionen und Windows 10 IoT
- 5 V- /3 A über die USB-C Buchse oder den GPIO Stecker
- 1 x Gigabit Ethernet-Anschluss
- 2 x Micro HDMI Ports
- 2 x USB 3.0 Ports
- 2 x USB 2.0 Ports
- 40 GPIO-Stifte
- Chip-Antenne
- 2-lane MIPI DSI Display Port
- 2-lane MIPI CSI Kamera Port
- Steckplatz für microSD-Karte
- Abmessungen: 85 x 56 x 17 mm
Wichtig
Bei Arbeiten mit dem Raspberry ist immer Vorsicht geboten, da die Stecker direkt auf dem Print befestigt sind und daher abbrechen oder verbiegen können.
Auch gilt es bei Arbeiten auf dem Print oder mit elektronischer Hardware ein ESD Band zu benutzen.
• Gehäuse beliebige Farbe
• Raspberry PI 4
• Netzteil
• Micro SD Karte 16 GB
• USB Adapter für Micro SD Karte
oder
• PCMCIA Adapter für Micro SD Karte
• 1 Micro HDMI Kabel
• Maus
• Tastatur
Das Öffnen des Gehäuses kann durchaus Schwierigkeiten bereiten, da verschiedene Gehäuse existieren und der Schliessmechanismus immer ein wenig anders ist. Bei unserem Gehäuse befindet sich der Verschluss in Form einer Schraube neben dem Stromkabelanschluss. Möchte man das Gehäuse öffnen schraubt man vorsichtig das Gehäuse auf, nimmt die Schraube heraus und nimmt die beiden Teile mit vorsichtigem Ziehen auseinander.
Wir benutzen für diese Installation Raspbian, ein Debian das für den Raspberry Pi gemacht wurde. Der Imager sollte schon auf dem PC installiert sein.
Wir nehmen nun die MicroSD-Karte aus dem Raspberry PI und holen uns einen Micro-SD Karte auf USB Adapter zur Hilfe. Steckt die MicroSD-Karte in den Adapter und steckt diesen in den USB-Slot vom PC. Öffnet danach den Imager. Nehmt Raspberry Pi 4, wählt das 64-bit Raspberry Pi OS und schaut dann dass ihr den richtigen Ablegeort auf der Karte auswählt. Geht auf Weiter, passt die Einstellungen so an dass sie wie auf den Bildern aussehen unter Einstellungen ändern und bestätigt erst dann eure Auswahl und dass die Karte überschrieben wird (Passwort ist Password1).
Das Image ist nun geschrieben und wir installieren die MicroSD Karte in den entsprechenden Slot auf der unteren Seite des Gehäuses.
Zusätzlich schliessen wir eine Maus, eine Tastatur, und das HDMI Kabel an. Natürlich benötigen wir auch ein Netzwerkkabel welches mit dem Internet verbunden wird.
Ist alles angeschlossen schliessen wir das Netzteil des Raspberry PIs an.
Nun startet, wenn wir alles richtig gemacht haben, der Raspberry PI auf.
Nun werden alle sogenannten Paketlisten heruntergeladen und aktualisiert.
Mit dem Befehl:
sudo apt update
Werden alle Pakete installiert, bei welchen welche ein Update zur Verfügung steht. Es erscheint eine Liste mit den Paketen und mit „y“ für yes werden diese installiert.
Ist eine neuere Version des Kernels und Firmware vorhanden kann diese mit:
sudo apt upgrade
Installiert werden. Hier kann es Probleme geben, wenn die MicroSD Karte zu klein ist. Darum auf jeden Fall am Ende der Installation den Befehl
sudo apt clean
ausführen, damit die heruntergeladenen Pakete wieder gelöscht werden und freier Speicherplatz entsteht.
Da oft das Tastaturlayout etwas spinnt und die englische Tastatur drin hat gehe in die Konfigurationen mit
sudo raspi-config
und gehe in die Localisation Options und ins Tastatur-Layout.Wähle dort die Generic 105-key PC Tastatur aus
Wähle hier German (Switzerland) aus
The default for the keyboard layout wählen
No Compose Key wählen
Die Frage nach der Tastenkombi verneinen. Jetzt ist die Tastatur richtig eingestellt.
Wir geben unserem Raspi eine fixe IP-Adresse. Dazu rufen wir mit dem Befehl
sudo nano /etc/network/interfaces
das File für die IP-Adressen auf und geben folgende Infos ein:
Static IP: 172.16.51.2
Static Mask 255.255.255.0
Static Gateway 172.16.51.1
Static DNS 172.16.51.2 9.9.9.9
So sieht es am Ende aus:
allow-hotplug eth0 iface eth0 inet static address 172.16.51.2 netmask 255.255.255.0 gateway 172.16.51.1 dns-nameservers 172.16.51.2 9.9.9.9
Wir speichern mit Control + O, drücken Enter und gehen raus mit Control + X. Danach rebooten wir mit
sudo reboot
und kontrollieren die IP-Adresse mit
ip a
Dies ist sehr wichtig, den Raspis werden häufig ohne Maus und Tastatur installiert und nur mittels SSH oder Remote Desktop gewartet bzw. konfiguriert.
Nehmen wir zum Beispiel eine Überwachungskamera, welche an der Front eines Gebäudes montiert ist. Es wäre ziemlich auffällig, wenn auch ein Bildschirm, eine Maus und eine Tastatur dort montiert wären.
Schritt 1
Mittels des Paketmanagers APT installieren wir xrdp. Dies ist eine freie Implementierung des Remote Desktop Protocols für Linux.
sudo apt install xrdp
Schritt 2
Wir können nun noch einige Einstellungen von xrdp anpassen. Die zum Anpassen interessanten Dateien wären /etc/xrdp/xrdp.ini und /etc/xrdp/sesman.ini was jedoch normalerweise nicht notwendig ist.
Schritt 3
Jetzt müssen wir auf unserem Client eine entsprechende Remote Desktop Client Software installieren, sofern wir nicht Windows verwenden, denn unter Windows ist ein Client bereits vorinstalliert, den man über den Suchbegriff Remotedesktopverbindung findet. Für Linux gibt es Rdesktop und unter Mac gibt es die Anwendung Microsoft Remote Desktop im App Store.
Nun können wir von einem Linux PC mit dem Befehl:
rdesktop 172.16.51.2
Natürlich gibt es auch für diesen Befehl diverse Parameter die wir bei der Eingabe setzen können.
Erstellt zuerst einen User fürs Remotedesktop mit:
sudo useradd -m -s /bin/bash -g users -G sudo crt
Gebt danach diesen Command ein um das Passwort (Password1) zu setzen:
sudo passwd crt
Nutzt das Programm Remotedesktop von Windows (Keine Sorge, das mit dem Zertifikat könnt ihr einfach ignorieren und weiterklicken dass er den Remotedesktop startet, wir haben zwar kein Zerifikat aber es geht in diesem Kontext auch ohne):
Meldet euch mit dem eben erstellten Benutzer crt und eurem Passwort an und ihr solltet den Remotedesktop sehen können.
Da wir bei den Einstellungen den Open SSH Server aktiviert haben, können wir nun via Konsole auf unseren Raspi zugreifen und damit arbeiten.
Unter Linux verwenden wir hierfür den Befehl:
ssh sysadmin@172.16.51.2
ssh ist der Befehl, während sysadmin für den Benutzer steht. Die IP Adresse identifiziert deinen Raspi und kann mit dem Befehl ipconfig -a ausgelesen werden.
Nutzen Sie das Programm Putty:
Zur Installation des DHCP-Servers ist ab Debian Natty das folgende Paket auszuwählen:
sudo apt install isc-dhcp-server
(Keine Sorge dass so viel rot kommt, es hat es nur automatisch gestartet und wir haben noch keine Konfiguration vorgenommen)
Nachdem das Paket installiert worden ist, müssen wir noch einige Dateien anpassen und natürlich auch unseren DHCP Server planen.
In diesem Beispiel wird der nano Editor benutzt. Falls dieser noch nicht installiert ist können wir dies mit dem Befehl
sudo apt install nano
nachholen.
Beispielkonfiguration:
• Der Rogue DHCP Server soll aktiviert keine anderen DHCP Server im Netzwerk erlauben
• Der Server bedient das Netzwerk 172.16.51.0
• Die Clients bekommen IP-Adressen zwischen 172.16.51.110 und 172.16.51.120 zugewiesen
• Der Übergang (Gateway bzw. Router) in ein anderes Netzwerk hat die IP-Adresse 172.16.51.1
• Der Nameserver hat die IP-Adresse 172.16.51.2 (wird erst bei der DNS Konfiguration eingebunden) und 8.8.8.8
• Der Server erhält die fixe IP 172.16.51.2
• Die Netzmaske ist 255.255.255.0
• Broadcast ist 172.16.51.255
• Die Domain heißt „raspi.home“
• Die Lease Time wird auf 10 Minuten eingestellt
• Die Maximale Lease Time auf 2 Stunden
• Das Interface Eth0 wird als Standard definiert
• Einem bestimmten Client wird anhand seiner Hardware-(MAC-)Adresse immer dieselbe IP-Adresse zugewiesen.
Wir öffen die Datei /etc/default/isc-dhcp-server
sudo nano /etc/default/isc-dhcp-server
Und ändern den Eintrag wie folgt:
# Defaults for isc-dhcp-server (sourced by /etc/init.d/isc-dhcp-server) # Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf). #DHCPDv4_CONF=/etc/dhcp/dhcpd.conf #DHCPDv6_CONF=/etc/dhcp/dhcpd6.conf # Path to dhcpd's PID file (default: /var/run/dhcpd.pid). #DHCPDv4_PID=/var/run/dhcpd.pid #DHCPDv6_PID=/var/run/dhcpd6.pid # Additional options to start dhcpd with. # Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead #OPTIONS="" # On what interfaces should the DHCP server (dhcpd) serve DHCP requests? # Separate multiple interfaces with spaces, e.g. "eth0 eth1". INTERFACESv4="eth0" INTERFACESv6=""
Wir kopieren die Datei dhcpd.conf.
sudo cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd2.conf
Wir öffnen die Datei dhcpd.conf im Veryeichniss /etc/dhcp
sudo nano /etc/dhcp/dhcpd.conf
Wir löschen den gesamten Inhalt der Datei und fügen anschliessend folgende Zeilen ein:
subnet 172.16.51.0 netmask 255.255.255.0 { range 172.16.51.110 172.16.51.120; interface eth0; option domain-name-servers 172.16.51.2, 9.9.9.9; option domain-name "rafisa.home"; option routers 172.16.51.1; option broadcast-address 172.16.51.255; default-lease-time 600; max-lease-time 7200;}
Ist die Konfiguration abgeschlossen können wir den Server mit folgenden Befehlen neustarten, bzw. den Status abfragen.
sudo systemctl restart isc-dhcp-server
sudo systemctl status isc-dhcp-server
Zuerst muss BIND (aktuell in der Version 9) über das APT Paketmanagement-System durch folgenden Terminal-Befehl installiert werden.
sudo apt install bind9 bind9utils dnsutils
Ist die Installation erfolgt können wir den DNS Server bereits testen. Mit dem Befehl
dig @127.0.0.1 www.google.de
sollte ein ähnlicher Output wie der untenstehende erscheinen.
; «» DiG 9.16.22-Debian «» @127.0.0.1 www.google.de
; (1 server found)
;; global options: +cmd
;; Got answer:
;; →>HEADER«- opcode: QUERY, status: SERVFAIL, id: 59482
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: e31452e9a2ec22550100000062161feaf2121d8249561dd2 (good)
;; QUESTION SECTION:
;www.google.de. IN A
;; Query time: 404 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Feb 23 11:52:10 GMT 2022
;; MSG SIZE rcvd: 70
Beispiel-Konfiguration
Kommen wir nur zur eigentlichen Einrichtung von eigenen Zonen und der Konfiguration von BIND welches sich in der Datei /etc/bind/named.conf.local befindet.
Für ein einfaches Beispiel gehen wir von folgender lokalen Netzwerk-Topologie aus.
• Raspberry: 172.16.51.2
• Netzwerk: 172.16.51.0/24
• Subnetzmaske: 255.255.255.0
• Broadcast-Adresse: 172.16.51.255
• Gateways/Router: 172.16.51.1
• Interner Server: 172.16.51.5
• Raspberry (DNS-Server): 172.16.51.2 9.9.9.9
• Hostname: raspi
• DNS-Zone: raspi.home
Forward- und Reverse-Lookup Zonen anlegen
Domains die wir im DNS-Server konfigurieren wollen, werden eigene Zonen angelegt.
Für jede Domain sollte es normalerweise zwei Zonen-Dateien geben. Jeweils eine Zonen-Datei für den Forward- und den Reverse-Lookup.
Zuerst muss in der Datei „/etc/bind/named.conf.local“ die Konfiguration für diese beiden Dateien unserer Beispiel-Zone „raspi.home“ eingetragen werden.
Um die Datei zu bearbeiten, muss diese in einem Editor (z. B. „nano“) geöffnet werden.
Natürlich machen wir zuerst ein Backup der Datei.
sudo cp /etc/bind/named.conf.local /etc/bind/named2.conf.local
Anschliessend öffnen wir die Datei und tragen unsere Konfiguration ein.
sudo nano /etc/bind/named.conf.local
Wir tragen folgende Konfiguration ein
// ----------------------- Zones ----------------------- // Forward-Lookup zone "raspi.home" { type master; file "/etc/bind/zones/raspi.home"; }; // Reverse-Lookup zone "51.16.172.in-addr.arpa" { type master; file "/etc/bind/zones/db.51.16.172.inv"; }; // ----------------------- Zones -----------------------
Hier werden zuerst nur die Zonen für BIND bekannt gemacht. Die eigentliche Konfiguration der logischen Struktur, wird dann in den jeweils unter „file“ angegeben Dateien eingetragen.
Zur besseren Übersicht werden wir einen eigenen Ordner „zones“ erstellen und die Dateien darin speichern.
sudo mkdir /etc/bind/zones
Die Datei „raspi.home.zone“ muss nicht erstellt werden und kann direkt mit folgendem Befehl geöffnet werden.
sudo nano /etc/bind/zones/raspi.home
Folgender Inhalt muss in die Datei eingetragen und gespeichert werden.
;; BIND forward data file for zone raspi.home ;; $TTL 86400 ; time-to-live - 24 hours could have been written as 24h or 1d @ IN SOA ns1.raspi.home. mail.raspi.home. ( 2015061201 ; Serial - (NOTE: Needs to increment every time you restart BIND) 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Default TTL IN NS ns1.raspi.home. ; nameserver IN A 172.16.51.2 ; loop-back address ns1 IN A 172.16.51.2 raspi.home. IN A 172.16.51.2 server IN TXT "Interner Server" www IN CNAME raspi.home.
Reverse-Lookup
Für den Reverse-Lookup wird noch eine weitere Zonen-Datei „db.20.168.192.inv“ angelegt.
sudo nano /etc/bind/zones/db.51.16.172.inv
Und füllen folgende Daten ein
;; BIND reverse data file for zone db. 51.16.172.inv ;; $TTL 86400 ; time-to-live - 24 hours could have been written as 24h or 1d @ IN SOA ns1.raspi.home. mail.raspi.home. ( 2015061101 ; Serial - (NOTE: Needs to increment every time you restart BIND) 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Default TTL IN NS ns1.raspi.home. ; nameserver 2 IN PTR ns1.raspi.home. ; #1 172.16.51.2 10 IN PTR server.raspi.home. ; #2 172.16.51.2
Server starten
sudo service bind9 restart
oder
sudo service bind9 stop
sudo service bind9 start
Den Status des Servers können wir nun mit dem Befehl anschauen. Wenn alles gut ist dürfen keine roten Linien erscheinen.
sudo service bind9 status
Sollte etwas schiefgelaufen sein, empfiehlt es sich, die Meldungen in der Log-Datei „/var/log/syslog“ anzusehen.
DNS-Server durch DNS-Anfragen testen
Im CMD Prompt folgenden Befehl eingeben:
nslookup
Dann zum Beispiel www.google.ch eingeben. Wenn alles richtig läuft sollte der DNS-Server antworten mit der IP-Adresse von Google.ch.
Wir werden als nächstes einen Webserver einbauen. Ein Webserver ist eine Einheit aus Software und Hardware, die HTTP und andere Protokolle verwendet, um auf Kundenanfragen zu antworten, die über das Internet eingehen, was heisst dass der einfach Webseiten und so bereitstellt.
Als erstes müssen wir den natürlich runterladen, gebt dafür
sudo apt install apache2
ein. Als nächstes macht ihr
sudo systemctl status apache2
um zu schauen ob der Webserver läuft.
Macht nun
sudo systemctl enable apache2
um ganz sicher zu gehen dass er beim Reboot mitstartet.
Testet ob der Server komplett funktioniert indem ihr einen neuen Tab bei einem Internetbrowser öffnet und http:(SlashSlash)172.16.51.2 eingebt und schaut ob die Welcome-Page von Apache hochfährt.
Um den Printserver CUPS zu installieren, geben wir in der Konsole folgenden Befehl ein, falls wir die Auswahl nicht zu Beginn bereits gemacht haben:
sudo apt install cups cups-client cups-bsd
Zusätzlich benötigen wir nun den root Account, damit wir anschliessend über das Webgui auf Cups zugreifen können.
Im Terminal geben wir folgenden Befehl ein:
sudo su
Dann ändern wir das Passwort für sudo mit
passwd root
und geben als neues Passwort Password1 an.
Cups benötigt einige zusätzliche Pakete wie z.B. Treiber für die Drucker und noch anderes, wieso die Installation einen Moment dauern wird.
Ist Cups installiert funktioniert der Zugriff auf das Webinterface nur auf dem lokalen Host. Diese Konfiguration müssen wir in der Datei cupsd.conf editieren.
sudo nano /etc/cups/cupsd.conf
Folgende Parameter werden hier eingetragen:
# Listen for connections Listen Port 631\\ Listen 172.16.51.2:631\\ Listen /var/run/cups/cups.sock\\
Danach führen wir noch die folgenden zwei Befehle aus, damit wir einen Drucker konfigurieren können.
sudo cupsctl --remote-any
sudo /etc/init.d/cups restart
Ist die Installation erfolgt, können wir sofort unseren Webbrowser öffnen und folgende Adresse eingeben:
http://localhost:631/admin
für den lokalen PC oder
http://172.16.51.2:631/admin
wenn wir von einem anderen PC zugreifen möchten.
Ihr könnt diese Seite wegklicken indem ihr auf erweitert geht und das Risiko akzeptiert und fortfahrt.
Meldet euch an mit root und Password1.
Damit wir einen Drucker installieren können benötigen wir folgende Angaben:
IP Adresse (172.16.51.150 in unserem Fall und die genaue Bezeichnung des Gerätes bei uns ein Brother-HL-5270DN. Unter Linux wie auch unter Windows benötigt das Betriebssystem eine Treiberdatei, damit der Drucker angesprochen werden kann.
Die meisten Treiber finden wir auf der Seite https://www.openprinting.org/drivers oder direkt beim Hersteller. Die Treiber heissen unter Linux ppd.
Unter diesem Link finden wir den Treiber für unseren Drucker.
https://www.openprinting.org/printer/Brother/Brother-HL-5270DN .
Speichert die ppd Datei auf eurem Raspi.
Kontrolliert ob der Drucker per Ethetnetkabel am Switch hängt und wählt den Button Drucker hinzufügen.
Hier wählen wir das LPD/LPR-Host oder -Drucker Protokoll aus und bestätigen mit weiter.
Nun geben wir die IP Adresse unseres Druckers an mit dem Prefix socket:(SlashSlash)172.16.51.150 und bestätigen mit weiter.
Folgendes Bild erscheint und wir können nun die Angaben wie Standort, Gerät etc. erfassen. Da es sich um einen Server handelt geben wir den Drucker im Netzwerk frei.
Bestätigen mit weiter.
Folgendes Menü erscheint (nicht wundern, es steht zawr nicht das gleiche aber es ist trotzdem das gleiche Prinzip).
Wenn es sich um einen älteren Drucker handelt, kann dieser bereits auf dem System installiert sein und wir finden ihn im Menü. Unser Drucker ist leider noch nicht installiert, weshalb wir den Button „Datei wählen“ anklicken und unsere PPD Datei angeben.
Anschliessend wählen wir den Button „Drucker hinzufügen“.
Danach erscheint ein Fenster in welchem wir alle Druckeroptionen einstellen können.
Nachdem die Einstellungen fertig sind wechseln wir nun auf den Raster „Drucker“ wo wir unseren neuen Drucker finden.
Wenn wir das Auswahlfeld „Wartung“ anklicken können wir im Menü den Punkt „Testseite drucken“ wählen und unsere erste Seite wird gedruckt.