Armadilloフォーラム

Armadillo起動時のスクリプトファイル自動実行について

h-yuusuke

2022年3月8日 15時41分

お世話になっております。

掲題の件に関しまして、Armadilloの起動時にBaseOS上でスクリプトファイルを自動実行させたいと考えております。
BaseOS上でスクリプトファイルを自動実行させる場合、どのファイルを編集すればよいでしょうか?

コメント

at_dominique.m…

2022年3月8日 16時45分

h-yuusukeさん、

> 掲題の件に関しまして、Armadilloの起動時にBaseOS上でスクリプトファイルを自動実行させたいと考えております。
> BaseOS上でスクリプトファイルを自動実行させる場合、どのファイルを編集すればよいでしょうか?

大きく別けて三つのやり方があります:
- localのサービスを有効にして、/etc/local.d にファイルをスクリプトを入るか (xxx.start / xxx.stopの名前でなければなりません)

armadillo:~# rc-update add local
 * service local added to runlevel default
armadillo:~# printf "%s\n" "#!/bin/sh" "" "date > /tmp/boottest" > /etc/local.d/date_test.start
armadillo:~# chmod +x /etc/local.d/date_test.start
armadillo:~# persist_file -v /etc/runlevels/default/local /etc/local.d/date_test.start 
'/etc/runlevels/default/local' -> '/mnt/etc/runlevels/default/local'
'/etc/local.d/date_test.start' -> '/mnt/etc/local.d/date_test.start'
armadillo:~# reboot
...
armadillo:~# cat /tmp/boottest 
Tue Mar  8 16:35:36 JST 2022

この場合はすでに/etc/swupdate_preserve_filesのデフォルトで保存するので、これだけでいいです。

- 自分のサービスを追加するか

armadillo:~# cat /etc/init.d/myservice 
#!/sbin/openrc-run
 
name="my service"
 
start() {
	command command
}
armadillo:~# chmod +x  /etc/init.d/myservice
armadillo:~# rc-update add myservice
 * service myservice added to runlevel default
armadillo:~# persist_file -vP /etc/init.d/myservice /etc/runlevels/default/myservice
'/etc/init.d/myservice' -> '/mnt/etc/init.d/myservice'
Added "POST /etc/init.d/myservice" to /etc/swupdate_preserve_files
'/etc/runlevels/default/myservice' -> '/mnt/etc/runlevels/default/myservice'
Added "POST /etc/runlevels/default/myservice" to /etc/swupdate_preserve_files

(persist_file -P のオプションは12月のアップデートに搭載されたオプションで、なければ手動でswupdate_preserve_filesに追加する必要があります。swuでファイルを送る場合も同じです。)

- コンテナに必要な制限を設定してコンテナで実行するか。
これは普通の /etc/atmark/containers/*.conf で行うので特に説明は不要だと思いますが、他のコンテナの管理や共有するマウンドも可能ですので、相談していただけたら不可能がないと思います。

のどれかの方法を使ってください。

よろしくお願いします。