Wenn man eine Qt-Anwendung - oder auch jede andere Anwendung - für den Raspberry Pi 4 erstellt hat, möchte man nach Fertigstellung der Anwendung sehr oft, daß nach einem Neustart des Raspberry sofort die Anwendung aufgrufen wird.
Häufig wird dies mit Start-Scripts, die an verschiedensten Stellen eingetragen werden können, versucht.
Vernünftiger ist es jedoch, dies über systemd einzurichten. Verwendet habe ich als Ausgangsbasis ein raspbian-buster-lite Image und eine Qt-Installation wie in Qt auf dem Raspberry Pi 4 beschrieben.
Die Qt-Anwendung liegt im Verzeichnis "/home/pi/application" und hat in diesem Beispiel den Namen "application_one".

Anlegen .service-Datei

Als Erstes muss im Verzeichnis "/etc/systemd/system" eine .service-Datei angelegt werden:

sudo nano application_one.service

Hier wird nun folgendes eingetragen:

[Unit]
Description=Qt application autostart
After=graphical.target
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi/application
ExecStart=/home/pi/application/application_one

[Install]
WantedBy=multi-user.target

Die Eintragungen sind eigentlich selbsterklärend. Die Anwendung "application_one" (ExecStart=/home/pi/application/application_one) wird mit dem User-Account "pi" (User=pi) gestartet. Dabei besagt die Eintragung "After=network-online.target" noch, daß mit dem Start der Anwendung gewartet wird, bis die Netzwerkverbindung steht.

Service dem System bekannt machen

Anschließend muss dem System noch bekannt gegeben werden, daß der neue Service aktiv sein soll:

sudo systemctl enable application_one.service

Dann einen Neustart durchführen und die Anwendung sollte automatisch gestartet werden.

Anwendung startet nicht?

Wenn die Anwendung nicht automatisch startet, kann man sich mit

sudo systemctl status application_one.service

den Status anzeigen lassen und sich anhand der Informationen auf die Fehlersuche machen.

Walter Prechtl

Walter Prechtl

Aktualisiert am: 08. März 2024
Lesedauer: 2 Minuten