====== OBP60P Installationsanleitung ======
Variante 1: Basis RaspiOS Lite
Es wird nur ein Minimalsetup beschrieben. Weitere Anpassungen wie
z.B. NMEA2000, GPS etc. sind möglich, führen an dieser Stelle aber
zu weit.
===== 1) SD-Karte erstellen =====
==== Vorbereitung auf dem Haupt-PC ====
Benötigt:
- "großer" Haupt-PC mit vernünftiger Bedienmöglichkeit
- SD-Kartenleser (bzw. -schreiber)
- Kabelnetzwerkverbindung für den Raspberry
- Internetzugang aus dem Netzwerk heraus
Herunterladen eines aktuellen RaspiOS Lite:
wget https://downloads.raspberrypi.com/raspios_lite_arm64/images/raspios_lite_arm64-2025-05-13/2025-05-13-raspios-bookworm-arm64-lite.img.xz
Anzeigen der Geräteliste ohne einen angeschlossenen Kartenleser:
lsblk
Anschließen des SD-Kartellesers und überprüfen der aktuellen Geräte
lsblk
Jetzt sind zwei neue Laufwerke z.B. ''sdd'' und ''sde'' vorhanden
Einstecken einer leeren SD-Karte, 64 GB damit genügend Speicher für z.B. Seekarten
vorhanden ist.
lsblk
Prüfe die aktualisierte Geräteliste, die eingelegte Karte sollte jetzt neu
hinzugekommen sein:
* Der Gerätename ist z.B. ''/dev/sde''
Schreibe das Image auf die Karte, das ''sync'' ist eigentlich überflüssig, aber man weiß ja nie:
xzcat 2025-05-13-raspios-bookworm-arm64-lite.img.xz | sudo dd of=/dev/sde bs=4M conv=fsync
sync
Damit dit dieser Teil erledigt, die Karte kann entnommen werden. Einfach herausziehen.
===== 2) Erststart des Raspis =====
==== auf dem Raspberry ====
Im folgenden Beispiel sind Benutzername und Kennwort angegeben.
Für ein später produktiv zu nutzendes System bitte
//unbedingt eigene Daten// benutzen!
Karte einlegen und Raspberry einschalten.
Tastatur und Monitor sind erforderlich.
Keyboard layout: german / german
Username: arthur
Password: arthur
Login: Anmeldung mit gerade angelegtem Benutzer
sudo raspi-config
* system / hostname: ''obp60p''
* Interface options
* ssh einschalten
* Localization options
* locale ''de_DE.UTF8'', auch als Default auswählen
* time zone ''Europe/Berlin''
* WLAN Country ''DE''
Finish und Reboot
Auf der folgenden Anmeldeseite wird die aktuelle IP-Adresse angezeigt.
Die weitere Konfiguration machen wir vom großen PC aus. Damit können
z.B. Befehle aus der Anleitung mit Cut&Paste ausgeführt werden.
SSH wird im folgenden als die Hauptfernsteuerungsmethode verwendet.
===== 3) Basiskonfiguration über SSH-Fernsteuerung =====
==== Auf dem großen PC, Konsole ====
ssh arthur@192.168.0.113
Fingerprint bestätigen: ''yes''
Umschalten auf Benutzer ''root''
sudo -i
Kennwort eingeben, damit direktes Anmelden an Root möglich ist
passwd
obp60p
obp60p
Im weiteren wird empfohlen die SSH-Verbindung nur über Schlüssel zuzulassen.
Am besten ist es dafür z.B. einen Nitro-Key zu verwenden. Dieses sprengt aber
diese Anleitung und wird ggf. an anderer Stelle besprochen.
=== Herunterstrippen ungewünschter Komponenten vom Raspberry ===
Sicherstellen, daß bei Paketinstallation nur wirklich benötigte Pakete als
Abhängigkeiten installiert werden:
nano /etc/apt/apt.conf
APT::Install-Recommends "0";
APT::Install-Suggests "0";
Umschaltung auf SysVinit vorbereiten. Ich installiere hier auch gleich meinen
Lieblingseditor ''joe''. An stellen wo dieser im Folgenden benutzt wird, kann natürlich
auch jeder andere Editor wie ''nano'' oder ''vi'' genommen werden.
apt-get install sysvinit-core rsyslog chrony orphan-sysvinit-scripts net-tools \
ifupdown joe
Netzwerk vorbereiten
joe /etc/network/interfaces
auto eth0
iface eth0 inet dhcp
auto can0
iface can0 inet manual
# PiCAN-M
pre-up /sbin/ip link set can0 type can bitrate 250000
up /sbin/ifconfig can0 up
down /sbin/ifconfig can0 down
Neustart
shutdown -r now
Hier wird die SSH-Verbindung getrennt. Sobald der Raspi wieder gestartet
ist neu verbinden und weiter geht es:
ssh arthur@192.168.0.113
sudo -i
Reste von Systemd wegräumen
apt-get purge systemd
deluser systemd-timesync
deluser systemd-network
delgroup systemd-journal
rm -Rf /var/log/journal
rm -Rf /var/lib/systemd
Klassisches Datumsformat für ''rsyslog'' einstellen
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
Pakete installieren, insbesondere ''aptitude'' zur Paketverwaltung
apt-get install aptitude vim pwgen anacron
System aktualisieren auf letzten Patchstand
aptitude
u -> Paketliste aktualisieren
U -> Aktualisierbare markieren
g
g
Installierte Pakete immer im Zugriff haben zum leichten Vergleich,
ggf. auch mit Systemkopien, täglich aktualisieren
#!/bin/sh
/usr/bin/dpkg --get-selections | cut -f 1 > /root/`hostname -s`-selections.txt
chmod +x /etc/cron.daily/packages
Ungenutzte / nicht gewollte Pakete entfernen
apt-get purge apparmor tasksel tasksel-data triggerhappy pastebinit \
ppp avahi-daemon cifs-utils ntfs-3g exfatprogs usb-modeswitch \
mkvtoolnix ssh-import-id vim-tiny
:!: Die obige Liste ist noch nicht vollständig, hier fehlt noch etwas Nacharbeit.
Das ist aber nicht weiter schlimm, es liegen dann nur ungenutzte Pakete herum.
Nochmals zur Sicherheit
apt autoremove
Prüfe, ob noch Reste von nicht mehr verwendeten Paketen vorliegen und räume ggf. auf.
In Zeile 3 ist eine manuelle Überprüfung vorgesehen, falls dort etwas auftaucht
was doch behalten werden soll. Im Normalfall kann das auch übersprungen werden.
cd /tmp
dpkg --get-selections | grep deinstall | cut -f 1 > deinstall.txt
joe deinstall.txt
xargs dpkg --purge < deinstall.txt
rm deinstall.txt
Nachdem das System nun in den gewünschten Ausgangszustand versetzt worden ist können
jetzt Pakete installiert werden:
apt-get install htop git socat uuid
=== Konfiguration optionaler Hardware ===
* NMEA2000 / CAN-Schnittstelle: PiCAN-M
# PiCAN-M
enable_uart=1
dtparam=i2c_arm=on
dtparam=spi=on
dtoverlay=mcp2515-can0,oscillator=16000000,interrupt=25
dtoverlay=spi-bcm2835-overlay
* Umgebungssensor BME280
dtparam=i2c_arm=on
* Echtzeituhr
# I2C RTC DS3231
dtoverlay=i2c-rtc,ds3231
* HDMI-Bildschirm
# Waveshare 4.3" HDMI display
hdmi_force_hotplug=1
hdmi_group=2
hdmi_mode=87
hdmi_cvt 800 480 60 6 0 0 0
* virtuelle serielle Schnittstelle
# Create virtual serial connection
socat pty,rawer,echo=0,group-late=dialout,mode=0660,link=/dev/ttyV0 \
pty,rawer,echo=0,group-late=dialout,mode=0660,link=/dev/ttyV1 &
* GPS Maus: "out of the box"
Hier nochmals neu starten zum Überprüfen ob soweit alles fein ist und
um die zuvor eingegebene Hardwarekonfiguration zu aktivieren:
shutdown -r now
===== 4) Graphische Oberfläche (GUI) =====
Zur besseren Übersicht installiere ich nicht alles in einem Rutsch,
sonderne gruppiere etwas je nach Funktion:
apt-get install xserver-xorg-core xserver-xorg-input-evdev \
xserver-xorg-input-libinput xserver-xorg-video-fbdev x11-xserver-utils
Hinweis: ''xserver-xorg-input-evdev'' für die HDMI-Variante, ''xserver-xorg-input-libinput''
für die DSI-Variante.
Displaymanager mit zugehöriger Konfiguration
apt-get install slim
default_user arthur
auto_login yes
Themes sind in ''/usr/share/slim/themes''
Fenstermanager ''openbox''
apt-get install openbox python3-xdg
:!: ''obconf'' auf keinen Fall installieren, es zieht systemd rein über Abhängigkeit von GTK3!
Desktopsymbole
apt-get install idesk
Bildschirmhintergründe vorbereiten
mkdir /usr/local/share/backgrounds
Panel für z.B. Uhr und Übersicht über laufende Programme
apt-get install tint2
Kompositor, u.a. für Runde Fensterecken von OBP60v benötigt
apt-get install xcompmgr
Fernsteuerung
apt-get install x11vnc
Hilfsprogramme für alle Benutzer aktivieren
[...]
idesk &
tint2 &
x11vnc -quiet -forever -nopw -rfbport 5900 &
xcompmgr &
Audio
apt-get install volumeicon-alsa
===== 5) Anwendungen =====
Anwendungen: Dateimanager, Terminal und Texteditor
apt-get install pcmanfm lxterminal mousepad
Backup-Programm zum SD-Karte klonen (SD Card Copier)
apt-get install piclone gvfs dbus-x11
Damit das Kommando und alle daraus heraus aufgerufenen Sub-Kommandos ausgeführt werden können,
muß der Benutzer einen erweiterten Eintrag in ''sudoers'' haben. Da wir gerade dabei sind,
erlauben wir auch dem Standardbenutzer das Ausschalten und Neustarten des Systems.
Wichtig ist daß die Zeilen mit dem Benutzernamen ''arthur'' am Ende der Datei sind vor dem
@include.
visudo /etc/sudoers
Cmnd_Alias SYSTEM = /usr/sbin/shutdown, /usr/sbin/halt, /usr/sbin/reboot, /usr/sbin/poweroff
Cmnd_Alias PICLONE = /usr/bin/dbus-launch /usr/bin/piclone
[...]
arthur ALL=(ALL) NOPASSWD:SYSTEM
arthur ALL=(root) NOPASSWD:PICLONE
# See sudoers(5) for more information on "@include" directives:
[...]
Browser (hier unklar was "der beste" Browser ist)
apt-get install chromium-browser
Seekarten
apt-get install opencpn
Custom-Konfiguration aus OBP60P-Repository holen
git clone https://git.hoogi.de/thooge/OBP60P
Die enthaltenen Dateien müssen nach Bedarf an die passenden Stellen im Dateisystem
kopiert werden. Generische Dateien in passende Unterverzeichnisse von ''/usr/local/...''.
Es gibt zwei Installationsscripte. Eins für ''root' und eins für den normalen Benutzer.
===== 6) Benutzereinstellungen =====
Auf dem Raspberry über SSH als Benutzer "arthur" anmelden.
cd ~
mkdir -p .config/openbox
cp /etc/xdg/openbox/rc.xml ~/.config/openbox
cp /etc/xdg/openbox/menu.xml ~/.config/openbox
:!: TODO Hier fehlt etwas Detaillierung
* in der Konsole einmal ''idesk'' starten
* ''mkdir .idesktop''
* Symboldateien ''*.lnk'' im Verzeichnis ''.idesktop'' anlegen
:!: TODO vorbereitete Konfigurationsdateien, Symbole und Bilder aus einem Git-Repository laden und scriptgesteuert an passende Orte im Dateisystem einspielen:
* Openbox-Kontextmenü
* Bildschirmhintergründe
* Zeichensätze
* Desktopsymbole
===== 7) Extras =====
==== Benutzer für Tablet ====
Das Tablet verbindet sich über WLAN mit einem speziellen VNC-Server
der mit einer anderen als der physischen Bildschirmauflösung
arbeitet. Damit kann eine verbesserte Darstellung erzielt werden.
adduser tablet
apt-get install rungetty xvfb
[...]
1:2345:respawn:/sbin/rungetty tty1 -u root -- login -f tablet
Die folgende Zeile kann in den Autostart von Openbox mit aufgenommen werden:
x11vnc -create -env FD_PROG=/usr/bin/openbox -env X11VNC_CREATE_GEOM=${1:-1024x768x16} -nopw -no6 -forever
==== Serververbindung ====
Falls ein eigener Server im Internet vorhanden ist, kann eine VPN-Verbinding
zu diesem hergestellt werden. Ich empfehle [[Wireguard]]:
apt-get install wireguard
Damit kann das OBP60P über den Server von außen zuverlässig erreicht werden.
Voraussetzung ist natürlich daß das MFD permanent an ist.
==== WLAN ====
Um WLAN zu nutzen muß dieses zuvor konfiguriert werden:
auto wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=0
network={
ssid="BORDWLAN"
psk="********"
key_mgmt=WPA-PSK
}
Aktueller Status:
wpa_cli status
==== Bluetooth ====
''rfkill'' deaktivieren mit Kernel-Kommandozeile ''rfkill.default_state=1'', eintragen in ''cmdline.txt''
apt-get install bluetooth rfkill
Gerät koppeln
bluetoothctl
pairable on
scan on
... warten bis Gerät sichtbar ...
scan off
trust
connect
exit
===== 8) Zusatzeinstellungen für Entwicklung =====
Für Videocapture-freundliche Auflösung von 1280x720 kann dieses mit
xrandr eingestellt werden:
xrandr --output HDMI-1 --mode 1280x720