OKMX8MQ-C開(kāi)發(fā)板如何通過(guò)Systemd服務(wù)實(shí)現(xiàn)應(yīng)用自啟
經(jīng)過(guò)之前文章的介紹我們已經(jīng)了解到OKMX8MQ-C開(kāi)發(fā)板是基于ARM?Cortex-A53和Cortex-M4的內(nèi)核,具有業(yè)界領(lǐng)先的音頻、語(yǔ)音和視頻處理功能。適用于5G終端、邊緣計(jì)算網(wǎng)關(guān)、HMI、V2X、RSU、加油機(jī)、 血液分析儀、PCR、瘦主機(jī)等產(chǎn)品應(yīng)用,以及醫(yī)療、電力、工業(yè)自動(dòng)化、智慧交通、環(huán)境監(jiān)測(cè)、智慧水務(wù)、能耗管理等行業(yè)應(yīng)用。
這次我們就來(lái)介紹一下如何通過(guò)systemd服務(wù)實(shí)現(xiàn)音頻應(yīng)用的自啟。
什么是Systemd服務(wù)
Systemd是Linux下的一種init軟件,由Lennart Poettering帶頭開(kāi)發(fā),并在LGPL 2.1及其后續(xù)版本許可證下開(kāi)源發(fā)布。其開(kāi)發(fā)目標(biāo)是提供更優(yōu)秀的框架以表示系統(tǒng)服務(wù)間的依賴關(guān)系,并以此實(shí)現(xiàn)系統(tǒng)初始化時(shí),服務(wù)的并行啟動(dòng),同時(shí)達(dá)到降低Shell系統(tǒng)開(kāi)銷(xiāo)的效果,最終代替現(xiàn)在常用的System V與BSD風(fēng)格的init程序。傳統(tǒng)的啟動(dòng)是內(nèi)核啟動(dòng)完成后,首先執(zhí)行的第一個(gè)進(jìn)程是/sbin/init。如果要以systemd方式啟動(dòng),首先讓內(nèi)核執(zhí)行的第一個(gè)程序則是/lib/systemd/system或/usr/lib/systemdsystemd。
啟動(dòng)后,首先會(huì)去三個(gè)目錄下找相應(yīng)的配置文件,按優(yōu)先級(jí)從高到底分別為
/etc/systemd/ /usr/lib/systemd/ /lib/systemd/
優(yōu)先級(jí)高的配置文件會(huì)覆蓋優(yōu)先級(jí)低的配置文件。
Systemd自啟應(yīng)用
在此,小編介紹一種使用systemd方式來(lái)配置任意開(kāi)機(jī)自啟動(dòng)程序的方法。
為了方便用戶測(cè)試,小編在系統(tǒng)啟動(dòng)默認(rèn)加載systemd服務(wù)autorun.service。
在/lib/systemd/system/autorun.sevice可以看到配置文件如下:
用戶可以將自己的開(kāi)機(jī)自啟應(yīng)用程序放到腳本/etc/autorun.sh 中,從而實(shí)現(xiàn)開(kāi)機(jī)自啟。
常見(jiàn)參數(shù)解析:
[unit]區(qū)塊
Description 參數(shù)代表服務(wù)的描述(會(huì)在開(kāi)機(jī)終端中打印)
Documentation: 文檔地址
After參數(shù)表示在等號(hào)后邊的服務(wù)起來(lái)以后再執(zhí)行此服務(wù),可以添加想要放在此服務(wù)之前的服務(wù)。
[service]區(qū)塊
ExecStart 參數(shù)代表執(zhí)行腳本的絕對(duì)路徑,默認(rèn)為/etc/autorun.sh 文件(用戶可以自行修改)Type: 定義啟動(dòng)時(shí)的進(jìn)程行為。其常用的幾種方式為:
Type=simple:(默認(rèn)值)systemd認(rèn)為該服務(wù)將立即啟動(dòng)服務(wù)進(jìn)程不會(huì)fork 。如果該服務(wù)要啟動(dòng)其他服務(wù),就不要使用此類(lèi)型啟動(dòng)了,除非該服務(wù)是socket激活型。
Type=oneshot:這一選項(xiàng)適用于只執(zhí)行一項(xiàng)任務(wù)、隨后立即退出的服務(wù)。可能需要同時(shí)設(shè)置RemainAfterExit=yes使systemd在服務(wù)進(jìn)程退出之后仍然認(rèn)為服務(wù)處于激活狀態(tài)。
Type=idle:systemd 會(huì)等待所有任務(wù)處理完成后,才開(kāi)始執(zhí)行 idle 類(lèi)型的單元。其他行為與Type=simple 類(lèi)似。
[Install]區(qū)塊
WantedBy的值是一個(gè)或多個(gè)Target,當(dāng)前Unit激活時(shí)(enable)符號(hào)鏈接會(huì)放入/etc/systemd/system目錄下面以Target名 + .wants后綴構(gòu)成的子目錄中。
RequiredBy的值是一個(gè)或多個(gè)Target,當(dāng)前Unit激活時(shí)(enable)符號(hào)鏈接會(huì)放入/etc/systemd/system目錄下面以Target名+.required后綴構(gòu)成的子目錄中。
如果上述方式依然不能滿足需求,也可以自己添加 system 服務(wù)。
首先將 OKMX8MQ-C開(kāi)發(fā)板上電啟動(dòng),在開(kāi)發(fā)板終端中進(jìn)入到/home/root/目錄下,執(zhí)行如下命令創(chuàng)建一個(gè)腳本文件,并修改權(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/”目錄下,并新建一個(gè)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 一行需寫(xiě)入服務(wù)名,ExecStart 需要寫(xiě)入可執(zhí)行文件的絕對(duì)路徑。
保存退出后,在終端上執(zhí)行如下命令:
systemctl -f enable /lib/systemd/system/helloworld.service
此時(shí)即可將新添加的自啟動(dòng)服務(wù)生效,重啟開(kāi)發(fā)板后,此程序會(huì)自動(dòng)運(yùn)行,在默認(rèn)端的音頻即可聽(tīng)到音頻輸出。
—— —— —— ——
Systemd服務(wù),可以實(shí)現(xiàn)并行啟動(dòng)并節(jié)約啟動(dòng)時(shí)間,是一個(gè)錦上添花的功能,希望這篇文章能提升您對(duì)OKMX8MQ-C開(kāi)發(fā)板的使用體驗(yàn)。
相關(guān)產(chǎn)品 >
-
OKMX8MQ-C開(kāi)發(fā)板
飛凌嵌入式提供基于 NXP/Freescale iMX8、i.MX 8MQ處理器設(shè)計(jì)ARM核心板FETMX8MQ-C。i.MX8M處理器具有音頻、語(yǔ)音和視頻處理功能,飛凌iMX8核心板充分發(fā)揮NXP iMX8 系列 ARM 處理器性能,對(duì)功能做了優(yōu)化。提供10~15年產(chǎn)品長(zhǎng)期供貨計(jì)劃。工作環(huán)境溫度為-40℃~85℃,滿足工業(yè)及泛工業(yè)場(chǎng)景應(yīng)用。 了解詳情 -
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è)場(chǎng)景應(yīng)用。i.MX8M處理器具有音頻、語(yǔ)音和視頻處理功能,提供高水平的音頻保真度,適用于無(wú)風(fēng)扇運(yùn)行,散熱系統(tǒng)成本低、電池壽命長(zhǎng)。具有高速接口可提供靈活連接等優(yōu)勢(shì),并且提供10~15年產(chǎn)品長(zhǎng)期供貨計(jì)劃。
了解詳情