Armadilloフォーラム

podman_start で自動起動したプログラムからのハードウェア制御

ndk

2022年8月9日 18時42分

お世話になります。

podman_start で自動起動したプログラムからのハードウェア制御についてお尋ねします。
podman start xxx → podman attach xxx で起動したコンテナ上では、java系で作成したプログラムから GPIO や PWM を制御できています。しかし、podman_startで自動起動すると、GPIO や PWM を制御できなくなってしまいます。注意すべき事項があるはずですが、ご教示ください。

podman_start の設定で /sys や /run/udev などをコンテナに引き渡しております。xinit コマンドを実行させて、/root/.xinitrc ファイルからのプログラムを立ち上げ、ハードウェアをアクセスさせています。

以上、よろしくお願いします。

コメント

at_dominique.m…

2022年8月15日 9時35分

ndkさん、

お世話なっています、アットマークテクノのマルティネです。

> podman_start で自動起動したプログラムからのハードウェア制御についてお尋ねします。
> podman start xxx → podman attach xxx で起動したコンテナ上では、java系で作成したプログラムから GPIO や PWM を制御できています。しかし、podman_startで自動起動すると、GPIO や PWM を制御できなくなってしまいます。注意すべき事項があるはずですが、ご教示ください。
>
> podman_start の設定で /sys や /run/udev などをコンテナに引き渡しております。xinit コマンドを実行させて、/root/.xinitrc ファイルからのプログラムを立ち上げ、ハードウェアをアクセスさせています。

podman_start はあくまでも podman runを使っているので、podman create+startとほぼ同じです。
コンフィグに問題なければ特に注意がいらないはずです。

手動で podman_start で実行すればPWMを制御できていますでしょうか?もし同じ問題が発生したら、
「podman_start -n -a 」で実際の podman run のコマンドを確認できますので、その手動の(PWMなどを制御できる)コマンドと比べることができます。

また、「podman exec -ti <コンテナ名> sh」などでコンテナの環境にシェルを使えますので、これで /sys のマウント状態も確認できます。
デフォルトでは /sys に特に制限がないので、マウントされていたら使えると思いますが、いかがでしょうか。

よろしくお願いします。

マルティネ様

いつもお世話になります。
手動での podman_start コマンド実行でもうまくいきませんでした。
その後、プログラム中で /sys/class/pwm/pwmchip0/export に対して echo 0 の出力をリダイレクトしていたステートメント部分をシェルスクリプトの呼び出しに置き換えて試したところ、 /sys/class/pwm/pwmchip0 ディレクトリ内に pwm0 サブディレクトリが生成されるようになり、その中のファイルを使用できることが確認できました。

取り敢えず、この方式で進めていこうかと考えております。
ありがとうございました。

> お世話になります。
>
> podman_start で自動起動したプログラムからのハードウェア制御についてお尋ねします。
> podman start xxx → podman attach xxx で起動したコンテナ上では、java系で作成したプログラムから GPIO や PWM を制御できています。しかし、podman_startで自動起動すると、GPIO や PWM を制御できなくなってしまいます。注意すべき事項があるはずですが、ご教示ください。
>
> podman_start の設定で /sys や /run/udev などをコンテナに引き渡しております。xinit コマンドを実行させて、/root/.xinitrc ファイルからのプログラムを立ち上げ、ハードウェアをアクセスさせています。
>
> 以上、よろしくお願いします。
>