kuroの覚え書き

96の個人的覚え書き

FTP鯖をたてる



LaFoneraへのファイル転送にとりあえずsambaを使うことができるようになったが、サーバを立てることができず、Mac側をサーバにしてsshログインしているLaFoneraからMacに逆ログインするというなんともややこしい接続しかできなかった。

なのでFTPを入れることにした。openWRTではvsftpdというのが主に使われているっぽいので、さっそくインストールしてみた。その結果あっさりとFTPが使えるようになったが、そのままではホームディレクトリから上流には入れないことがわかった。vsftpdのサイトを調べると/etc/vsftd.confで設定できるようなんだけどopenWRTではよくあるように設定項目が省略されているのかディレクトリの設定が効かなかった。仕方が無いので/etc/passwdを編集してrootのホームディレクトリを/tmpから/mntに移してみた。これでSDカードのファイルを直接いじることが出来るようになった。

参照ページ

http://wiki.openwrt.org/FTPDHowTo

ここまできたらトコトンいってみるかな。

目標はperlをインストールしてMovable Typeを動かし自前Blogページを作成することとしよう。

まずはperlからかな。

http://www.cip.ifi.lmu.de/~colberg/openwrt/bin/kamikaze/7.09/atheros-2.6/

ここにパッケージがあるようなのでインストールしよう。

しかしそうなるとさすがにjffsだけじゃ入りきらないだろうからSDカード上にインストールする必要があるだろうな。

http://wiki.openwrt.org/UsbStorageHowto

この辺り参照。


echo dest mmc /mnt/mmc >> /etc/ipkg.conf

これで


ipkg -dest mmc install hogehoge

とやれば/mnt/mmcにhogehogeというパッケージがインストールされるようになる。

その上で


#!/bin/sh
COMMAND=$1
PACKAGE=$2
setdest () {
for i in `grep dest /etc/ipkg.conf | cut -d ' ' -f 3`; do
if [ -f $i/usr/lib/ipkg/info/$PACKAGE.list ]; then
DEST=$i
fi
done
if [ "x$DEST" = "x" ]; then
echo "Can not locate $PACKAGE."
echo "Check /etc/ipkg.conf for correct dest listings";
echo "Check name of requested package: $PACKAGE"
exit 1
fi
}
addlinks () {
setdest;
cat $DEST/usr/lib/ipkg/info/$PACKAGE.list | while read LINE; do
SRC=$LINE
DST=`echo $SRC | sed "s|$DEST||"`
DSTNAME=`basename $DST`
DSTDIR=`echo $DST | sed "s|$DSTNAME?$||"`
test -f "$SRC"
if [ $? = 0 ]; then
test -e "$DST"
if [ $? = 1 ]; then
mkdir -p $DSTDIR
ln -sf $SRC $DST
else
echo "Not linking $SRC to $DST"
echo "$DST Already exists"
fi
else
test -d "$SRC"
if [ $? = 0 ]; then
test -e $DST
if [ $? = 1 ]; then
mkdir -p $DST
else
echo "directory already exists"
fi
else
echo "Source directory $SRC does not exist"
fi
fi
done
}
removelinks () {
setdest;
cat $DEST/usr/lib/ipkg/info/$PACKAGE.list | while read LINE; do
SRC=$LINE
DST=`echo $LINE | sed "s|$DEST||"`
DSTNAME=`basename $DST`
DSTDIR=`echo $DST | sed "s|$DSTNAME?$||"`
test -f $DST
if [ $? = 0 ]; then
rm -f $DST
test -d $DSTDIR && rmdir $DSTDIR 2>/dev/null
else
test -d $DST
if [ $? = 0 ]; then
rmdir $DST
else
echo "$DST does not exist"
fi
fi
done
}
mountdest () {
test -d $PACKAGE
if [ $? = 1 ]; then
echo "Mount point does not exist"
exit 1
fi
for i in $PACKAGE/usr/lib/ipkg/info/*.list; do
$0 add `basename $i .list`
done
}
umountdest () {
test -d $PACKAGE
if [ $? = 1 ]; then
echo "Mount point does not exist"
exit 1
fi
for i in $PACKAGE/usr/lib/ipkg/info/*.list; do
$0 remove `basename $i .list`
done
}
case "$COMMAND" in
add)
addlinks
;;
remove)
removelinks
;;
mount)
mountdest
;;
umount)
umountdest
;;
*)
echo "Usage: $0 <cmd> <target>"
echo " Commands: add, remove, mount, umount"
echo " Targets: <package>, <mount point>"
echo "Example: $0 add kismet-server"
echo "Example: $0 remove kismet-server"
echo "Example: $0 mount /mnt/mmc"
echo "Example: $0 umount /mnt/mmc"
exit 1
;;
esac
exit 0

こういう内容のファイルを/bin/ipkg-linkという名前で作成し、chmod a+xにしておく。

これで


ipkg-link add hogehoge

としてやればsymlinkを張って使えるようになるらしい。


ipkg-link mount /mnt/mmc

だとまとめてsymlinkを張れるようだ。

ちなみに写真には2台写っているがふたの開いている方はclient-bridgeモードなDD-WRTで、もう一方がopenWRT鯖。openWRTでクライアントモードが出来ないため、折角の無線は現状殺してある。結果的に仕事を2台に分散させているから負荷がかからなくていいかも。DD-WRTのほうが高負荷なためか発熱が酷いのでふたは取っ払ってある。