飛凌OKMX8MQ-C開發板是基于ARM®Cortex-A53和Cortex-M4的內核,具有業界領先的音頻、語音和視頻處理功能。 這次我們就來介紹一下如何通過systemd服務實現音頻應用的自啟。 什么是Systemd服務 Systemd是Linux下的一種init軟件,由Lennart Poettering帶頭開發,并在LGPL 2.1及其后續版本許可證下開源發布。其開發目標是提供更優秀的框架以表示系統服務間的依賴關系,并以此實現系統初始化時,服務的并行啟動,同時達到降低Shell系統開銷的效果,最終代替現在常用的System V與BSD風格的init程序。傳統的啟動是內核啟動完成后,首先執行的第一個進程是/sbin/init。如果要以systemd方式啟動,首先讓內核執行的第一個程序則是/lib/systemd/system或/usr/lib/systemdsystemd。 啟動后,首先會去三個目錄下找相應的配置文件,按優先級從高到底分別為 /etc/systemd/ /usr/lib/systemd/ /lib/systemd/ 優先級高的配置文件會覆蓋優先級低的配置文件。 Systemd自啟應用 在此,小編介紹一種使用systemd方式來配置任意開機自啟動程序的方法。 為了方便用戶測試,小編在系統啟動默認加載systemd服務autorun.service。 在/lib/systemd/system/autorun.sevice可以看到配置文件如下: 用戶可以將自己的開機自啟應用程序放到腳本/etc/autorun.sh 中,從而實現開機自啟。 常見參數解析: [unit]區塊 Description 參數代表服務的描述(會在開機終端中打印) Documentation: 文檔地址 After參數表示在等號后邊的服務起來以后再執行此服務,可以添加想要放在此服務之前的服務。 [service]區塊 ExecStart 參數代表執行腳本的絕對路徑,默認為/etc/autorun.sh 文件(用戶可以自行修改)Type: 定義啟動時的進程行為。其常用的幾種方式為: Type=simple:(默認值)systemd認為該服務將立即啟動服務進程不會fork 。如果該服務要啟動其他服務,就不要使用此類型啟動了,除非該服務是socket激活型。 Type=oneshot:這一選項適用于只執行一項任務、隨后立即退出的服務。可能需要同時設置RemainAfterExit=yes使systemd在服務進程退出之后仍然認為服務處于激活狀態。 Type=idle:systemd 會等待所有任務處理完成后,才開始執行 idle 類型的單元。其他行為與Type=simple 類似。 [Install]區塊 WantedBy的值是一個或多個Target,當前Unit激活時(enable)符號鏈接會放入/etc/systemd/system目錄下面以Target名 + .wants后綴構成的子目錄中。 RequiredBy的值是一個或多個Target,當前Unit激活時(enable)符號鏈接會放入/etc/systemd/system目錄下面以Target名+.required后綴構成的子目錄中。 如果上述方式依然不能滿足需求,也可以自己添加 system 服務。 首先將 OKMX8MQ-C開發板上電啟動,在開發板終端中進入到/home/root/目錄下,執行如下命令創建一個腳本文件,并修改權限: 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 進入到“/lib/systemd/system/”目錄下,并新建一個helloworld.service文件 命令如下: cd /lib/systemd/system vi helloworld.service 文件的內容如下: [Unit] Description=helloworld After=basic.service X.service thermal-zone-init.service [Service] ExecStart=/home/root/helloworld.sh [Install] WantedBy=multi-user.target 其中 Description 一行需寫入服務名,ExecStart 需要寫入可執行文件的絕對路徑。 保存退出后,在終端上執行如下命令: systemctl -f enable /lib/systemd/system/helloworld.service 此時即可將新添加的自啟動服務生效,重啟開發板后,此程序會自動運行,在默認端的音頻即可聽到音頻輸出。 —— —— —— —— Systemd服務,可以實現并行啟動并節約啟動時間,是一個錦上添花的功能,希望這篇文章能提升您對OKMX8MQ-C開發板的使用體驗。 原文鏈接:https://www.forlinx.com/article_view_696.html |