uesugi
2023年11月1日 10時13分
お世話になっております。
コンテナ内からホストOSの再起動を実行する手順を確認させてください。
・https://manual.atmark-techno.com/armadillo-iot-a6e/armadillo-iotg-a6e_p…
章:6.8.9. コンテナからのpoweroff及びreboot より、
”--pid=host” をコンテナのrun時に入れて実行しようとすると、下記エラーにより、コンテナが起動しませんでした。
Couldn't find an alternative telinit implementation to spawn.
”--pid=host”有効条件・方法等はありますでしょうか?
現在の環境は以下になります。
・コンテナイメージ:docker.io/arm32v7/debian:bullseye
・--entrypoint /sbin/init app
⇒ /sbin/init -> /lib/systemd/systemd(busyboxなし)
・追加引数:--privileged、--net=host
コメント
uesugi
uesugi
マルティネ様
お世話になっております。
所持しているArmadillo3台の内、1台だけに起こっている事象です。
再起動用のコンテナを起動しようとすると、
下記エラーが表示されてしまい、起動できない状態です。
何か解決方法等は無いでしょうか?
podman-atmark |Starting 'reboot'
local | * local: waiting for podman-atmark (50 seconds)
podman-atmark |Error: crun: open executable: Operation not permitted: OCI permission denied
podman-atmark |error: Could not start reboot
podman-atmark | * Could not start all containers
podman-atmark | [ !! ]
podman-atmark | * ERROR: podman-atmark failed to start>
at_dominique.m…
uesugiさん
お世話になっています、
マルティネです。
> podman-atmark |Error: crun: open executable: Operation not permitted: OCI permission denied
分かりにくいエラーですが、おそらく実行しっているコマンドに execute permission (実行制限)がないです。
前回の例では、「ls -l /var/app/volumes/reboot_server.sh
」を実行すると 「-rwxr-xr-x 1 root root 196 Nov 1 11:18 /var/app/volumes/reboot_server.sh
」として表示されるはずですが、エラーが発生している armadillo では最初の制限の部分が「-rw-r--r--」になっていると思われます。
chmod +x で実行可能にするか、set_command を「sh /reboot_server.sh」に変更しましたらコンテナを起動できるようになると思いますが、いかがでしょうか。
よろしくお願いします。
uesugi
> uesugiさん
>
> お世話になっています、
> マルティネです。
>
>
> > podman-atmark |Error: crun: open executable: Operation not permitted: OCI permission denied >
>
> 分かりにくいエラーですが、おそらく実行しっているコマンドに execute permission (実行制限)がないです。
>
> 前回の例では、「ls -l /var/app/volumes/reboot_server.sh
」を実行すると 「-rwxr-xr-x 1 root root 196 Nov 1 11:18 /var/app/volumes/reboot_server.sh
」として表示されるはずですが、エラーが発生している armadillo では最初の制限の部分が「-rw-r--r--」になっていると思われます。
>
> chmod +x で実行可能にするか、set_command を「sh /reboot_server.sh」に変更しましたらコンテナを起動できるようになると思いますが、いかがでしょうか。
>
> よろしくお願いします。
ご回答ありがとうございます。
お手数をお掛けしまい、申し訳ありません。
ご指摘の通り、「reboot_server.sh
」の実行権限が無い状態でした。
修正したところ、問題なくコンテナを起動できました。
以上になります。
at_dominique.m…
2023年11月1日 11時23分
uesugiさん
お世話になっています、
マルティネです。
> ・https://manual.atmark-techno.com/armadillo-iot-a6e/armadillo-iotg-a6e_p…
> 章:6.8.9. コンテナからのpoweroff及びreboot より、
>
> ”--pid=host” をコンテナのrun時に入れて実行しようとすると、下記エラーにより、コンテナが起動しませんでした。
> Couldn't find an alternative telinit implementation to spawn.
>
> ”--pid=host”有効条件・方法等はありますでしょうか?
このエラーは systemd のエラーです。
コンテナの systemd は pid=1 で起動されてない場合は別の処理を行うため、--pid=host で失敗します。
systemd が必要な場合にこの poweroff/reboot 方法は向いてないですね、申し訳ございません。
大変お手数ですが、ABOS で使用している busybox init は他の再起動を起こす方法はありませんので、コンテナ外(か別の --pid=host コンテナ)でサービスを追加して reboot/poweroff を対応するしかないです。
例えば、add_volumes で共有する fifo を使って以下の様に対応できます:
で、制御するコンテナからおなじく 「
add_volumes /run/reboot_server:/reboot_server:ro
」 を共有して 「echo reboot > /reboot_server/fifo
」で再起動できます。いずれは abos-web 経由でこういう制御をできるようにしたいですが、それまではこういうワークアラウンドで対応していただければと思います。
よろしくお願いします。