Debian のパッケージ(deb)に含まれているアプリケーションプログラムのバイナリ(実行ファイル)を 、Armadillo で動作させる方法について説明します。基本的には、ARM 用のパッケージに含まれているバイナリと、関連するライブラリをコピーすれば、動作します。
おおまかな手順は下記のようになります。
- 対象となるバイナリがどのパッケージに含まれているか調べる
- パッケージを取得する
- パッケージを展開する
- 対象バイナリを 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で動作に必要なライブラリがある場合は、それらのライブラリもコピーしてください。
vDSOは、virtual DSO(dynamic shared object)のことで、システムコールの速度向上のために、全てのプロセスのメモリにカーネルよって割り当てられます。vDSOがマッピングされるアドレスは、0xffffe000に固定されています。(カーネル2.6.18からは、ランダムに割り当てられるようになりました。)vDSOは、カーネルによって割り当てられるものなので、linux-gate.so.1というファイルは存在しません。 ↩
上記の例で使っているパッケージは、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 ↩