<ul id="gu0q4"></ul>
  • <strike id="gu0q4"><abbr id="gu0q4"></abbr></strike>
    <strike id="gu0q4"><menu id="gu0q4"></menu></strike>
    <samp id="gu0q4"><tfoot id="gu0q4"></tfoot></samp>
    <samp id="gu0q4"><tfoot id="gu0q4"></tfoot></samp>
    • <samp id="gu0q4"></samp>

      技術(shù)貼|如何在【RK3588】ELF 2開發(fā)板上實(shí)現(xiàn)開機(jī)自啟應(yīng)用原創(chuàng)

      發(fā)布時(shí)間:2025-09-05 13:02:15
      RK3588 RK3588開發(fā)板 自啟應(yīng)用

      Systemd作為Linux系統(tǒng)默認(rèn)的初始化系統(tǒng)和服務(wù)管理器,憑借其并行啟動(dòng)、依賴管理及統(tǒng)一配置機(jī)制,顯著提升了系統(tǒng)啟動(dòng)效率。針對開機(jī)自啟動(dòng)需求,Systemd的實(shí)現(xiàn)機(jī)制如下:

      ?

      1、服務(wù)單元機(jī)制

      Systemd將每個(gè)服務(wù)/腳本抽象為.service單元文件,其中包含啟動(dòng)命令、依賴關(guān)系、運(yùn)行環(huán)境等聲明式配置。

      2、依賴控制與目標(biāo)綁定

      通過[Install]段的WantedBy=multi-user.target將服務(wù)關(guān)聯(lián)到系統(tǒng)運(yùn)行目標(biāo),確保在操作系統(tǒng)完成基礎(chǔ)初始化后自動(dòng)觸發(fā)服務(wù)啟動(dòng)。

      3、強(qiáng)一致性保障

      Systemd會監(jiān)控服務(wù)進(jìn)程,支持自動(dòng)重啟和日志收集,確保自啟動(dòng)服務(wù)的持續(xù)可用性。

      腳本自啟

      配置Systemd服務(wù)單元實(shí)現(xiàn)腳本自啟

      1、首先創(chuàng)建test1.sh腳本

      root@elf2-desktop:~# cd /home/elf/root@elf2-desktop:/home/elf# vi test1.sh

      ?

      添加以下內(nèi)容:

      #!/bin/bashecho?"start"?>> /home/elf/c.txt

      ?

      2、給腳本可執(zhí)行權(quán)限

      root@elf2-desktop:/home/elf# chmod 777 test1.sh

      ?

      3、新建要啟動(dòng)的服務(wù)文件

      創(chuàng)建并編輯test1.service文件

      root@elf2-desktop:/home/elf# vi?/etc/systemd/system/test1.service

      ?

      在test1.service里編輯以下內(nèi)容

      [Unit]Description=/etc/rc.local CompatibilityAfter=multi-user.target[Service]Type=forkingExecStart=/home/elf/test1.sh[Install]WantedBy=multi-user.target

      ?

      4、讓系統(tǒng)獲取到自定義的service文件并設(shè)置開機(jī)啟動(dòng)

      root@elf2-desktop:/home/elf# systemctl daemon-reloadroot@elf2-desktop:/home/elf# systemctl enable test1.service

      ?

      5、執(zhí)行sync后,reboot重啟

      root@elf2-desktop:/home/elf# syncroot@elf2-desktop:/home/elf# reboot

      ?

      6、驗(yàn)證

      root@elf2-desktop:~# cat?/home/elf/c.txt?start??//讀取文件的內(nèi)容,出現(xiàn)start說明腳本開機(jī)自啟成功。

      ?

      界面應(yīng)用自啟

      配置 systemd 服務(wù)單元實(shí)現(xiàn)帶界面應(yīng)用自啟

      1、首先創(chuàng)建test2.sh腳本

      root@elf2-desktop:~# cd /home/elf/root@elf2-desktop:/home/elf# vi test2.sh

      ?

      以HelloWorld為例進(jìn)行測試,添加以下內(nèi)容:

      #!/bin/bashsleep?3export?DISPLAY=:0.0/home/elf/HelloWorld &

      sleep 3的原因?yàn)閙ulti-user啟動(dòng)順序較早,不添加sleep參數(shù)會導(dǎo)致應(yīng)用啟動(dòng)失敗,Ubuntu系統(tǒng)啟動(dòng)過程中,用戶帶界面的應(yīng)用啟動(dòng)需要等待界面組件準(zhǔn)備完成,這里測試elf2需要2秒左右正常進(jìn)入系統(tǒng),所以延時(shí)3s再啟動(dòng)應(yīng)用。

      ?

      2、給腳本可執(zhí)行權(quán)限

      root@elf2-desktop:/home/elf# chmod 777 test2.sh

      ?

      3、新建要啟動(dòng)的服務(wù)文件

      創(chuàng)建并編輯test2.service文件

      root@elf2-desktop:/home/elf# vi?/etc/systemd/system/test2.service

      ?

      在start.service里編輯以下內(nèi)容

      [Unit]Description=/etc/rc.local CompatibilityAfter=multi-user.target[Service]Type=forking?ExecStart=sudo -u elf /home/elf/test2.sh[Install]WantedBy=multi-user.target

      ?

      4、讓系統(tǒng)獲取到自定義的service文件并設(shè)置開機(jī)啟動(dòng)

      root@elf2-desktop:/home/elf# systemctl daemon-reloadroot@elf2-desktop:/home/elf# systemctl enable test2.service

      ?

      5、執(zhí)行sync后,reboot重啟

      root@elf2-desktop:/home/elf# syncroot@elf2-desktop:/home/elf# reboot

      ?

      6、驗(yàn)證

      ?

      界面配置帶界面應(yīng)用自啟

      通過 gnome-session-properties 命令可以打開開機(jī)自啟工程配置界面,在這里添加用戶自己的應(yīng)用/腳本即可,下述以HelloWorld為例進(jìn)行測試。

      ?

      1、調(diào)試串口執(zhí)行命令

      elf@elf2-desktop:~$?export?DISPLAY=:0.0elf@elf2-desktop:~$?gnome-session-properties

      ?

      時(shí)板端會出現(xiàn)如下界面

      ?

      選擇Add添加自己的啟動(dòng)腳本

      選擇添加后按提示保存退出即可。

      ?

      2、添加的test3.sh腳本內(nèi)容如下:

      #!/bin/bashexport?DISPLAY=:0.0/home/elf/HelloWorld &

      ?

      3、給腳本提供可執(zhí)行權(quán)限chmod +x /home/elf/test3.sh

      ?

      4、sync保存重啟,驗(yàn)證是否自啟動(dòng)

      ?

      運(yùn)行應(yīng)用時(shí)隱藏側(cè)邊欄

      ?

      通過系統(tǒng)設(shè)置 選中"Auto-hide the dock"再運(yùn)行Qt等應(yīng)用時(shí)側(cè)邊欄就會隱藏,運(yùn)行效果如下:

      其它推薦:

      推薦閱讀:

      /* 53客服*/ /* 百度統(tǒng)計(jì)*/ /* 百度站長*/
      <ul id="gu0q4"></ul>
    • <strike id="gu0q4"><abbr id="gu0q4"></abbr></strike>
      <strike id="gu0q4"><menu id="gu0q4"></menu></strike>
      <samp id="gu0q4"><tfoot id="gu0q4"></tfoot></samp>
      <samp id="gu0q4"><tfoot id="gu0q4"></tfoot></samp>
      • <samp id="gu0q4"></samp>