|
CAT724へのdebianソフト追加方法 †CAT724にdebianパッケージを追加する方法 はじめに †CAT724の内蔵ROMは32Mバイトで、出荷時には厳選したソフトのみがインストールされています。debianで用意されているパッケージを追加インストールする方法を示します。 debian sh4 環境を用意する †「組込みLinuxガイド9章」を参考に、debian sh4 が動く環境を用意してください。こちらのdebian環境で、目的のソフトがインストール/動作することを事前に検証します。 ちなみに外部ストレージの動作速度は
の順で速いため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 /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] 関連 † |