Raspberry Pi 4 autostart Qt application sa boot time

Kung lumikha ka ng isang Qt application - o anumang iba pang application - para sa Raspberry Pi 4, madalas mong nais na ang application ay tinatawag kaagad pagkatapos ng pag-restart ng Raspberry pagkatapos makumpleto ang application.
Ito ay madalas na tinangka sa mga script ng pagsisimula na maaaring ipasok sa iba't ibang lugar.
Gayunpaman, mas makatwiran na i set up ito sa pamamagitan ng systemd . Gumamit ako ng isang imahe ng raspbian buster lite at isang pag install ng Qt tulad ng inilarawan sa Qt sa Raspberry Pi 4 bilang isang panimulang punto.
Ang Qt application ay matatagpuan sa direktoryo "/ home / pi / application" at pinangalanang "application_one" sa halimbawang ito.

Paglikha ng isang .service file

Ang unang bagay na dapat gawin ay upang lumikha ng isang .service file sa "/ etc / systemd / system" direktoryo:

sudo nano application_one.service

Ang mga sumusunod ay ipinasok na ngayon dito:

[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

Ang mga entries ay talagang self explaining. Ang application na "application_one" (ExecStart=/home/pi/application/application_one) ay sinimulan sa user account na "pi" (User=pi). Ang entry na "After=network-online.target" ay nagsasaad pa rin na ang application ay sinimulan hanggang sa maitatag ang koneksyon sa network.

</:code2:></:code1:>

Ipaalam ang serbisyo sa sistema

Pagkatapos ay kailangan mong sabihin sa system na ang bagong serbisyo ay dapat na aktibo:

sudo systemctl enable application_one.service

Pagkatapos ay magsagawa ng isang reboot at ang application ay dapat magsimula awtomatikong.

</:code3:>

Hindi nagsisimula ang application?

Kung ang application ay hindi awtomatikong nagsisimula, maaari kang mag log in gamit ang

sudo systemctl status application_one.service

Idispley ang status at gamitin ang impormasyon para i-troubleshoot. </:code4:>