Debian のパッケージ(deb)に含まれているバイナリ(実行ファイル)を 、Armadillo で動作させる方法について説明します。基本的には、arm 用のパッケージに含まれているバイナリと、関連するライブラリをコピーすれば、動作します。
おおまかな手順は下記のようになります。
- 対象となるバイナリがどのパッケージに含まれているか調べる
- パッケージを取得する
- パッケージを展開する
- 対象バイナリを Armadillo にコピーする
この Howto の例では、以下の環境を想定しています。ご利用の環境に合わせて適宜読みかえてください。
- 対象製品:Armadillo-9
- 対象バイナリ:fdisk
- ATDE:ATDE2 v20071018
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.1とlibc、ローダの3つだけなので、バイナリをコピーするだけで問題無さそうです。もし、他のライブラリにリンクされていたら、ライブラリパッケージも必要になります。ATDE や Linux の環境が無い場合は、Debian のパッケージページで必要なライブラリを検索することができます。
2. パッケージを取得する
さて、実際に必要なパッケージのファイルですが、先ほどの Debian のパッケージページから取得することができます。
パッケージディレクトリに util-linux を指定して検索してください。検索結果の、 etch (stable) 用のパッケージを使用します。また、アーキテクチャは必ず arm を指定してください。
実際のダウンロードページの URL は、下記になります。
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というファイルは存在しません。

