CAT724へのdebianソフト追加方法

CAT724にdebianパッケージを追加する方法

はじめに

CAT724の内蔵ROMは32Mバイトで、出荷時には厳選したソフトのみがインストールされています。debianで用意されているパッケージを追加インストールする方法を示します。

debian sh4 環境を用意する

「組込みLinuxガイド9章」を参考に、debian sh4 が動く環境を用意してください。こちらのdebian環境で、目的のソフトがインストール/動作することを事前に検証します。

ちなみに外部ストレージの動作速度は

  1. USB HDD
  2. USB Memory
  3. SDカード

の順で速いためdebianをインストールする先としてはUSBストレージを選択することをお勧めします。

debian sh側で起動する

CATブートローダにて

>>admin
password:*******
#>setparam -s     microSDの第二パーティションをrootとする。または
#>setparam -u     USBストレージの第二パーティションをrootとする
#>boot

debian shを起動します。

ここでは gphoto2 パッケージを例にとって解説します。

# apt-get update
# apt-get install gphoto2

gphoto2に必要なライブラリ等も依存関係を自動判定してインストールされます。PCのdebianと同じです。

# gphoto2

コマンドを実行し、このソフトがCAT724で動くことを検証します。

参考知識

debianパッケージファイルのダウンロード先

/var/cache/apt/archives/

debianパッケージに含まれるファイル一覧を知るには
dpkg --contents <パッケージファイル> とする

# dpkg --contents /var/cache/apt/archives/gphoto2_2.4.5-3_sh4.deb

CAT724のROMは容量が限られているため、必要なファイルのみをROMへコピーすることになります。

/usr/bin/gphoto2           実行ファイル     ** 必要 **
/usr/share/locale/以下     多くの場合不要
/usr/share/doc/以下        不要
/usr/share/man/以下        不要

ライブラリの調査

gphoto2 実行ファイルがリンクしているライブラリ一覧を調べる

# ldd /usr/bin/gphoto2
       linux-gate.so.1 =>  (0x29556000)
       libcdk.so.5 => /usr/lib/libcdk.so.5 (0x29566000)
       libaa.so.1 => /usr/lib/libaa.so.1 (0x295b2000)
       libncurses.so.5 => /lib/libncurses.so.5 (0x295de000)
       libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x2962c000)
       libpthread.so.0 => /lib/libpthread.so.0 (0x2965c000)
       libreadline.so.5 => /lib/libreadline.so.5 (0x29686000)
       libgphoto2.so.2 => /usr/lib/libgphoto2.so.2 (0x296d0000)
       libgphoto2_port.so.0 => /usr/lib/libgphoto2_port.so.0 (0x2975c000)
       libexif.so.12 => /usr/lib/libexif.so.12 (0x29774000)
       libm.so.6 => /lib/libm.so.6 (0x297bc000)
       libpopt.so.0 => /lib/libpopt.so.0 (0x2984c000)
       libc.so.6 => /lib/libc.so.6 (0x29868000)
       libslang.so.2 => /lib/libslang.so.2 (0x299c6000)
       libX11.so.6 => /usr/lib/libX11.so.6 (0x29aec000)
       libgpm.so.2 => /usr/lib/libgpm.so.2 (0x29c20000)
       libdl.so.2 => /lib/libdl.so.2 (0x29c36000)
       /lib/ld-linux.so.2 (0x52aaa000)
       libltdl.so.7 => /usr/lib/libltdl.so.7 (0x29c4c000)
       libxcb.so.1 => /usr/lib/libxcb.so.1 (0x29c64000)
       libXau.so.6 => /usr/lib/libXau.so.6 (0x29c8c000)
       libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x29c9e000)

上記ライブラリファイル群をROMにコピーすることになります。

# poweroff

とタイプし、debian システムを終了します。

ROMへのコピー

CATブートローダにて

>>admin
password:*******
#>setparam -d     デフォルトの内蔵ROMをrootとする
#>boot

内蔵ROMをrootデバイスとして起動し、debianがインストールされているメディアをマウントします。

