とある実験のため 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 で バックアップするとかの運用がいいかなと思ってます.