ここから本文です
test

ZP-500Aのファームを展開・再構築してみます。
ファームはrar圧縮されてるので先にunrarをコンパイルします。

/tmp/usbmounts/sda1/opt/wk # wget http://www.rarsoft.com/rar/unrarsrc-4.0.7.tar.gz
/tmp/usbmounts/sda1/opt/wk # /opt/bin/tar -xvf unrarsrc-4.0.7.tar.gz
/tmp/usbmounts/sda1/opt/wk/unrar # mv makefile.unix makefile
/tmp/usbmounts/sda1/opt/wk/unrar # make clean
/tmp/usbmounts/sda1/opt/wk/unrar # make
/tmp/usbmounts/sda1/opt/wk/unrar # mv unrar /opt/bin/


ファーム取ってきて
/tmp/usbmounts/sda1/firmtmp # wget http://www.i-bt.com.tw/download/ZP-500A/ZP-500A_1.99.rar
unrarで解凍
/tmp/usbmounts/sda1/firmtmp # unrar e ZP-500A_1.99.rar
/tmp/usbmounts/sda1/firmtmp # mv install.img install.tar
installディレクトリの中にtar展開
/tmp/usbmounts/sda1/firmtmp # mkdir install
/tmp/usbmounts/sda1/firmtmp # cd install
/tmp/usbmounts/sda1/firmtmp/install # tar -xvf ../install.tar
squashfsイメージを移動して展開。展開後、名前変更
/tmp/usbmounts/sda1/firmtmp/install # cd package1
/tmp/usbmounts/sda1/firmtmp/install/package1 # mv squashfs1.img ../../
/tmp/usbmounts/sda1/firmtmp/install/package1 # cd ../../
/tmp/usbmounts/sda1/firmtmp # unsquashfs squashfs1.img
/tmp/usbmounts/sda1/firmtmp # mv squashfs1.img squashfs1.img.bak
ファームの/usr/local/bin/に足跡残します。
/tmp/usbmounts/sda1/firmtmp # cd squashfs-root/usr/local/bin
/tmp/usbmounts/sda1/firmtmp/squashfs-root/usr/local/bin # touch 実験だよ
/tmp/usbmounts/sda1/firmtmp/squashfs-root/usr/local/bin # ls
DVD btpd gadget unicgi 実験だよ
DvdPlayer btpd.sh ipkg-cl unicgi-security
Resource dcraw rtksmb wpa_cli
RootApp dfree.sh smbd wpa_supplicant

/tmp/usbmounts/sda1/firmtmp/squashfs-root/usr/local/etc # cd ../../../../
squashfsイメージを作成
/tmp/usbmounts/sda1/firmtmp # mksquashfs squashfs-root squashfs1.img -all-root
元の場所に戻す
/tmp/usbmounts/sda1/firmtmp # mv squashfs1.img install/package1/
/tmp/usbmounts/sda1/firmtmp # cd install
tarで纏めてinstall.imgを作成
/tmp/usbmounts/sda1/firmtmp/install # tar -cvf ../install.img *

このinstall.imgでファーム更新して中身確認

/ # cd /usr/local/bin
/usr/local/bin # ls
DVD btpd gadget unicgi 実験だよ
DVD btpd gadget unicgi 実験だよ
DvdPlayer btpd.sh ipkg-cl unicgi-security
Resource dcraw rtksmb wpa_cli
RootApp dfree.sh smbd wpa_supplicant

/usr/local/bin #

ちゃんとmksquahfs/unsquashfsは動作しました。

この記事に

開くトラックバック(0)

gcc(3) squashfs-tools


ファーム改造に欠かせないsquashfs-toolsをコンパイルしてみます。


/tmp/usbmounts/sda1/opt/wk # wget http://jaist.dl.sourceforge.net/project/squashfs/squashfs/squashfs3.0/squashfs3.0.tar.gz
Connecting to jaist.dl.sourceforge.net[150.65.7.130]:80
squashfs3.0.tar.gz 100% |***************************************| 375 KB 00:00 ETA
/tmp/usbmounts/sda1/opt/wk # tar -xvf squashfs3.0.tar.gz
tar: Invalid tar magic

なぜか BusyBoxの tarが実行されてしまうようです。

/tmp/usbmounts/sda1/opt/wk # /opt/bin/tar -xvf squashfs3.0.tar.gz
/tmp/usbmounts/sda1/opt/wk # cd squashfs3.0
/tmp/usbmounts/sda1/opt/wk/squashfs3.0 # cd squashfs-tools




