Howto

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

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