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

該当製品: Armadillo-500 Armadillo-300 Armadillo-9 Armadillo-240 Armadillo-230 Armadillo-220 Armadillo-210 Armadillo-J Armadillo

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

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

  1. 対象となるバイナリがどのパッケージに含まれているか調べる
  2. パッケージを取得する
  3. パッケージを展開する
  4. 対象バイナリを 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というファイルは存在しません。

カテゴリ:
コンテンツの配信