(Zurück zum Inhaltsverzeichnis)
Einleitung
In der Firma, die z.Z. mein Gehalt bezahlt, werden mehrere Terminals benötigt.
Diese Terminals sollen innerbetrieblich an diversen Arbeitsplätzen eingesetzt werden.
Als Software wird nur ein Browser benötigt mit dem die
Arbeitsanweisungen incl. Bilder von einen Webserver abgerufen werden
können.
Da die Anwender(innen) sich zum Teil weder mit Windows noch mit Linux auskennen, muss der Vorgang so einfach wie möglich sein.
Da diese Terminals auch von Mitarbeitern eingerichtet werden müssen, die
nur geringe Linux-Kentnisse haben, ist diese Anleitung doch etwas
ausführlicher geworden.
Während der Einrichtung entstand diese Installationsanleitung als
Dokumentation, die ich nun mit der Erlaubnis meines Arbeitgebers
(anonymisiert) veröffentlichen kann.
Vielleicht hat der eine oder andere auch noch ein paar Ideen...
Vorgaben
Die Hardware-Auswahl fiel auf einen Raspberry 3B mit Raspian Stretch und einem Monitor mit 1920*1080.
Der Bootvorgang sollte direkt zu einem geöffneten Browser(hier Chromium) mit den vorhandenen Aufträgen führen.
Um mehrere Terminals möglichst gleichartig und relativ schnell in
Betrieb nehmen zu können, soll die SD-Karte anschließend "geklont"
werden.
Dazu reicht eine 4GB-Karte vollkommen aus.
Die Inbetriebnahme beschränkt sich dann auf das Einstecken einer SD-Karte und das Ändern von "/etc/hosts" und "/etc/hostname".
Einrichtung der Master-SD-Karte
Als erstes wird "Raspian Stretch with Desktop" auf die SD-Karte kopiert und gestartet.
"With Desktop" deshalb weil weder Libreoffice noch Mathematica benötigt werden.
Danach wird das System mit "sudo raspi-config" im Terminal eingerichtet.
Sprache, Tastatur, Zeitzone
Hier sollte man erstmal die Sprache und das Tastaturlayout auswählen:
4 Localisation Options Set up language and regional settings to match your location
I1 Change Locale Set up language and regional settings to match your location
[*] de_DE.UTF-8 UTF-8
[*] en_GB.UTF-8 UTF-8
-> OK
Im nachfolgenden Schritt "de_DE.UTF-8" auswählen und dann "OK" auswählen.
Als nächstes wird die Zeitzone eingerichtet:
4 Localisation Options Set up language and regional settings to match your location
I2 Change Timezone Set up timezone to match your location
Europa
Berlin
-> OK
Nun zur Tastatur:
4 Localisation Options Set up language and regional settings to match your location
I3 Change Keyboard Layout Set the keyboard layout to match your keyboard
Generische PC-Tastatur mit 105 Tasten (Intl)
Deutsch
Der Standard für die Tastenbelegung
Keine Compose-Taste
Strg+Alt+Zurück (Ctrl+Alt+Backspace) verwenden, um den X-Server zu beenden? -> Ja
Passwort
Nachdem das System auf Deutsch umgestellt wurde, kann man jetzt das Passwort ändern ohne in die YZ-Falle zu tappen.
Der User "pi" und das Passwort "raspberry" ist weltweit bekannt und
Hacker sind außerordentlich erfreut wenn sie es unverändert vorfinden.
Netzwerk
Kommen wir nun zum Netzwerk:
2 Network Options Configure network settings
N1 Hostname Set the visible name for this Pi on a network
Hier wird als Hostname erstmal ein Platzhalter eingetragen, der dann später bei der Inbetriebnahme des Klones geändert wird.
Ich habe hier "terminalXX" gewählt. So sieht man sofort, das der spätere Klone noch angepasst werden muss.
Die anderen beiden Optionen ignorieren.
Boot-Option
Nächster Punkt:
3 Boot Options Configure options for start-up
B1 Desktop / CLI Choose whether to boot into a desktop environment or the command line
B4 Desktop Autologin Desktop GUI, automatically logged in as 'pi' user
Hier wird vorgegeben, das der User ohne Passwort auf die Desktop-Oberfläche eingeloggt wird.
Nicht wundern, eine weitere Anpassung erfolgt später im Abschnitt Autologin.
Nochmal die Boot Options:
3 Boot Options Configure options for start-up
B2 Wait for Network at Boot Choose whether to wait for network connection during boot
Dies mit "Ja" beantworten, es dient dazu, das der Raspberry auf das
Netzwerk zu wartet. Es verzögert zwar ab und zu das Booten, aber dann
hat man auch "Netz".
Wenn das zu lange dauert (>30sec) dann hat man mit dem Netzwerk ein Problem.
SSH einschalten
Damit man das System übers Netzwerk administrieren kann muss man SSH einschalten:
5 Interfacing Options Configure connections to peripherals
P2 SSH Enable/Disable remote command line access to your Pi using SSH
Das ermöglicht einen Admin per ssh auf den Rechner zuzugreifen (z.B.: Updates). Unter Linux als Beispiel:
Unter Windows geht das mit "Putty" oder "Kitty"
Sonstiges
Bleiben jetzt nur noch die zusätzlichen Optionen:
7 Advanced Options Configure advanced settings
A2 Overscan You may need to configure overscan if black bars are present on display
Beseitigt einen eventuellen Trauerrand auf dem Monitor, gesehen auf einem Monitor mit einem HDMI-DVI Adapter.
7 Advanced Options Configure advanced settings
A4 Audio Force audio out through HDMI or 3.5mm jack
Schaltet den Audio-Ausgang entweder auf die Klinkenbuchse oder HDMI (Absolute Stille, wenn der Monitor keine Lautsprecher hat).
Jetzt kann raspi-config mit "Finish" verlassen
Update
Nun sollte man das System mit der neusten Software upgedaten (sudo apt update && sudo apt upgrade -y), das kann etwas länger dauern.
Nacharbeiten
Folgende Software kann/sollte man jetzt noch nachinstallieren:
Es kann sein, das einiges davon schon auf dem neusten Stand ist.
In der .bashrc kann man jetzt noch etwas auskommentieren, bzw. ergänzen:
Das Alias TTS zeigt die letzten 500 Zeilen der syslog-Datei an, das
dient nur zur Fehlersuche, die Option "-f" zeigt neue Zeilen fortlaufend
an.
Jetzt kann man noch Bluetooth und WLAN abschalten, für ein Terminal mit LAN-Anschluss wird das nicht benötigt:
dort an Ende anfügen:
Ein "sudo reboot" läßt den Raspberry neu starten.
Konfigurierung als Terminal
Da der User "pi" Admin-Rechte hat, ist es keine gute Idee, diesen Account auch für die Nutzer(innen) zu nutzen.
Der "Arbeitsuser"
Daher wird ein neuer User ohne weitreichende Rechte (Hier als Beispiel: "anwender") angelegt:
Danach mittels "sudo mc" folgende Dateien und Ordner nach "/home/anwender" kopieren:
.bash_history
.bashrc
.config
Desktop
Documents
Downloads
.local
Music
Pictures
.profile
Public
Templates
.themes
Videos
Alles anzeigen
Auto-Anwendung
In der letzten Zeile wird der Autostart des Chromium eingetragen.
@xset s off
@xset -dpms
@xset s noblank
@lxpanel --profile LXDE-pi
@chromium-browser http://webserver/Seite1.html http://webserver/Seite2.html
Hier wird der Browser Chromium mit 2 verschiedenen Seiten geöffnet, hier müssen die Webadressen noch eingetragen werden.
Der Bildschirmschoner ist jetzt ausgeschaltet.
Rechte korrigieren:
Die Rechte auf den Inhalt des Verzeichnisses "/home/anwender" dem User "anwender" übergeben:
Autologin
Hier ist nun der 2.Teil des Autologins. Der User "pi" wird nun durch den User "anwender" ersetzt.
Dieser User hat keine Rechte um im System irgendetwas ändern zu können, er kann nur in seinem Homeverzeichnis etwas ändern.
In der Datei
die Zeile:
in
ändern. Ab jetzt sollte beim nächsten (re)boot der Raspberry als User "anwender" mit der Webanwendung starten.
User-Wechsel
Um wieder als User "pi" arbeiten zu können muss man mit den Tasten Strg+Alt+Zurück (Ctrl+Alt+Backspace) diese Session beenden
und kann sich dann über den Login-Bildschirm normal als "pi" anmelden.
Das Klonen des Systems
Dieses Image kann nun zum Klonen verwendet werden, allerdings sollte
man sich noch ein paar Gedanken über Sicherheitsupdates machen.
Ein paar Gedanken dazu finden sich im letzten Abschnitt (Sicherheitsupdates mit unattended-upgrades).
Danach fährt man den Raspberry mit "sudo halt" herunter und entnimmt die SD-Karte.
Device ermitteln
Auf einem anderen Linux-Rechner wird die SD-Karte eingelegt und erst einmal das Device ermittelt.
Dies ist sehr wichtig, denn wenn man das falsche Device erwischt, kann im schlimmsten Fall die Festplatte gelöscht werden.
Vorher (Hier auf einem Raspberry):
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
mmcblk0 179:0 0 29,7G 0 disk
├─mmcblk0p1 179:1 0 43,8M 0 part /boot
└─mmcblk0p2 179:2 0 29,7G 0 part /
Nachher:
lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 1 3,8G 0 disk
├─sda1 8:1 1 50M 0 part
└─sda2 8:2 1 3,7G 0 part
mmcblk0 179:0 0 29,7G 0 disk
├─mmcblk0p1 179:1 0 43,8M 0 part /boot
└─mmcblk0p2 179:2 0 29,7G 0 part /
Man sieht, das hier ein neues Device gefunden wurde. Hier handelt es
sich dabei um einen USB-Cardreader mit eingelegter SD-Karte.
Das Image wird nur von der kompletten SD-Karte kopiert, hier ist es "/dev/sda". "sda1" und "sda2" sind die Partitionen.
Hinweis: Dies ist nur ein Beispiel, das kann auf einem anderen Rechner vollkommen anders aussehen!
Die SD-Karte auf den Rechner kopieren
Das Device ist in diesem Fall "/dev/sda" und der Inhalt der SD-Karte wird ins Homeverzeichnis kopiert:
oder mit Anzeige (dcfldd muss eventl. erst installiert werden)
Wenn das erfogreich war, sollte die letzte Ausgabe etwa so aussehen:
Und im Homeverzeichnis sollte sich jetzt diese Datei befinden:
Das Image verkleinern
Das Ziel dieser Maßnahme ist zum einen die Kopierzeit zu verkürzen
und zum anderen sind SD-Karten produktionsbedingt nicht immer gleich
gross.
Das könnte beim kopieren auf einer "gleichen" SD-Karte (die vielleicht nur ein paar Sektoren kleiner ist) zu Fehlern führen.
Außerdem läßt sich auf diese Weise ein Image von z.B. einer 16
GByte-Karte auf eine 8 GByte-Karte umkopieren, wenn die Größe passt.
Auf der Seite https://github.com/Drewsif/PiShrink/ befindet sich ein Script, mit dem sich das Image (unter Linux) einfach verkleinern läßt:
Dann ausführbar machen:
Jetzt kann man das Image verkleinern:
Die Ausgabe sollte etwa so aussehen:
sudo ./pishrink.sh 20190303_Arbeitsterminal.img 20190303_Arbeitsterminal_shrink.img
Copying 20190303_Arbeitsterminal.img to 20190303_Arbeitsterminal_shrink.img...
Creating new /etc/rc.local
rootfs: 97534/245760 Dateien (0.4% nicht zusammenhängend), 742477/970496 Blöcke
resize2fs 1.43.4 (31-Jan-2017)
resize2fs 1.43.4 (31-Jan-2017)
Die Größe des Dateisystems auf /dev/loop0 wird auf 876691 (4k) Blöcke geändert.
Start von Durchgang 2 (max = 51099)
Blöcke werden verschoben XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Start von Durchgang 3 (max = 30)
Die Inode-Tabelle wird gelesenXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Das Dateisystem auf /dev/loop0 is nun 876691 (4k) Blöcke lang.
Shrunk 20190303_Arbeitsterminal_shrink.img from 3,8G to 3,4G
Alles anzeigen
Hier wurde zum Auslesen und Shrinken ein Raspberry benutzt. Das Ergebnis sieht dann etwa so aus:
-rw-r--r-- 1 root root 4025483264 Mär 3 22:37 20190303_Arbeitsterminal.img
-rw-r--r-- 1 root root 3641258496 Mär 3 22:48 20190303_Arbeitsterminal_shrink.img
Beim Starten des Klones wird das Dateisystem automatisch wieder auf die maximale Grösse der SD-Karte ausgedehnt.
Das Zurückspielen des Images auf die SD-Karte
Die neue SD-Karte braucht/sollte vorher nicht formatiert werden, die nachfolgende Prozedur überschreibt sowieso alles wieder.
Erstmal mit lsblk (siehe Abschnitt "Device ermitteln") das Ziel überprüfen (hier wieder /dev/sda), und dann mit:
oder mit Anzeige
auf die Karte schreiben.
Nochmal die Warnung: Wer hier das falsche Device angibt löscht seine Platte unwiderruflich. Alle Daten sind definitiv weg!
Den Klone in Betrieb nehmen
Die SD-Karte in den Raspberry einsetzen und einschalten.
Der Raspberry erweitert jetzt sein Dateisystem auf die maximale Größe der SD-Karte und bootet dazu mehrmals.
Anschließend meldet er sich automatisch als User "anwender" an und startet den Browser mit der vorgegebenen Webseite(n).
Nun bleiben noch 2(3) Schritte um den Klone produktiv einsetzen zu können, er braucht zuerst einen eigenen Hostnamen.
Daher muss an 2 Stellen das System noch angepasst werden, dazu gibt es 2 Möglichkeiten:
- Man kann die geklonten Karten vor dem ersten Start mit einem anderen Linuxrechner ändern wenn man die SD-Karte dort einsteckt:
und
Vor dem Entnehmen der SD-Karte muss man die Partitionen wieder aushängen:
Windows ist dazu nicht geeignet, weil es Linux-Partitionen nicht erkennt.
- Oder auf den bereits laufenden Raspberry:
Dazu muss man diese Session mit Strg+Alt+Zurück (Ctrl+Alt+Backspace) beenden und sich als User "pi" wieder einloggen.
und
Das war fast alles, aber da der Klone mit Sicherheit bereits veraltet ist, sollte man ihn als letzten Schritt noch updaten/upgraden:
Jetzt kann das Terminal (nach einen reboot) endgültig in Betrieb genommen werden.
Was bleibt noch zu tun?
Die üblichen Admin-Aufgaben:
- Etwa wöchentlich ein Update durchzuführen:
- Das kann man direkt am Terminal als User "pi" mit "sudo apt update && sudo apt upgrade -y" erledigen, man stört dann aber den User bei der Arbeit.
- Oder sich per ssh auf den Rechner einloggen mit "ssh pi@terminal01", das bemerkt der User in der Regel nicht.
- Oder mit Putty, auch das bermerkt der User meistens nicht.
- Oder mit unattended-upgrades, das automatisch einmal am Tag (nur) nach Sicherheitsupdates sucht und falls vorhanden diese installiert.
Anders als bei Microsoft sind bei Linux Updates sofort verfügbar wenn sie fertig sind.
Außerdem sollte man jeden neuen Anwender darauf hinweisen, das der
Rechner zu Feierabend mittels "Shutdown" herunterzufahren ist,
weil es sein könnte, das nicht nur die SD-Karte ziemlich ungehalten darauf reagiert, sondern dann auch der Vorgesetzte.
Sicherheitsupdates mit unattended-upgrades
Auf der Webseite https://www.elektronik-kompendium.de/sites/raspberry-pi/2002101.htm befindet sich eine sehr gute Anleitung.
Man sollte sich aber für so eine Lösung entscheiden bevor man die Karte
klont, alle Terminals nachzurüsten ist doch etwas mühsam.
Eigenes Logo beim Booten
Wenn man den Splash Screen eingeschaltet hat, erscheint eine Grafik, mit Infos über das eingesetzte Raspian.
Man kann diesen Bildschirm aber duch eine eigene Grafik ersetzen.
Interessant vieleicht für ein Firmenlogo oder zu verschleiern, das es sich um einen Raspberry handelt.
Diese Grafik befindet sich im Verzeichnis "/usr/share/plymouth/themes/pix/":
/usr/share/plymouth/themes/pix $ ll
insgesamt 312
-rw-r--r-- 1 root root 33938 Apr 14 17:46 hal9000g.jpg
-rw-r--r-- 1 root root 116605 Apr 14 17:50 hal9000.png
-rw-r--r-- 1 root root 187 Jan 31 10:25 pix.plymouth
-rw-r--r-- 1 root root 1286 Jan 31 10:25 pix.script
-rw-r--r-- 1 root root 33396 Apr 5 14:05 splash_ori.png
-rw-r--r-- 1 root root 116605 Apr 14 17:51 splash.png
Hier wurde mit:
die Original-Datei gesichert und durch
mit einer neuen Datei ersetzt. Wichtig ist, das das neue Bild png-Format hat.
Diese png-Datei wurde mit dem Bildbetrachter "GPicView" von Raspian mittels "Datei speichern unter" aus dem JPEG-Bild erzeugt.
Allerdings wird es bei jedem Upgrade von "rpd-plym-splash" ersetzt, das
geschieht sobald Raspberry.org ein neues Release herausbringt.
Falls man sich für die Textversion beim Booten entscheidet, wird man die "Himbeeren" los, indem man "logo.nologo" an die Zeile unter "/boot/cmdline.txt" anfügt.
Dazu noch eine Warnung: Bearbeiten Sie niemals eine Datei mit dem Windows-Notepad.
Installieren Sie sich z.B. Notepad++ oder Geany und stellen Sie vorher die Zeilenenden auf "Unix" um.
Edit: Vorschläge von@hyle eingepflegt.
Edit_?: Warum findet man Fehler immer erst dann wenn man den Artikel veröffentlicht hat?