OKMX8MQ-C開發(fā)板如何通過Systemd服務(wù)實(shí)現(xiàn)應(yīng)用自啟

原創(chuàng) 2021-04-23 10:52:00 i.MX8M 飛凌嵌入式 i.MX8MQ

 飛凌i.MX8MQ平臺 


經(jīng)過之前文章的介紹我們已經(jīng)了解到OKMX8MQ-C開發(fā)板是基于ARM?Cortex-A53和Cortex-M4的內(nèi)核,具有業(yè)界領(lǐng)先的音頻、語音和視頻處理功能。適用于5G終端、邊緣計算網(wǎng)關(guān)、HMI、V2X、RSU加油機(jī)、 血液分析儀、PCR、瘦主機(jī)等產(chǎn)品應(yīng)用,以及醫(yī)療、電力、工業(yè)自動化、智慧交通、環(huán)境監(jiān)測、智慧水務(wù)、能耗管理等行業(yè)應(yīng)用。

這次我們就來介紹一下如何通過systemd服務(wù)實(shí)現(xiàn)音頻應(yīng)用的自啟。



什么是Systemd服務(wù)


Systemd是Linux下的一種init軟件,由Lennart Poettering帶頭開發(fā),并在LGPL 2.1及其后續(xù)版本許可證下開源發(fā)布。其開發(fā)目標(biāo)是提供更優(yōu)秀的框架以表示系統(tǒng)服務(wù)間的依賴關(guān)系,并以此實(shí)現(xiàn)系統(tǒng)初始化時,服務(wù)的并行啟動,同時達(dá)到降低Shell系統(tǒng)開銷的效果,最終代替現(xiàn)在常用的System V與BSD風(fēng)格的init程序。傳統(tǒng)的啟動是內(nèi)核啟動完成后,首先執(zhí)行的第一個進(jìn)程是/sbin/init。如果要以systemd方式啟動,首先讓內(nèi)核執(zhí)行的第一個程序則是/lib/systemd/system或/usr/lib/systemdsystemd。


啟動后,首先會去三個目錄下找相應(yīng)的配置文件,按優(yōu)先級從高到底分別為


/etc/systemd/ /usr/lib/systemd/ /lib/systemd/

優(yōu)先級高的配置文件會覆蓋優(yōu)先級低的配置文件。



Systemd自啟應(yīng)用


在此,小編介紹一種使用systemd方式來配置任意開機(jī)自啟動程序的方法。

為了方便用戶測試,小編在系統(tǒng)啟動默認(rèn)加載systemd服務(wù)autorun.service。

在/lib/systemd/system/autorun.sevice可以看到配置文件如下:



用戶可以將自己的開機(jī)自啟應(yīng)用程序放到腳本/etc/autorun.sh 中,從而實(shí)現(xiàn)開機(jī)自啟。


 常見參數(shù)解析:


[unit]區(qū)塊