/tmp/usbmounts/sda1/opt/wk/squashfs3.0/squashfs-tools # make
cc -I. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -O2 -c -o mksquashfs.o mksquashfs.c
make: cc: Command not found
make: *** [mksquashfs.o] Error 127
/tmp/usbmounts/sda1/opt/wk/squashfs3.0/squashfs-tools # make CC=gcc
gcc -I. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -O2 -c -o mksquashfs.o mksquashfs.c
gcc -I. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -O2 -c -o read_fs.o read_fs.c
gcc -I. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -O2 -c -o sort.o sort.c
gcc mksquashfs.o read_fs.o sort.o -lz -o mksquashfs
gcc -I. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -O2 -c -o unsquashfs.o unsquashfs.c
gcc unsquashfs.o -lz -o unsquashfs
/tmp/usbmounts/sda1/opt/wk/squashfs3.0/squashfs-tools # mv mksquashfs /opt/bin/
/tmp/usbmounts/sda1/opt/wk/squashfs3.0/squashfs-tools # mv unsquashfs /opt/bin/

この記事に

開くトラックバック(0)

gcc(2)


hello.cをコンパイルしてみます。

#include

int main(void){
printf("Hello C world!\n");
}


/tmp/usbmounts/sda1/opt/bin # gcc -o hello hello.c
as: can't load library 'libz.so.1'

ライブラリが足りなかったようです。
ついでにuclibcも入れときます。

