반응형
증상
yocto 에서 busybox 를 빌드후에 보니... inittab
도 없다. rcS
도 없다. rc.local
도 없다.
대체 user init script 는 어디다가 넣어야할까?
systemd
최근 트랜드?엔 inittab
, init.d
말고 systemd
를 쓰는것 같다.
systemd 에 대한 설명은 구글링하면 많이나오니 대략적으로 스터디를 추천한다.
systemd 확인방법은 다음과 같다.
> ls -al /sbin/init
lrwxrwxrwx 1 root root 20 Aug 28 2019 /sbin/init -> /lib/systemd/systemd
/sbin/init
를 보면 현재 init
시스템이 어떤것인지 확인가능하다. 위의시스템의 경우 /sbin/init -> /lib/systemd/systemd
이므로 init
시스템은 systemd
이다.
systemd 등록하기
1. 서비스파일 작성하기
/etc/systemd/system/
폴더에 서비스 파일을 작성하고 권한을 수정한다.
sudo touch /etc/systemd/system/foo-daemon.service
sudo chmod 664 /etc/systemd/system/foo-daemon.service
이때의 foo-daemon.service
파일 내용은 다음과 같이 세팅하면된다. (적절히 수정할것)
[Unit]
Description=Foo
[Service]
Type=simple
ExecStart=/usr/sbin/foo-daemon
[Install]
WantedBy=multi-user.target
- init script 대용으로 간단히 1회만 실행하고 끝낼것이기 때문에
Type=simple
로 작성한다. ExecStart=/usr/sbin/foo-daemon
부분에 실제 동작할 스크립트의 path 를 넣는다./usr/sbin/foo-daemon
는shell script
형식으로 작성
2. systemd 서비스 등록
서비스가 잘동작하는지 테스트를 위해서 등록한 systemd를 실행해본다.
sudo systemctl daemon-reload
sudo systemctl start foo-daemon
위의 명령은 1회성이며, 매 부팅시마다 동작시키기위해서는 다음의 명령어로 서비스 등록한다.
systemctl enable foo-daemon
이후에 부팅하게되면 /usr/sbin/foo-daemon
가 매번실행된다.
끗.
반응형