ハックキットの一本化のためのインストーラ

Debian HS-DHGL LS-CL LS-GL LS-HGL LS-WSGL/R1

ハックキットのインストーラを書いた

各パーティションのフォーマット

いきなり機種依存。

LS-WSGL

フォーマットせずに標準ファームのフォーマットをそのまま使う。

LS-WSGL 以外

/dev/sdb1 を ext3 に、
/dev/sdb2 と /dev/sdb4 とを xfs に、
/dev/sdb3 を swap に
フォーマットする。
	# /boot
	if [ "$BOOTPARTITIONTYPE" = ext3 ]
	then
	    mke2fs -j $BOOTPARTITION || exit
	else
	    mke2fs $BOOTPARTITION || exit
	fi

	# /
	mkfs.xfs -f $ROOTPARTITION || exit

	# swap
	mkswap $SWAPPARTITION || exit

	# data /mnt/xxx
	if [ "$DATAPARTITION" != "" ]
	then
	    mkfs.xfs -f $DATAPARTITION || exit
	fi

/ のマウント

LS-WSGL

/dev/md1 をマウント。
/lib/modules 以外は削除。

LS-WSGL 以外

/dev/sdb2 をマウント。

	if [ ! -d $MOUNTPOINT ]
	then
		mkdir $MOUNTPOINT || exit
	fi
	mount -t xfs $ROOTPARTITION $MOUNTPOINT || exit

	if [ $MACHINE = LSWSGL ]
	then
		mkdir $MOUNTPOINT/.buffalo
		mv $MOUNTPOINT/lib/modules $MOUNTPOINT/.buffalo
		rm -fr $MOUNTPOINT/*
		mkdir $MOUNTPOINT/lib
		mv $MOUNTPOINT/.buffalo/modules $MOUNTPOINT/lib
		rmdir $MOUNTPOINT/.buffalo

		mkdir $MOUNTPOINT/mnt/disk1
		mkdir $MOUNTPOINT/mnt/disk2
	fi

アーカイブの展開

hackkit_YYMMDD.tar.gz を展開
	cd $MOUNTPOINT 
	tar zxvf $HACKKIT

fstab の修正(LS-WSGL のみ)

md0, md10, md1 他を使うように修正
cat > etc/fstab <<EOF
# /etc/fstab: static file system information.
#
#                                
/dev/md1        /               xfs     defaults,noatime                0 0
proc            /proc           proc    defaults                        0 0
/dev/md10       swap            swap    defaults                        0 0
/dev/md0        /boot           ext2    defaults,noatime                0 0
/dev/sda6       /mnt/disk1      xfs     defaults,noatime                0 0
/dev/sdb6       /mnt/disk2      xfs     defaults,noatime                0 0
EOF

miconapl のコピー(LS-GL/HS-DHGLのみ)

標準ファームから、/usr/local/sbin/miconapl をコピーする。
	tar cf - usr/local/sbin/miconapl |(cd $MOUNTPOINT; tar xvf -)
	chmod +x $MOUNTPOINT/usr/local/sbin/miconapl
	tar cf - usr/local/lib/libbuffalo_bin.* |(cd $MOUNTPOINT; tar xvf -)

LED コントロールスクリプトの作成

/etc/init.d/miconapl を作成し、
/etc/rc0.d/K10miconapl
/etc/rc6.d/K10miconapl
/etc/rcS.d/S80miconapl
にシンボリックリンクを張る。

LS-HGL

LS-CL

LS-WSGL

	cd $MOUNTPOINT

	cat > etc/init.d/miconapl <<EOF
#!/bin/sh

if [ -d /proc/buffalo/gpio/led ]
then
	LED=/proc/buffalo/gpio/led
else
	LED=/proc/buffalo/led
fi

case "\$1" in
  start)
  	echo off > \$LED/power_blink
  	echo on > \$LED/power
  	echo on > \$LED/eth
	;;
  stop)
  	echo on > \$LED/power_blink
	;;
  *)
	echo "Usage: \$0 {start|stop}"
	exit 1
esac

exit 0
EOF
        chmod +x etc/init.d/miconapl
        ln -s ../init.d/miconapl etc/rc0.d/K10miconapl
        ln -s ../init.d/miconapl etc/rc6.d/K10miconapl
        ln -s ../init.d/miconapl etc/rcS.d/S80miconapl

LS-GL/HS-DHGL

	cd $MOUNTPOINT
	cat > etc/init.d/miconapl <<EOF
#!/bin/sh

[ -f /usr/local/sbin/miconapl ] || exit 0

case "\$1" in
  start)
  	/usr/local/sbin/miconapl -b -a boot_flash_ok
	/usr/local/sbin/miconapl -a boot_end
	;;
  stop)
	/usr/local/sbin/miconapl -a shutdown_wait
	;;
  *)
	echo "Usage: \$0 {start|stop}"
	exit 1
esac

exit 0
EOF
	chmod +x etc/init.d/miconapl
	ln -s ../init.d/miconapl etc/rc0.d/K10miconapl
	ln -s ../init.d/miconapl etc/rc6.d/K10miconapl
	ln -s ../init.d/miconapl etc/rcS.d/S80miconapl

Fan コントロールスクリプトの作成(LS-GL/HS-DHGLのみ)

LS-GL + ハックキットでファンコントロール
	cd $MOUNTPOINT
	cat > usr/local/sbin/fancontrol <<EOF
#!/bin/sh
# LS-GL, HS-DHGL, KURO-BOX/Pro Fancontrol
# (C) Copyright Yasunari YAMASHITA 2007. All Rights Reserved.

PATH=\$PATH:/usr/sbin

# stop -> LOW |- slow -> MID |- fast -> HIGH |- full
HIGH=40
MID=30
LOW=20

if [ -f /etc/fancontrol.conf ]
then
        . /etc/fancontrol.conf
fi

#       ude:/usr/local/sbin# /usr/local/sbin/miconapl -a temp_get
#       #[miconapl.temp_get]
#       temp=45

CURTEMP=`/usr/local/sbin/miconapl -a temp_get | sed -n -e 's/temp=//p'`

echo \$CURTEMP

if [ \$CURTEMP -gt \$HIGH ] # full
then
        /usr/local/sbin/miconapl -a fan_set_speed full
        echo fan_set_speed full
elif [ \$CURTEMP -gt \$MID ] # fast
then
        /usr/local/sbin/miconapl -a fan_set_speed fast
        echo fan_set_speed fast
elif [ \$CURTEMP -gt \$LOW ] # slow
then
        /usr/local/sbin/miconapl -a fan_set_speed slow
        echo fan_set_speed slow
else                       # stop
        /usr/local/sbin/miconapl -a fan_set_speed stop
        echo fan_set_speed stop
fi
EOF

	cat > etc/fancontrol.conf <<EOF
#
# LS-GL, HS-DHGL, KURO-BOX/Pro Fancontrol configuration file
# (C) Copyright Yasunari YAMASHITA 2007. All Rights Reserved.

# stop -> LOW |- slow -> MID |- fast -> HIGH |- full

HIGH=40
MID=30
LOW=20
EOF

電源 SW による電源 OFF 対応

これは、LS-GL/HS-DHGL と それ以外とでまったく違う。

LS-GL/HS-DHGL

現状のインストーラのまま
	cd /
	sed -e 's/^\(.*logtag.*\)$/# \1/' -e 's/^\(.*logger.*\)$/# \1/' \
                /etc/init.d/kernelmon.sh > $MOUNTPOINT/etc/init.d/kernelmon
        chmod +x  $MOUNTPOINT/etc/init.d/kernelmon
        ln -s ../init.d/kernelmon $MOUNTPOINT/etc/rcS.d/S81kernelmon

        tar cf - usr/local/sbin/kernelmon |(cd $MOUNTPOINT; tar xvf -)

LS-HGL

LS-CL/LS-WSGL

	cd $MOUNTPOINT
	cat > etc/init.d/kernelmon <<EOF
#!/bin/sh

case "\$1" in
start)
	if [ -e /proc/buffalo/gpio/switch/sw_control ]
	then
 		echo on > /proc/buffalo/gpio/switch/sw_control
	fi
  	/usr/local/sbin/kernelmon &
	;;
stop)
	;;
*)
	echo "Usage: \$0 {start|stop}"
	exit 1
esac

exit 0
EOF
	chmod +x  $MOUNTPOINT/etc/init.d/kernelmon
	ln -s ../init.d/kernelmon $MOUNTPOINT/etc/rcS.d/S81kernelmon
	
cat > $MOUNTPOINT/usr/local/sbin/kernelmon <<EOF
#!/bin/sh

while :
do
	LINE=\`cat /proc/buffalo/kernevnt\`
	#echo "line [\$LINE]"
	if [ "\$LINE" = PSW_off ]
	then
		shutdown -h now
	fi
done
EOF
	chmod +x $MOUNTPOINT/usr/local/sbin/kernelmon

カーネルモジュールのコピー

/lib/modules をコピーする。
	cd /
        tar cf - lib/modules | (cd $MOUNTPOINT ; tar xvf -)

カーネルモジュールのロードスクリプトの作成

それぞれ、存在すればロードするようにする。
	cd $MOUNTPOINT
	cat > etc/init.d/usb <<EOF
#!/bin/sh

case "\$1" in
  start)
	if [ -e /proc/buffalo/gpio/power_control/usb0 ]
	then
		echo on > /proc/buffalo/gpio/power_control/usb0
	fi
	if [ -e /proc/buffalo/usb_control ]
	then
		echo on > /proc/buffalo/usb_control
	fi

	if [ -f /lib/modules/*/kernel/drivers/usb/core/usbcore.ko ]
	then
		insmod /lib/modules/*/kernel/drivers/usb/core/usbcore.ko
	fi
	if [ -f /lib/modules/*/kernel/drivers/usb/host/ehci-hcd.ko ]
	then
		insmod /lib/modules/*/kernel/drivers/usb/host/ehci-hcd.ko
	fi
	if [ -f /lib/modules/*/kernel/drivers/usb/host/ohci-hcd.ko ]
	then
		insmod /lib/modules/*/kernel/drivers/usb/host/ohci-hcd.ko
	fi
	if [ -f /lib/modules/*/kernel/drivers/usb/host/uhci-hcd.ko ]
	then
		insmod /lib/modules/*/kernel/drivers/usb/host/uhci-hcd.ko
	fi
	if [ -f /lib/modules/*/kernel/drivers/usb/storage/usb-storage.ko ]
	then
		insmod /lib/modules/*/kernel/drivers/usb/storage/usb-storage.ko
	fi
	if [ -f /lib/modules/*/kernel/drivers/usb/class/usblp.ko ]
	then
		insmod /lib/modules/*/kernel/drivers/usb/class/usblp.ko
	fi
	if [ -f /lib/modules/*/kernel/fs/fat/fat.ko ]
	then
		insmod /lib/modules/*/kernel/fs/fat/fat.ko
	fi
	if [ -f /lib/modules/*/kernel/fs/vfat/vfat.ko ]
	then
		insmod /lib/modules/*/kernel/fs/vfat/vfat.ko
	fi
	;;
  stop)
	if [ -f /lib/modules/*/kernel/fs/vfat/vfat.ko ]
	then
		rmmod vfat.ko
	fi
	if [ -f /lib/modules/*/kernel/fs/vfat/fat.ko ]
	then
		rmmod fat.ko
	fi
	if [ -f /lib/modules/*/kernel/fs/vfat/usblp.ko ]
	then
		rmmod usblp.ko
	fi
	if [ -f /lib/modules/*/kernel/fs/vfat/usb-storage.ko ]
	then
		rmmod usb-storage.ko
	fi
	if [ -f /lib/modules/*/kernel/fs/vfat/uhci-hcd.ko ]
	then
		rmmod uhci-hcd.ko
	fi
	if [ -f /lib/modules/*/kernel/fs/vfat/ohci-hcd.ko ]
	then
		rmmod ohci-hcd.ko
	fi
	if [ -f /lib/modules/*/kernel/fs/vfat/ehci-hcd.ko ]
	then
		rmmod ehci-hcd.ko
	fi
	if [ -f /lib/modules/*/kernel/fs/vfat/usbcore.ko ]
	then
		rmmod usbcore.ko
	fi

	if [ -e /proc/buffalo/usb_control ]
	then
		echo off > /proc/buffalo/usb_control
	fi
	if [ -e /proc/buffalo/gpio/power_control/usb0 ]
	then
		echo off > /proc/buffalo/gpio/power_control/usb0
	fi
	;;
  *)
	echo "Usage: \$0 {start|stop}"
	exit 1
esac

exit 0
EOF

	chmod +x etc/init.d/usb
	ln -s ../init.d/usb etc/rc0.d/K85usb
	ln -s ../init.d/usb etc/rc1.d/K85usb
	ln -s ../init.d/usb etc/rc2.d/S15usb
	ln -s ../init.d/usb etc/rc3.d/S15usb
	ln -s ../init.d/usb etc/rc4.d/S15usb
	ln -s ../init.d/usb etc/rc5.d/S15usb
	ln -s ../init.d/usb etc/rc6.d/K85usb

ネットワーク関連ののセットアップ

debian 依存。各機種共通。

/ のアンマウント

	umount $MOUNTPOINT

/boot のマウント

LS-WSGL

/dev/md0 に fsck をかける。
/dev/md0 をマウント。

LS-WSGL 以外

/dev/sdb1 をマウント。
	fsck -f -y $BOOTPARTITION

	echo mounting /boot ...

	cd /
	if [ ! -d $MOUNTPOINT/boot ]
	then
		mkdir $MOUNTPOINT/boot || exit
	fi
	mount -t $BOOTPARTITIONTYPE $BOOTPARTITION $MOUNTPOINT/boot || exit

/boot のコピー

LS-WSGL

不要

LS-WSGL 以外

uImage.buffalo をコピー
	(cd /boot ; tar cf - uImage.buffalo)|(cd $MOUNTPOINT/boot; tar xvf -)

initrd の編集

・initrd の取り出し
・loop デバイスの作成
・initrd のマウント
・linuxrc の編集・・・機種依存
・initrd のアンマウント
・initrd.buffalo の構築
	dd if=/boot/initrd.buffalo of=/boot/initrd.gz bs=64 skip=1
	echo gunziping /boot/initrd.gz ...
	gunzip /boot/initrd.gz
	if [ ! -d /tmp/root ]
	then
		mkdir /tmp/root || exit
	fi

	for minor in 0 1 2 3 4 5 6 7 8 9
	do
		if [ ! -e /dev/loop$minor ]
		then
			mknod /dev/loop$minor b 7 $minor
		fi
	done

	mount -o loop /boot/initrd /tmp/root || exit
	mv /tmp/root/linuxrc /tmp/root/linuxrc.orig
	if [ $MACHINE = LSWSGL ]
	then
	cat > /tmp/root/linuxrc <<EOF
#!/bin/sh

export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin

echo "---- in hackkit linuxrc ---"

exit 0
EOF
	else
	cat > linuxrc <<EOF
#!/bin/sh

export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin

echo "---- in hackkit linuxrc ---"

mount proc /proc -t proc
mount sysfs /sys -t sysfs

ldconfig
depmod

/etc/init.d/startSysMd.sh
echo "0x901" > /proc/sys/kernel/real-root-dev

umount /sys
umount /proc
umount -a
exit 0
EOF

	chmod 700 /tmp/root/linuxrc
	umount /tmp/root
	echo gziping /boot/initrd ... wait 5 minutes
	gzip /boot/initrd || exit
	
	chmod 755 $WORK/mkimage
	chown root.root $WORK/mkimage
	
	$WORK/mkimage -A ARM -O Linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initrd -d /boot/initrd.gz $MOUNTPOINT/boot/initrd.buffalo

	rm -f /boot/initrd.gz

/boot のアンマウント

	sync
	umount $MOUNTPOINT/boot

さて、全機種デバッグするか。。。先、長い



LS-GL
バッファローダイレクト
楽天市場
Amazon
Yahoo!ショッピング
ソフマップ
livedoor デパート
ドスパラ

HS-DHGL
バッファローダイレクト
楽天市場
Yahoo!ショッピング
somap.com
ValuMore!
ムラウチドットコム
LS-HGL
バッファローダイレクト
楽天市場
livedoor デパート
Sofmap
Yahoo!ショッピング
パソQ
ムラウチドットコム
ヤマダ電機WEB
LinkStation Mini
LS-WSGL
バッファローダイレクト
楽天市場
Amazon
Yahoo!ショッピング
Livedoor デパート
Sofmap
ムラウチドットコム
ヤマダ電機WEB
パソQ
LS-CL
バッファローダイレクト
楽天市場
amazon


高速CPU採用により、高速転送を実現したネットワーク対応HDD
ハックの記録
LinkStation/玄箱 をハックしよう

LS-WTGL/R1, LS-WHGL/R1 シリーズファームウェア アップデータ

Copyright (C) 2003-2009 Yasunari Yamashita. All Rights Reserved.
yasunari @ yamasita.jp 山下康成@京都府向日市