Description 參數(shù)代表服務(wù)的描述(會在開機(jī)終端中打?。?/span>

Documentation: 文檔地址


After參數(shù)表示在等號后邊的服務(wù)起來以后再執(zhí)行此服務(wù),可以添加想要放在此服務(wù)之前的服務(wù)。


[service]區(qū)塊

ExecStart 參數(shù)代表執(zhí)行腳本的絕對路徑,默認(rèn)為/etc/autorun.sh 文件(用戶可以自行修改)Type: 定義啟動時的進(jìn)程行為。其常用的幾種方式為:

Type=simple:(默認(rèn)值)systemd認(rèn)為該服務(wù)將立即啟動服務(wù)進(jìn)程不會fork 。如果該服務(wù)要啟動其他服務(wù),就不要使用此類型啟動了,除非該服務(wù)是socket激活型。

Type=oneshot:這一選項(xiàng)適用于只執(zhí)行一項(xiàng)任務(wù)、隨后立即退出的服務(wù)。可能需要同時設(shè)置RemainAfterExit=yes使systemd在服務(wù)進(jìn)程退出之后仍然認(rèn)為服務(wù)處于激活狀態(tài)。

Type=idle:systemd 會等待所有任務(wù)處理完成后,才開始執(zhí)行 idle 類型的單元。其他行為與Type=simple 類似。


[Install]區(qū)塊 

WantedBy的值是一個或多個Target,當(dāng)前Unit激活時(enable)符號鏈接會放入/etc/systemd/system目錄下面以Target名 + .wants后綴構(gòu)成的子目錄中。

RequiredBy的值是一個或多個Target,當(dāng)前Unit激活時(enable)符號鏈接會放入/etc/systemd/system目錄下面以Target名+.required后綴構(gòu)成的子目錄中。

如果上述方式依然不能滿足需求,也可以自己添加 system 服務(wù)。


首先將 OKMX8MQ-C開發(fā)板上電啟動,在開發(fā)板終端中進(jìn)入到/home/root/目錄下,執(zhí)行如下命令創(chuàng)建一個腳本文件,并修改權(quán)限:

echo '#!/bin/sh' >> /home/root/helloworld.sh

echo 'gst-play-1.0 /home/forlinx/audio/test.mp3' >> /home/root/helloworld.sh

chmod 777 /home/root/helloworld.sh

進(jìn)入到“/lib/systemd/system/”目錄下,并新建一個helloworld.service文件

命令如下:

cd /lib/systemd/system

vi helloworld.service

文件的內(nèi)容如下:

[Unit]

Description=helloworld After=basic.service X.service thermal-zone-init.service

[Service]

ExecStart=/home/root/helloworld.sh

[Install]

WantedBy=multi-user.target


其中 Description 一行需寫入服務(wù)名,ExecStart 需要寫入可執(zhí)行文件的絕對路徑。

保存退出后,在終端上執(zhí)行如下命令:

systemctl -f enable /lib/systemd/system/helloworld.service

此時即可將新添加的自啟動服務(wù)生效,重啟開發(fā)板后,此程序會自動運(yùn)行,在默認(rèn)端的音頻即可聽到音頻輸出。

—— —— —— ——

Systemd服務(wù),可以實(shí)現(xiàn)并行啟動并節(jié)約啟動時間,是一個錦上添花的功能,希望這篇文章能提升您對OKMX8MQ-C開發(fā)板的使用體驗(yàn)。






相關(guān)產(chǎn)品 >

  • OKMX8MQ-C開發(fā)板

    飛凌嵌入式提供基于 NXP/Freescale iMX8、i.MX 8MQ處理器設(shè)計ARM核心板FETMX8MQ-C。i.MX8M處理器具有音頻、語音和視頻處理功能,飛凌iMX8核心板充分發(fā)揮NXP iMX8 系列 ARM 處理器性能,對功能做了優(yōu)化。提供10~15年產(chǎn)品長期供貨計劃。工作環(huán)境溫度為-40℃~85℃,滿足工業(yè)及泛工業(yè)場景應(yīng)用。 了解詳情
    OKMX8MQ-C開發(fā)板
  • FETMX8MQ-C核心板

    基于 NXP/Freescale iMX8、 iMX8X、i.MX 8MQ處理器的ARM核心板。 四核ARM Cortex-A53 ,主頻最高1.3GHz,板載2GB RAM,8GB ROM;工作環(huán)境溫度為-40℃~85℃,滿足工業(yè)及泛工業(yè)場景應(yīng)用。i.MX8M處理器具有音頻、語音和視頻處理功能,提供高水平的音頻保真度,適用于無風(fēng)扇運(yùn)行,散熱系統(tǒng)成本低、電池壽命長。具有高速接口可提供靈活連接等優(yōu)勢,并且提供10~15年產(chǎn)品長期供貨計劃。
    了解詳情
    FETMX8MQ-C核心板

推薦閱讀 換一批 換一批