とある実験のため LinkStation mini (LS-WS500GL/R1) を Debian 化しなくては ならなくなり調べてみました. NAS の Linux-Box 化は IODATA系 の経験はありましたが, 玄箱やら LinkStation 等の Buffalo 系は弄ったことがありませんでした.
そのため噂で
簡単に箇条書きしてまとめてみます.
以下のページが参考になる.
この手順は, いろいろ試行錯誤した結果を思い出しつつ書いているので, より効率の良い手段や, 重要な記述漏れがあるかもしれません. その辺はご了承ください.
用意する物
手順
|
# bzcat u-boot-1.1.4.tar.bz2 | tar xvf - # cd u-boot-1.1.4 # export TOPDIR=`pwd` # cd tools # make mkimage |
|
# cd ~ # mkdir sdb1 # cd sdb1 # mount -t ext3 /dev/sdb1 /mnt # cp /mnt/uImage.buffalo /mnt/initrd.buffalo . |
|
# mkdir /loop # dd if=initrd.buffalo of=initrd.gz bs=64 skip=1 |
|
# gunzip initrd.gz # mount -o loop initrd /loop # vi /loop/linuxrc |
#!/bin/sh
export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin
echo "---- in linuxrc ---"
mount proc /proc -t proc
mount sysfs /sys -t sysfs
. /usr/local/bin/libbuffalo
. /usr/local/lib/libsys
. /usr/local/lib/libmsg
export DEV_BOOT=/dev/sda1
export DEV_ROOTFS1=/dev/sda2
fsck_disks()
{
FSCK_RES=0
PadPrint "Starting :fsck_disks(boot) ... "
fsck.ext2 -pyf /dev/${DEV_BOOT} > /dev/null 2>&1 > /dev/null
if [ $? -ne 0 ] ; then
echo "[Failed. ]"
else
echo "[Success.]"
fi
PadPrint "Starting :fsck_disks(rootfs) ... "
case ${ROOTFS_FS} in
ext3)
FsckEXT3 /dev/${DEV_ROOTFS1} > /dev/null 2>&1 > /dev/null
RET=$?
;;
ext2)
FsckEXT2 /dev/${DEV_ROOTFS1} > /dev/null 2>&1 > /dev/null
RET=$?
;;
*)
FsckXFS /dev/${DEV_ROOTFS1} > /dev/null 2>&1 > /dev/null
RET=$?
;;
esac
if [ ${RET} -ne 0 ] ; then
echo "[Failed. ]"
else
echo "[Success.]"
fi
}
HddRoot()
{
echo "-HddRoot-"
fsck_disks
echo "0x801" > /proc/sys/kernel/real-root-dev
}
RamdiskRoot()
{
echo "-RamdiskRoot-"
echo "0x100" >/proc/sys/kernel/real-root-dev
}
CommandMode()
{
echo "-CommandMode-"
mount -a
/sbin/getty -L ttyS0 115200 vt100
##/bin/sh
}
reset_date()
{
TMP=`date "+%s"`
if [ ${TMP} -lt 1133362800 ] || [ ${TMP} -ge 1606748400 ] ; then
date ${INITIAL_DATE}
if [ -L "${HW_CLOCK}" ] ; then
hwclock --systohc --localtime
else
hwclock -w
fi
fi
}
# set the system time from the hardware clock
HW_CLOCK=`which hwclock`
if [ -L "${HW_CLOCK}" ] ; then
# not busybox hwclock version
hwclock --hctosys --localtime
else
# busybox hwclock version
hwclock -s
fi
reset_date
date
echo ${DEV_BOOT}
ldconfig
depmod
## Setup Micon communication port and send flash-boot complete message.
miconapl -b -a boot_flash_ok > /dev/null
echo ${DEV_BOOT}
echo "linuxrc:choose operation (timeout 4[s])"
echo -n "1:RamRoot other: HDDRoot ? "
ANSWER=`/usr/local/bin/keyinput -t 4`
case "$ANSWER" in
1) RamdiskRoot ;;
9) CommandMode ;;
*)
HddRoot
;;
esac
umount /sys
umount /proc
umount -a
exit 0
|
|
# umount /loop # gzip initrd # mkimage -A ARM -O Linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initrd -d ./initrd.gz ./initrd.buffalo |
|
# umount /mnt # mount -t xfs /dev/sdb2 /mnt # cd /mnt/lib/modules # cp -R 2.6.16.16-arm1 ~ # cd ~ # umount /mnt |
| sdb1 | 1 | 125 | 83 (Linux) | sdb2 | 126 | 30275 | 83 (Linux) | sdb3 | 30276 | 30401 | 82 (Swap) |
|
# su # mk2fs.ext3 /dev/sdb1 # mk2fs.ext3 /dev/sdb2 # mkswap /dev/sdb3 |
|
# cd ~/sdb1 # mount -t ext3 /dev/sdb1 /mnt # cp uImage.buffalo initrd.buffalo /mnt # umount /mnt # mount -t ext3 /dev/sdb2 /mnt # cd /mnt # zcat ~/hddrootfs.tgz | tar xvf - |
|
# cd /mnt/lib/modules # cp -R ~/2.6.16.16-arm1 . |
| # vi /mnt/etc/fstab |
|
proc /proc proc defaults 0 0 none /dev/pts devpts gid=5,mode=622 0 0 tmpfs /tmp tmpfs size=10M,mode=1777 0 0 /dev/sda3 swap swap defaults 0 0 /dev/sda1 /boot ext3 defaults,noattime,errors=remount-ro 0 1 |
後は umount して hdd を取り出し, LS-WSGL の基板に挿して電源を入れれば起動するはずです. ログイン名は admin, パスワードも admin, ルート様のパスワードは lspro だと 思います. HDD 一個ならばどっちのコネクタに挿しても動きます. 二個ならば SATA2 と書かれた 方に作った HDD を挿す必要があります.
deb http://ftp2.jp.debian.org/debian/ etch main contrib non-free deb http://ftp2.jp.debian.org/debian/ etch-proposed-updates main contrib non-free deb http://ftp2.jp.debian.org/debian-security/ etch/updates main contrib non-free deb http://security.debian.org etch/updates main contrib non-free deb-src http://ftp2.jp.debian.org/debian/ etch main contrib non-free deb-src http://ftp2.jp.debian.org/debian/ etch-proposed-updates main contrib non-free deb-src http://ftp2.jp.debian.org/debian-security/ etch/updates main contrib non-free deb-src http://security.debian.org etch/updates main contrib non-free |
| echo off > /proc/buffalo/gpio/led/power_blink |
こうやっていろいろ苦労したものの, 今時 BeagleBoard やら, Armadilloやらで 実験すればいいじゃないかという話になってきました. こりゃこりゃ
でも, 面白そうですね. 個人では現状借り物で Plamo 使った サーバ立ててますが, 返却しなくてはならなくなったらこいつに変更しようかな と思い出しました. あまり raid は必要性感じない (というか壊れた時の修復が面倒) んで, HDD 二連装にして, 定期的にrsync で バックアップするとかの運用がいいかなと思ってます.