# mount /dev/sda2       /media/usb/  -o ro
# mount /dev/mmcblk0p2  /media/sd/   -o ro  (microSDの場合。以下 /media/usb は /media/sd と読みかえること)

ROMを read/write モードにして、実行ファイル /usr/bin/gphoto2 をコピーします

# rommode rw
# cp -av /media/usb/usr/bin/gphoto2 /usr/bin/
# gphoto2
gphoto2: error while loading shared libraries: libcdk.so.5: cannot open shared object file: No such file or directory

仮に gphoto2 コマンドを実行してみると、ライブラリが不足しているとエラーメッセージが出て実行できません。この例では libcdk.so.5 が無いと言われています。

そこで、エラーが出なくなるまでライブラリファイルをコピーします。

ライブラリはシンボリックリンクになっている事があるので、リンク先の実態を含めてコピーします。

# cp -av /media/usb/usr/lib/libcdk.so.5*       /usr/lib/
# cp -av /media/usb/usr/lib/libaa.so.1*        /usr/lib/
# cp -av /media/usb/usr/lib/libjpeg.so.62*     /usr/lib/
# cp -av /media/usb/lib/libreadline.so.5*      /lib/
# cp -av /media/usb/usr/lib/libgphoto2.so.2*   /usr/lib/
# cp -av /media/usb/usr/lib/libgphoto2         /usr/lib/
# cp -av /media/usb/usr/lib/libgphoto2_port*   /usr/lib/
# cp -av /media/usb/usr/lib/libexif.so.12*     /usr/lib/
# cp -av /media/usb/usr/lib/libX11.so.6*       /usr/lib/
# cp -av /media/usb/usr/lib/libgpm.so.2*       /usr/lib/
# cp -av /media/usb/usr/lib/libltdl.so.7*      /usr/lib/
# cp -av /media/usb/usr/lib/libxcb.so.1*       /usr/lib/
# cp -av /media/usb/usr/lib/libXau.so.6*       /usr/lib/
# cp -av /media/usb/usr/lib/libXdmcp.so.6*     /usr/lib/

ここまでコピーしたところ gphoto2 コマンドが実行できるようになりました。

# gphoto2
Usage: gphoto2 [-?valLnPTDR] [-?|--help] [--usage] [--debug]
       [--debug-logfile=FILENAME] [--quiet] [--hook-script=FILENAME]
       [--stdout] [--stdout-size] [--auto-detect] [--show-exif=STRING]
       [--show-info=STRING] [--summary] [--manual] [--about]
       [--storage-info] [--shell] [-v|--version] [--list-cameras]
       [--list-ports] [-a|--abilities] [--port=FILENAME] [--speed=SPEED]
       [--camera=MODEL] [--usbid=USBIDs] [--config] [--list-config]
       [--get-config=STRING] [--set-config=STRING] [--wait-event]
       [--capture-preview] [-F|--frames=COUNT] [-I|--interval=SECONDS]
       [--reset-interval] [--capture-image] [--capture-image-and-download]
       [--capture-movie] [--capture-sound] [--capture-tethered]
       [-l|--list-folders] [-L|--list-files] [-m|--mkdir=DIRNAME]
       [-r|--rmdir=DIRNAME] [-n|--num-files] [-p|--get-file=RANGE]
       [-P|--get-all-files] [-t|--get-thumbnail=RANGE]
       [-T|--get-all-thumbnails] [--get-metadata=RANGE] [--get-all-metadata]
       [--upload-metadata=STRING] [--get-raw-data=RANGE]
       [--get-all-raw-data] [--get-audio-data=RANGE] [--get-all-audio-data]
       [-d|--delete-file=RANGE] [-D|--delete-all-files]
       [-u|--upload-file=filename] [--filename=FILENAME_PATTERN]
       [-f|--folder=FOLDER] [-R|--recurse] [--no-recurse] [--new]
       [--force-overwrite]

関連

Last-modified: 2012-08-20 (月) 23:14:39 (2559d)