Armadilloフォーラム

LinuxカーネルへDHCPを組み込みビルドする方法

saw

2014年10月29日 17時49分

いつもお世話になります。

Armadillo-800EVAにおいて、DHCPを組み込んでクロスビルドする方法がわからず、
ご教示頂けないでしょうか。詳細について下記に示させて頂きます。

(1)環境
 ・組み込み対象機器:Armadillo-800EVA
  (Armadillo側はネット接続ができない状況です)
 ・仮想環境:VMware-Debian6.0.3(squeeze)※Armadillo-800EVA推奨環境

(2)目的
 PCの仮想環境上で、ArmadilloのLinuxカーネルにDHCPサーバー機能を
 組み込んでビルドさせ、イメージファイルを作り、SDブートによりArmadilloを起動。
 ⇒Armadilloとスマホ等をWi-Fi接続させ、IPアドレスを自動振り分けさせる(→確認でき次第、FTPも同様に実装したい)

(3)実行履歴
 ①ArmadilloのLinuxカーネルのソースアーカイブ(linux-2.6.35-a800eva-at3.tar.gz)を
  DVDより取得し、仮想環境上で展開を実施。(Armadillo800EVA製品マニュアル11.1~11.2)
 ②https://packages.debian.org/ja/squeeze/isc-dhcp-server
  上記HPより、"isc-dhcp-server_4.1.1-P1-15+squeeze8_armel.deb"をダウンロード。
  ⇒仮想環境上でarコマンドにより展開。
  

ソースファイルとバイナリファイルがある状態で、ここからの作業がわからず、
滞っている状況です。
800EVAが他と条件が異なっている(AtmarkDist非対応)こともあり、
なかなか作業方法を見つけられずにいます。
ご教示頂けますと幸いです。

※下記を試したができず
 ・menuconfigによる組み込み
  ⇒http://lists.atmark-techno.com/pipermail/armadillo/2012-August/008287.h…
   上記HPを参考に"make menuconfig"を実施したが、
   Userlandの設定画面に移らず、実行できず。(AtmarkDistに800EVAが非対応なのが要因?)

コメント

at_hanada

2014年10月29日 22時31分

花田です。

> (2)目的
>  PCの仮想環境上で、ArmadilloのLinuxカーネルにDHCPサーバー機能を
>  組み込んでビルドさせ、イメージファイルを作り、SDブートによりArmadilloを起動。

DHCPサーバーはアプリケーションなので、カーネルに組み込むわけではありません。
ユーザーランド(一般PCにおけるHDD/SSDに相当)側にインストールするだけです。

多くのArmadilloではAtmark Distを使用して作成するユーザーランドイメージに組み込むことになりますが、a800evaの標準Linux環境はDebianが使用されています。Debianのユーザーランド、すなわちeMMC(またはSD)上に構築されたDebian環境にdhcpサーバーをインストールすることになります。

>  ②https://packages.debian.org/ja/squeeze/isc-dhcp-server
>   上記HPより、"isc-dhcp-server_4.1.1-P1-15+squeeze8_armel.deb"をダウンロード。

isc-dhcp-serverを使用するならば、通常Debian上から

a800eva# apt-get install isc-dhcp-server

するだけでインストールされます。(a800evaのDebianでプロクシを使う場合も、ATDEでの設定と同様です)

しかし
> (1)環境
>  ・組み込み対象機器:Armadillo-800EVA
>   (Armadillo側はネット接続ができない状況です)
ということでしたら、PCでダウンロードしたパッケージをArmadillo上に持っていくしかないですね。

ダウンロードした"isc-dhcp-server_4.1.1-P1-15+squeeze8_armel.deb"を、SDなどでa800eva上に持って行って

a800eva# dpkg -i isc-dhcp-server_4.1.1-P1-15+squeeze8_armel.deb

することによりインストールされます。

しかし標準状態からこれを行うだけですと、インストールに失敗すると思います。

Debian -- Details of package isc-dhcp-server in squeeze
https://packages.debian.org/ja/squeeze/isc-dhcp-server

このページで「dep(depend=依存)」されているパッケージ、さらにその依存パッケージから「dep」されているパッケージ…と数珠つなぎに必要なパッケージがあるからです。これらの依存パッケージもすべてisc-dhcp-serverと同様にダウンロードして、a800evaにインストールする必要があります。

saw

2014年10月31日 17時33分

花田様
 ご回答ありがとうございます。

