如何使用 systemd 減少 beaglebone 的啟動時間

如何使用 systemd 減少 beaglebone 的啟動時間

我目前正在嘗試減少啟動 beaglebone green 並啟動 python 腳本所需的時間。我的簡單 python 腳本只是打開海角上的繼電器。

我使用繼電器轉動所需的時間作為啟動並執行一些有用操作所需的時間。

以前,中繼需要 18 秒,而我透過 systemd 將其減少到 14 秒。

我創建了一個簡單的單元檔案來啟動我的 python 程序

[Unit]
Description=Relaycheck run on startup
DefaultDependencies=no
After=systemd-system.slice

[Service]
WorkingDirectory=/home/
ExecStart=/home/relaycheck2.py
StandardOutput=null

[Install]
Alias=relaycheck2.service

這是目前啟動圖表的裁剪圖片: 引導圖

據我了解,我的服務運作得很早,網路等耗時的服務不會影響我的中繼服務。它是否正確?

我還能做些什麼來減少使用 systemd 啟動的時間嗎?

答案1

你的程式是否需要維護狀態(你需要可寫磁碟嗎?)你可以做的最簡單的事情就是根本不使用 init 系統。相反,請考慮將其附加到您的核心參數中(最有可能在您的 uBoot 環境/配置中):

init=/path/to/your/program

systemd因此, Linux 核心不會運行(進程管理器),而是將您的程式作為第一個進程運行。現在你說這是一個Python腳本。我不思考您可以作為 init 執行腳本。您可能需要用編譯語言編寫一個小型包裝程式來產生您的 python 應用程式。

請記住,您的 shell/包裝程式還需要處理訊號(對於沒有預設訊號處理程序的程序,init/systemd 處理訊號)。你也許可以使用類似的東西來逃脫啞初始化通常用於 Docker 容器。

如果您需要一個可寫卷,您也可以讓您的包裝程式為您安裝一個分割區(它不必是您的根分割區。您可能需要安裝一個 USB 記憶棒來儲存)。

我會先在桌上型虛擬機器中嘗試這個,因為核心參數在嵌入式系統/uBoot 上可能有點棘手。

相關內容