警告メッセージ

Howtoは、Armadilloシリーズを有効に活用するための参考資料です。使用ソフトウェアのバージョンなど諸条件の差異によって、記載内容と実際の動作が異なる場合があります。また、すべての機能検証や長期の動作試験を行ったものではありませんので、必ずご使用目的に適合した検証・試験を行ってください。

Howto : Debianのパッケージに含まれるコンパイル済みのバイナリをArmadilloで動作させる方法

対象製品: Armadillo-IoT G1/G2Armadillo-Box WS1Armadillo-840Armadillo-810Armadillo-500 FXArmadillo-500Armadillo-460Armadillo-440Armadillo-420Armadillo-300Armadillo-9Armadillo-240Armadillo-230Armadillo-220Armadillo-210Armadillo(HT1070)Armadillo-J

Debian のパッケージ(deb)に含まれているアプリケーションプログラムのバイナリ(実行ファイル)を 、Armadillo で動作させる方法について説明します。基本的には、ARM 用のパッケージに含まれているバイナリと、関連するライブラリをコピーすれば、動作します。

おおまかな手順は下記のようになります。

  1. 対象となるバイナリがどのパッケージに含まれているか調べる
  2. パッケージを取得する
  3. パッケージを展開する
  4. 対象バイナリを Armadillo にコピーする

この Howto の例では、以下の環境を想定しています。ご利用の環境に合わせて適宜読みかえてください。

  • 対象製品:Armadillo-9
  • 対象バイナリ:fdisk
  • ATDE:ATDE2 v20071018

なお、アプリケーションプログラムではなく、ライブラリを使用したい場合は「Howto : クロス開発用ライブラリをインストールする方法」を参照してください。

1. 対象となるバイナリがどのパッケージに含まれているか調べる

まず、どのパッケージに fdisk が入っているか調べます。

ATDE では、dpkg -S コマンドで調べることができます。


[PC ~]$ dpkg -S /sbin/fdisk
util-linux: /sbin/fdisk

となり、 util-linux というパッケージに含まれていることがわかります。

次に、fdisk の実行に必要なライブラリを調べます。


[PC ~]$ ldd /sbin/fdisk
        linux-gate.so.1 =>  (0xffffe000)
        libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7e90000)
        /lib/ld-linux.so.2 (0xb7fcc000)

vDSOのlinux-gate.so.11とlibc、ローダの3つだけなので、バイナリをコピーするだけで問題無さそうです。もし、他のライブラリにリンクされていたら、ライブラリパッケージも必要になります。ATDE や Linux の環境が無い場合は、Debian のパッケージページで必要なライブラリを検索することができます。

2. パッケージを取得する

さて、実際に必要なパッケージのファイルですが、先ほどの Debian のパッケージページから取得することができます。

パッケージディレクトリに util-linux を指定して検索してください。お使いの製品、開発環境によってダウンロードするディストリビューション、アーキテクチャが異なります。以下の表を参考に適切なものをダウンロードしてください。

製品 開発環境 ディストリビューション アーキテクチャ
Armadillo-810
Armadillo-840
ATDE5 Debian 7.0 wheezy armhf
Armadillo-IoT
Armadillo-Box WS1
ATDE5 Debian 7.0 wheezy armel
Armadillo-420 ATDE5 Debian 7.0 wheezy armel
ATDE3 Debian 5.0 lenny * armel
Armadillo-440
Armadillo-460
ATDE3 Debian 5.0 lenny * armel
Armadillo-500
Armadillo-500 FX
Armadillo-300
Armadillo-9
Armadillo-210
Armadillo-220
Armadillo-230
Armadillo-240
ATDE2 Debian 4.0 etch * arm

* 2015年11月現在、ATDE3(Debian 5.0 lenny)、ATDE2(Debian 4.0 etch)のパッケージはDebianのパッケージサイトからは検索できませんので、アーカイブからパッケージを探す必要があります。

実際のダウンロードページの URL は、下記になります2

http://ftp.jp.debian.org/debian/pool/main/u/util-linux/util-linux_2.12r-19etch1_arm.deb

この URL からパッケージをダウンロードします。

3. パッケージを展開する

パッケージから fdisk のバイナリを取り出します。


[PC ~]$ dpkg -x util-linux_2.12r-19etch1_arm.deb temp-dir

dpkgにオプション「-x」を指定することで、パッケージの中身を取り出すことができます。取り出したファイルが置かれるディレクトリは、コマンドの最後で指定します。例では「temp-dir」を指定していますが、ディレクトリ名はなんでもokです。対象の fdisk のバイナリは、temp-dir/sbin/fdisk にあります。

4. 対象バイナリを Armadillo にコピーする

最後に、temp-dir/sbin/fdisk を Armadillo-9 にコピーすれば使うことができます。

今回は、バイナリだけで動作しますが、手順1で動作に必要なライブラリがある場合は、それらのライブラリもコピーしてください。


  1. vDSOは、virtual DSO(dynamic shared object)のことで、システムコールの速度向上のために、全てのプロセスのメモリにカーネルよって割り当てられます。vDSOがマッピングされるアドレスは、0xffffe000に固定されています。(カーネル2.6.18からは、ランダムに割り当てられるようになりました。)vDSOは、カーネルによって割り当てられるものなので、linux-gate.so.1というファイルは存在しません。 

  2. 上記の例で使っているパッケージは、Debian 4.0 (Etch)用です。Etch用のパッケージは 2010年6月に archive.debian.orgに移動されました。上記と同じパッケージの場所は、以下のURLになります。http://archive.debian.org/debian/pool/main/u/util-linux/util-linux_2.12r-19etch1_arm.deb