====== 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