m-kaneko
2025年8月22日 8時48分
太陽誘電の金子と申します。
現在、Armadillo-IoT A9E上でC言語にて作成したプログラムを動作させるにあたり、
以下の点についてご教示いただきたく投稿いたしました。
・作成したC言語プログラムをコンパイルし、root権限で実行する方法
・socket(PF_PACKET, DG_RAM, ...)を使用した通信の実現方法
※SOCK_DGRAMを使用するためにはroot権限が必要と認識しております。
私はC言語での開発経験はございますが、ネットワーク関連の開発についてはまだ学び始めたばかりです。
初歩的な質問で恐縮ですが、設定方法や実行手順など、ご教示いただけますと幸いです。
お手数をおかけいたしますが、何卒よろしくお願いいたします。
使用する機器について
[製品] Armadillo-IoT A9E Cat.1 bis+WLAN
[ブートローダー] U-Boot SPL 2023.04-at6 (Jul 29 2025 - 00:03:07 +0000)
[Armadillo Base OS]: 3.22.1-at.1
[Linuxカーネル] 5.10.240-0-at
コメント
at_dominique.m…
マルティネです。
横からすみません。
> コンテナ起動設定ファイルに以下を記述すると、コンテナにホスト(Armadillo Base OS)のポートを渡すことができます。
>
> add_ports <ホストのポート>:<コンテナのポート>/udp >
ちなみにこれは AF_INET/AF_INET6 と SOCK_DGRAM の話です。
>socket(PF_PACKET, DG_RAM, ...)を使用した通信の実現方法
> SOCK_DGRAMを使用するためにはroot権限が必要と認識しております。
PF_PACKET に CAP_NET_RAW (man 7 packet) が必要です。 add_args --cap-add=NET_RAW
で権限をコンテナに渡す事ができますが、
PF_PACKET の利用は細かい操作(普通の通信ではなく、ネットワークスキャンやセキュリティ解析など)にしか使わない認識ですので、もしかしたら AF_INET* でよろしかったのではないかと思って指摘させていただきました。
よろしくお願いします。
m-kaneko
太陽誘電 金子です。
対応ありがとうございました。
C言語プログラムをdockerに乗せて動かし、検証しております(指定のマニュアルの通り)
コンテナ起動設定ファイル 「config/app.conf」を修正する旨承知いたしました。
1: ホストのポートをコンテナのポートに渡す。
2: PF_PACKETの場合は、コンテナにCAP_NET_RAW権限を与える
※AF_INET*が必要かは検討余地あり
追加で質問させていただきたく存じます。
armadillo、センサを同一ハブに有線LANで繋ぎ、データ収集をsocket通信を介して、
armadilloを使用したいと考えております。
以前別のエッジコンピュータ(Dockerに乗せて実行の仕組み)で実施した際は、
Dockerのネットワーク設定をホストネットワークとしてroot権限実行で実施していました。
Armadillo-IoT A9Eでもホストネットワーク設定、CAP_NET_RAW権限を与えることで正常動作しました。
今回ArmadilloのDockerネットワーク設定をホストネットワーク設定としましたが、権限範囲は限定する方が望ましいと考えております。
何か方法についてご教授いただければ幸いです。
尚、別デバイスと関わる箇所は、他にcurlコマンドによるポスト処理(APIへのPOST処理)です。
お手数おかけしますが、よろしくお願いいたします。
> マルティネです。
> 横からすみません。
>
> > コンテナ起動設定ファイルに以下を記述すると、コンテナにホスト(Armadillo Base OS)のポートを渡すことができます。
> >
> > add_ports <ホストのポート>:<コンテナのポート>/udp > >
>
> ちなみにこれは AF_INET/AF_INET6 と SOCK_DGRAM の話です。
>
> >socket(PF_PACKET, DG_RAM, ...)を使用した通信の実現方法
> > SOCK_DGRAMを使用するためにはroot権限が必要と認識しております。
>
> PF_PACKET に CAP_NET_RAW (man 7 packet) が必要です。 add_args --cap-add=NET_RAW
で権限をコンテナに渡す事ができますが、
> PF_PACKET の利用は細かい操作(普通の通信ではなく、ネットワークスキャンやセキュリティ解析など)にしか使わない認識ですので、もしかしたら AF_INET* でよろしかったのではないかと思って指摘させていただきました。
>
> よろしくお願いします。
at_satoshi.ohta
2025年8月22日 10時01分
太田です。
Armadillo Base OS ではお客様が作成するアプリケーションはコンテナを使用して開発していただくことを推奨しています。
参照: https://manual.atmark-techno.com/armadillo-iot-a9e/armadillo-iotg-a9e_p…
アットマークテクノでは Aramdillo Base OS 上に配置するアプリケーションコンテナの作成を行うための VS Code の拡張機能である ABOSDE を提供しています。
参照: https://manual.atmark-techno.com/armadillo-iot-a9e/armadillo-iotg-a9e_p…
ABOSDE では C 言語用のプロジェクトがあり、サンプルプログラムも提供していますので、そちらをご活用頂ければ幸いです。
参照: https://manual.atmark-techno.com/armadillo-iot-a9e/armadillo-iotg-a9e_p…
作成する C 言語のプログラムはコンテナ内で実行することになります。
コンテナ起動設定ファイルを使用して、Armadillo 上にあるコンテナイメージからコンテナを起動できます。
コンテナ起動設定ファイルに以下を記述すると、コンテナにホスト(Armadillo Base OS)のポートを渡すことができます。
参照: https://manual.atmark-techno.com/armadillo-iot-a9e/armadillo-iotg-a9e_p…
まずは上記の方法でお試し頂ければ幸いです。
どうぞよろしくお願いいたします。