LS-LGLをDebian化する (chrootで手抜き)  LS-LGLをDebian化する (chrootで手抜き)

7500円でNASが投げ売りされていたのを発見し、衝動買い。機種はBuffaloのLS-L320GL
http://buffalo.nas-central.org/wiki/Category:LS-LGL

早速届いたので玄箱のようにDebian化していろいろ遊ぼうと思ったら、メモリは16MBしかなくてスループットも70Mbpsがいいところで、Debian導入実績の情報もほとんどないし、予想以上に使えない事が判明。衝動買いのツケが回った。
だが何もせず降伏するのも悔しかったので、この制約を乗り越えようと2日間悪戦苦闘し、ある程度の成果が得られたのでまとめてみる。

※制約のないLS-HGLがお勧め

今回買ったLS-LGLの改造は、かの有名な山下様がすでに実行されており、ハックキットの導入や、 debootstrapによるEABIバイナリのDebian導入の試みがされていた。しかし、いずれも成功までには至っていないようだ。

私もDebian化のために以下のような作業を行ったが、いずれも失敗に終わった。

ということで、ネットに落ちてるカーネルで起動するものはなく、標準カーネルしか起動してくれないことまで確認した。とりあえず、標準カーネルのソースをのぞいてみると、他機種に比べて相当ダイエットされているように見える。
きちんと精査してユーザーランドであるinitrd.buffaloをDebian用に適切に書き換えればいいのだろうが、それは追々行うこととして、chrootを活用すれば、もっと簡単にDebianの環境を手に入れることができたのでその導入履歴を記すことにする。

今回構築したのは、標準ファームウェアを維持しながらchrootでDebian環境をHDD内につくるものである。
具体的な手順は以下の通り。

  1. telnetd有効化
  2. wgetの導入 addons.tar
  3. クロスdebootstrapによるDebian etch(OABI)のインストール
  4. 必要なパッケージを導入し、環境設定
  5. chroot環境に親環境を循環マウント
  6. 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を直接起動できる環境を構築したい。

デル株式会社
 iTunes Store(Japan)

トラックバック(0)

このブログ記事を参照しているブログ一覧: LS-LGLをDebian化する (chrootで手抜き)

このブログ記事に対するトラックバックURL: http://colspan.net/mt/mt-tb.cgi/295

コメントする

about Colspan


1983年生。技術系会社員。
趣味はJavascript。
韓国語を少し話す。
Twitter
Hatena
Zooomr
Flickr
Sony Style(ソニースタイル)
Just MyShop(ジャストシステム)
ioPLAZA【オリジナルセット品】
デル株式会社
EIZOダイレクト
NEC「得選街」
サンワダイレクト SDカード・miniSDカード・microSDカードが激安! JAL日本航空 特便割引
マウスコンピューター/G-Tune  

アーカイブ