7500円でNASが投げ売りされていたのを発見し、衝動買い。機種はBuffaloのLS-L320GL。
http://buffalo.nas-central.org/wiki/Category:LS-LGL
早速届いたので玄箱のようにDebian化していろいろ遊ぼうと思ったら、メモリは16MBしかなくてスループットも70Mbpsがいいところで、Debian導入実績の情報もほとんどないし、予想以上に使えない事が判明。衝動買いのツケが回った。
だが何もせず降伏するのも悔しかったので、この制約を乗り越えようと2日間悪戦苦闘し、ある程度の成果が得られたのでまとめてみる。
今回買ったLS-LGLの改造は、かの有名な山下様がすでに実行されており、ハックキットの導入や、 debootstrapによるEABIバイナリのDebian導入の試みがされていた。しかし、いずれも成功までには至っていないようだ。
私もDebian化のために以下のような作業を行ったが、いずれも失敗に終わった。
- 標準カーネル + debootstrapしたDebian etch --> telnetdが起動しない
- LS-GL用Freelinkイメージ (カーネル+Debian etch) --> ブート時電源切れる
- ネットに落ちてるいろんなカーネル + debootstrapしたDebian etch --> ブート時電源切れる
ということで、ネットに落ちてるカーネルで起動するものはなく、標準カーネルしか起動してくれないことまで確認した。とりあえず、標準カーネルのソースをのぞいてみると、他機種に比べて相当ダイエットされているように見える。
きちんと精査してユーザーランドであるinitrd.buffaloをDebian用に適切に書き換えればいいのだろうが、それは追々行うこととして、chrootを活用すれば、もっと簡単にDebianの環境を手に入れることができたのでその導入履歴を記すことにする。
今回構築したのは、標準ファームウェアを維持しながらchrootでDebian環境をHDD内につくるものである。
具体的な手順は以下の通り。
- telnetd有効化
- wgetの導入 addons.tar
- クロスdebootstrapによるDebian etch(OABI)のインストール
- 必要なパッケージを導入し、環境設定
- chroot環境に親環境を循環マウント
- chroot環境のサービスを親環境に自動起動登録
循環マウントは本来のchrootの用途に全く反したものであるが、目的達成のための手段であるので、目をつぶってほしい。
PCのDebianでクロスdebootstrap
$ sudo su # mkdir /tmp/debian # debootstrap --foreign --arch arm etch /tmp/debian # mkdir /tmp/lslgl # mount /dev/sdb6 /tmp/lslgl
# mkdir /tmp/lslgl/etch
# cp -R /tmp/debian /tmp/lslgl/etch
LS-LGLにHDDを接続
telnetで入ってdebootstrapのsecond stage実行し、終了後Debian環境に移行する。
# chroot /mnt/disk1/etch/ debootstrap/debootstrap --second-stage # mount -t proc /proc etch/proc/ # mount -o bind /dev etch/dev/ # chroot etch # Debian環境に移行
立て続けに設定開始。
# echo "deb http://ftp.riken.jp/pub/Linux/debian/debian/ stable main non-free contrib" > /etc/apt/sources.list # stableなレポジトリ()を追加 # apt-get update # apt-get dist-upgrade # apt-get install telnet ssh vim ntpdate ruby perl # いろいろ追加 # apt-get install locales # adduser colspan # vi /etc/hosts # "127.0.0.1 localhost"を追加 # dpkg-reconfigure tzdata # Tokyoを指定 # dpkg-reconfigure locales # ja-UTF8を追加
chroot環境のssh自動起動設定
chroot環境のssh起動スクリプトを用意し、/etc/init.d/rcSに登録する。
#!/bin/sh ## /root/chroot_start.sh mount -t proc /proc /chroot/proc mount -o bind /dev /chroot/dev mount -o bind /mnt/disk1/share /chroot/mnt/share mount -o bind / /chroot/parent chroot /chroot /etc/init.d/ssh start
#!/bin/sh ## /root/chroot_stop.sh umount /chroot/proc umount /chroot/dev umount /chroot/mnt/share umount /chroot/parent chroot /chroot /etc/init.d/ssh stop
#!/bin/sh
## /etc/init.d/chroot.sh
test -f /root/chroot_start.sh || exit 0
case "$1" in
start) echo -n "chroot Start services"
/root/chroot_start.sh
;;
stop) echo -n "chroot Stop services:"
/root/chroot_stop.sh
;;
restart)
$0 stop
$0 start
;;
*) echo "Usage: $0 start|stop|restart"
exit 1
;;
esac
exit 0
以上のスクリプトを保存したら、rcSに登録する。
vi /etc/init.d/rcS # EnablingAutoip.shの記述がある行にchroot.shを追加
とりあえず、DynamicDNSのスクリプトを回したり、メインNASの電源投入をWoLで行う位はできるようになったので満足。 chroot環境のDebianが動くと言うことは、ユーザランドの書き換えを行えばきちんと動く可能性が高いので、今後はユーザランドの書き換えを行い、Debianを直接起動できる環境を構築したい。













コメントする