systemd를 사용하여 비글본의 부팅 시간을 줄이는 방법

systemd를 사용하여 비글본의 부팅 시간을 줄이는 방법

현재 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

귀하의 프로그램은 상태를 유지해야 합니까(쓰기 가능한 디스크가 필요합니까?) 귀하가 할 수 있는 금식은 초기화 시스템을 전혀 사용하지 않는 것입니다. 대신 이것을 커널 인수에 추가하는 것을 고려하십시오(대부분 uBoot 환경/구성에서):

init=/path/to/your/program

systemd따라서 프로세스 관리자를 실행하는 대신 Linux 커널은 프로그램을 첫 번째 프로세스로 실행합니다. 이제 이것이 Python 스크립트라고 말씀하셨습니다. 나는 아니에요생각하다init로 스크립트를 실행할 수 있습니다. Python 애플리케이션을 생성할 컴파일된 언어로 작은 래퍼 프로그램을 작성해야 할 수도 있습니다.

쉘/래퍼 프로그램도 신호를 처리해야 한다는 점을 명심하십시오(기본 신호 핸들러가 없는 프로그램의 경우 init/systemd 핸들 신호). 다음과 같은 것을 사용하여 벗어날 수도 있습니다.멍청한 초기화이는 일반적으로 Docker 컨테이너에 사용됩니다.

쓰기 가능한 볼륨이 필요한 경우 래퍼 프로그램에서 파티션을 마운트하도록 할 수 있습니다(루트 파티션일 필요는 없습니다. 저장을 위해 USB 스틱을 마운트할 수도 있습니다).

임베디드 시스템/uBoot에서는 커널 매개변수가 약간 까다로울 수 있으므로 먼저 데스크탑 VM에서 이것을 시도해 보겠습니다.

관련 정보