/tmp/usbmounts/sda1/opt/bin # ipkg install zlib
Installing zlib (1.2.5-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/wdtv/cross/stable/zlib_1.2.5-1_mipsel.ipk
Configuring zlib
Successfully terminated.
/tmp/usbmounts/sda1/opt/bin # ipkg install uclibc-opt
Installing uclibc-opt (0.9.28-2) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/wdtv/cross/stable/uclibc-opt_0.9.28-2_mipsel.ipk
package uclibc-opt suggests installing ipkg-opt
Configuring uclibc-opt
Successfully terminated.


/tmp/usbmounts/sda1/opt/bin # gcc -o hello hello.c
/tmp/usbmounts/sda1/opt/bin # hello
Hello C world!
/tmp/usbmounts/sda1/opt/bin #

セルフコンパイル環境ができました。



まだまだ /opt/binが寂しいのでメジャーなツールをまとめて入れます。

/tmp/usbmounts/sda1/opt/bin # ipkg install optware-devel

なぜか libidnだけインスト失敗するので手動で

/tmp/usbmounts/sda1/opt/bin # wget http://ipkg.nslu2-linux.org/feeds/optware/wdtv/cross/stable/libidn_1.21-1_mipsel.ipk
Connecting to ipkg.nslu2-linux.org[140.211.169.161]:80
libidn_1.21-1_mipsel 100% |***************************************| 164 KB 00:00 ETA
/tmp/usbmounts/sda1/opt/bin # ipkg install libidn_1.21-1_mipsel.ipk
Installing libidn (1.21-1) to root...
Configuring libidn
Successfully terminated.
/tmp/usbmounts/sda1/opt/bin # rm libidn_1.21-1_mipsel.ipk

この記事に

開くトラックバック(0)

gcc


optware/oleg にはgdbがありましたがgccがありませんでした。

gccを含んだ別のターゲットを使ってみます。

前回の optディレクトリはなかったことに



ipkg-clをDL、展開


/tmp/usbmounts/sda1/opt/tmp # wget http://www.kovari.priv.hu/download/ipkg-cl.tgz
Connecting to www.kovari.priv.hu[212.40.96.99]:80
ipkg-cl.tgz 100% |***************************************| 240 KB 00:00 ETA
/tmp/usbmounts/sda1/opt/tmp # tar -xvf ipkg-cl.tgz
ipkg-cl

optware/wdtvのipkgをDL、インストール


/tmp/usbmounts/sda1/opt/tmp # wget http://ipkg.nslu2-linux.org/feeds/optware/wdtv/cross/stable/ipkg-opt_0.99.163-10_mipsel.ipk
Connecting to ipkg.nslu2-linux.org[140.211.169.161]:80
ipkg-opt_0.99.163-10 100% |***************************************| 75867 00:00 ETA
/tmp/usbmounts/sda1/opt/tmp # ./ipkg-cl install ipkg-opt_0.99.163-10_mipsel.ipk
Installing ipkg-opt (0.99.163-10) to root...
Configuring ipkg-opt
Successfully terminated.

/opt/binにPATH通して


/tmp/usbmounts/sda1/opt/tmp # export PATH=/opt/bin:$PATH
/tmp/usbmounts/sda1/opt/tmp # export LD_LIBRARY_PATH=/opt/lib
/tmp/usbmounts/sda1/opt/tmp # cd ../etc

/opt/etc/ipkg.confにsrc wdtv〜を追加

# Uncomment one of the following package feeds or resolve your arch
# by visiting http://ipkg.nslu2-linux.org/feeds/optware/
# src nslu2 http://ipkg.nslu2-linux.org/feeds/optware/nslu2/cross/stable
# src fsg3 http://ipkg.nslu2-linux.org/feeds/optware/fsg3/cross/stable
# src ddwrt http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable
# src xwrt http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable
# src whiterussian http://ipkg.nslu2-linux.org/feeds/optware/ddwrt/cross/stable
# src oleg http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable
# src ts72xx http://ipkg.nslu2-linux.org/feeds/optware/ts72xx/cross/stable
# src/gz openwrt-brcm24 http://ipkg.nslu2-linux.org/feeds/optware/openwrt-brcm24/cross/uns
# src/gz openwrt-ixp4xx http://ipkg.nslu2-linux.org/feeds/optware/openwrt-ixp4xx/cross/uns
src wdtv http://ipkg.nslu2-linux.org/feeds/optware/wdtv/cross/stable
dest root /



optware/wdtvのパッケージリスト更新

/tmp/usbmounts/sda1/opt/bin # ipkg update
Downloading http://ipkg.nslu2-linux.org/feeds/optware/wdtv/cross/stable/Packages
Updated list of available packages in /opt/lib/ipkg/lists/wdtv
Successfully terminated.

gccインストール


/tmp/usbmounts/sda1/opt/bin # ipkg install gcc
Installing gcc (4.0.4-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/wdtv/cross/stable/gcc_4.0.4-1_mipsel.ipk
Installing binutils (2.19.1-1) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/wdtv/cross/stable/binutils_2.19.1-1_mipsel.ipk
Installing libc-dev (0.9.28-5) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/wdtv/cross/stable/libc-dev_0.9.28-5_mipsel.ipk
Installing libnsl (0.9.28-4) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/wdtv/cross/stable/libnsl_0.9.28-4_mipsel.ipk
Configuring binutils
update-alternatives: Linking //opt/bin/strings to /opt/bin/binutils-strings
Configuring gcc
Configuring libc-dev
Configuring libnsl
Successfully terminated.

この記事に

開くトラックバック(0)

optwareであそぼう(2)


適当なoptwareをインストールしてみます。

/opt/binにcdして

(PATHを通していればcdや./付けなくていいです。)




/ # cd /opt/bin
/tmp/usbmounts/sda1/opt/bin #

前回、忘れてた。

パッケージリストを更新する。


/tmp/usbmounts/sda1/opt/bin # ./ipkg update
Downloading http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/Packages.gz
Inflating http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/Packages.gz
Updated list of available packages in /opt/lib/ipkg/lists/optware
Successfully terminated.
/tmp/usbmounts/sda1/opt/bin #


ushareをインストールしてみます。


/tmp/usbmounts/sda1/opt/bin # ./ipkg install ushare
Installing ushare (1.1a-2) to /opt/...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/ushare_1.1a-2_mipsel.ipk
package libupnp suggests installing ushare
Installing libdlna (0.2.3-2) to /opt/...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/libdlna_0.2.3-2_mipsel.ipk
Installing ffmpeg (0.svn20080409-3) to /opt/...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/ffmpeg_0.svn20080409-3_mipsel.ipk
Installing libupnp (1.6.6-1) to /opt/...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/libupnp_1.6.6-1_mipsel.ipk
Configuring ffmpeg
Configuring libdlna
Configuring libupnp
Configuring ushare


To complete the installation, you must edit /opt/etc/ushare.conf to add the
location(s) of your media files, and then run /opt/etc/init.d/S99ushare start.

Successfully terminated.

おお、勝手に必要なライブラリも持ってきてくれます。かしこいですね。



では、viよりもとっつきやすいエディタを持ってきます。

/tmp/usbmounts/sda1/opt/bin # ./ipkg install nano
Installing nano (2.2.6-1) to /opt/...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/nano_2.2.6-1_mipsel.ipk
Installing ncurses (5.7-1) to /opt/...
Downloading http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/ncurses_5.7-1_mipsel.ipk
Configuring nano
Configuring ncurses
update-alternatives: Linking //opt/bin/clear to /opt/bin/ncurses-clear
Successfully terminated.
/tmp/usbmounts/sda1/opt/bin #

起動してみましょう。

/tmp/usbmounts/sda1/opt/bin # ./nano /usr/local/etc/rcS


GNU nano 2.2.6 File: /usr/local/etc/rcS

#!/bin/sh
#ifconfig eth0 192.168.0.2 netmask 255.255.0.0
#route add default gw 192.168.0.1
#mount -t nfs -o nolock 192.168.0.1:/nfs/rootfs /mnt

#/sbin/modprobe ide-cd
dd if=/Test.fat of=/dev/rd/0
mount -t vfat /dev/rd/0 /mnt/rd
swapon /mnt/rd/swap.img

/sbin/modprobe sata_mars&

#rm -f /usr/local/etc/dvdplayer/VenusSetup.dat

ln -s /dev/cdroms/cdrom0 /dev/cdrom0
ln -s /dev/cdrom0 /dev/dvd
ln -s /mnt/dvdvr /dev/dvdvr
ln -s /usr/local/etc /tmp/usbmounts/etc
ln -s /tmp/usbmounts/sda1/bmp /tmp/nfs

# This variable tells DvdPlayer the firmware URL for internet updating
export LIVEUPDATE_URL=
DEFAULT_AP_DIR=/usr/local/bin

^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text ^T To Spell

こんな感じです。

この記事に

開くトラックバック(0)

[ すべて表示 ]

本文はここまでですこのページの先頭へ
みんなの更新記事