> > (1)環境
> >  ・組み込み対象機器:Armadillo-800EVA
> >   (Armadillo側はネット接続ができない状況です)
> ということでしたら、PCでダウンロードしたパッケージをArmadillo上に持っていくしかないですね。
> ダウンロードした"isc-dhcp-server_4.1.1-P1-15+squeeze8_armel.deb"を、SDなどでa800eva上に持って行って
> a800eva# dpkg -i isc-dhcp-server_4.1.1-P1-15+squeeze8_armel.deb
> することによりインストールされます。
> しかし標準状態からこれを行うだけですと、インストールに失敗すると思います。
> Debian -- Details of package isc-dhcp-server in squeeze
> https://packages.debian.org/ja/squeeze/isc-dhcp-server
> このページで「dep(depend=依存)」されているパッケージ、さらにその依存パッケージから「dep」されているパッケージ…と数珠つなぎに必要なパッ
> ケージがあるからです。これらの依存パッケージもすべてisc-dhcp-serverと同様にダウンロードして、a800evaにインストールする必要があります。

⇒目的の"isc-dhcp-server_4.1.1-P1-15+squeeze8_armel.deb"と、その依存関係のパッケージをダウンロードし、
 そこからArmadillo上でインストールすることができました(合計29パッケージ)。ありがとうございます。

[問題点]
①"startpar: service(s) returned failure: isc-dhcp-server ... failed!"とエラーが出てしまっており、
 こちらについては調査中です。
 もしわかりましたらご教示頂けますと幸いです。
 (設定におかしいところがあるのではないかと考え、調査しています)

②Armadillo-800EVAをターゲットとして考える場合、
 今回の「アーキテクチャ:armel」でのダウンロードパッケージでは、
 ターゲットが異なっているので使えないものなのでしょうか。
 (コマンド"uname -m"でArmadilloのアーキテクチャを見ると、"armv7l"が返ってくる)
 また、depされているパッケージに「アーキテクチャ:all」のものもありましたが、
 下記参照HPにもありますが、そのままインストールはできないと考えてよろしいでしょうか。
 cf.
  http://lists.atmark-techno.com/pipermail/armadillo/2012-February/007890…

③別の方法として(①、②がだめな場合)、ソースパッケージ(https://packages.debian.org/source/squeeze/isc-dhcp)を
 コンパイルし、生成したパッケージをArmadilloでインストールする方法が考えられるのかと思うのですが、
 Armadillo-800EVAをターゲットとしてATDE4上でクロスコンパイルする方法についてご教示頂けないでしょうか。
 cf.2.3項(ATDE3の場合は説明がある様でした)
  http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-2_ja-2…

at_yuma.arakawa

2014年11月4日 15時42分

荒川です。

> ②Armadillo-800EVAをターゲットとして考える場合、
>  今回の「アーキテクチャ:armel」でのダウンロードパッケージでは、
>  ターゲットが異なっているので使えないものなのでしょうか。
>  (コマンド"uname -m"でArmadilloのアーキテクチャを見ると、"armv7l"が返ってくる)

armelのパッケージを使用してください。

パッケージ名のアーキテクチャと、"uname -m"は対応するものではありません。
"armel"はアプリケーションとOS間の規約(ABI)を示し、"armv7l"はARMプロセッサのアーキテクチャを示しています。

アプリケーションをインストールする際に注意すべきはABIで、
Armadillo-800EVAのユーザランドでは、armelで統一しています。

>  また、depされているパッケージに「アーキテクチャ:all」のものもありましたが、
>  下記参照HPにもありますが、そのままインストールはできないと考えてよろしいでしょうか。
>  cf.
>   http://lists.atmark-techno.com/pipermail/armadillo/2012-February/007890…

そのままでインストール可能です。
「アーキテクチャ:all」はアーキテクチャに依存しないパッケージです。

saw

2014年11月6日 11時03分

荒川様
 ありがとうございます。

> armelのパッケージを使用してください。
> パッケージ名のアーキテクチャと、"uname -m"は対応するものではありません。
> "armel"はアプリケーションとOS間の規約(ABI)を示し、"armv7l"はARMプロセッサのアーキテクチャを示しています。
> アプリケーションをインストールする際に注意すべきはABIで、
> Armadillo-800EVAのユーザランドでは、armelで統一しています。

> そのままでインストール可能です。
> 「アーキテクチャ:all」はアーキテクチャに依存しないパッケージです。

⇒ありがとうございます。
 上記に沿いダウンロード、インストールを行い、DHCPとしての動作を確認できました。
 ※依存関係のパッケージの中で、armelもallもないもの・ダウンロードがないものがありましたが、
   それらはダウンロードしておりません。
  IP割り当てまでできているので問題ないと思いますが、何かあればご指摘願います。