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

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

ハックキットのインストーラを一本化するために、 じっくりと仕様をまとめる。

機種個別のインストーラだったらその機種だけのことを考えればよいのだが、 機種共通にすることを考えると、枠をきっちり決めて その枠の中でどう機種依存を吸収するかを考えないといけない。
久しぶりにソフトウェアを設計しているという気にさせてくれる。
ワクワク。

インストーラで実行するのは、 ・各パーティションのフォーマット
・/ のマウント
・アーカイブの展開
・fstab の修正(LS-WSGL のみ)
・miconapl のコピー(LS-GL/HS-DHGLのみ)
・LED コントロールスクリプトの作成
・Fan コントロールスクリプトの作成(LS-GL/HS-DHGLのみ)
・電源 SW による電源 OFF 対応
・カーネルモジュールのコピー
・カーネルモジュールのロードスクリプトの作成
・ネットワークのセットアップ
・/ のアンマウント
・/boot のマウント
・/boot のコピー
・initrd の編集
・/boot のアンマウント
こんなところか。

一つ一つ確認していく。

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

いきなり機種依存。

HS-WSGL

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

HS-WSGL 以外

/dev/sdb1 を ext3 に、
/dev/sdb2 と /dev/sdb4 とを xfs に、
/dev/sdb3 を swap に
フォーマットする。
        mke2fs -j /dev/sdb1 || exit
        mkfs.xfs -f /dev/sdb2 || exit
        mkswap /dev/sdb3 || exit
        mkfs.xfs -f /dev/sdb4 || exit

/ のマウント

HS-WSGL

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

HS-WSGL 以外

/dev/sdb2 をマウント。

アーカイブの展開

hackkit_YYMMDD.tar.gz を展開

fstab の修正(LS-WSGL のみ)

md0, md10, md1 他を使うように修正
# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>                       <dump>  <pass>
/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

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

標準ファームから、/usr/local/sbin/miconapl をコピーする。
EABI の debian で動くのか確認要。

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

/etc/init.d/miconapl を作成し、
/etc/rc0.d/K10miconapl
/etc/rc6.d/K10miconapl
/etc/rcS.d/S80miconapl
にシンボリックリンクを張る。
        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
/etc/init.d/miconapl は機種ごと

LS-GL/HS-DHGL

#!/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

LS-HGL

#!/bin/sh

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

exit 0

LS-CL

#!/bin/sh

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

exit 0
LS-HGL とは出力先が違うだけ。

LS-WSGL

#!/bin/sh

case "\$1" in
start)
        echo off > /proc/buffalo/gpio/led/power_blink
        ;;
stop)
        echo on > /proc/buffalo/gpio/led/power_blink
        ;;
*)
        echo "Usage: \$0 {start|stop}"
        exit 1
esac

exit 0
LS-CL と同じでもいいな。

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

LS-GL + ハックキットでファンコントロール

電源 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

/etc/init.d/kernelmon
#!/bin/sh

case "\$1" in
  start)
        /usr/local/sbin/kernelmon &
        ;;
  stop)
        ;;
  *)
        echo "Usage: \$0 {start|stop}"
        exit 1
esac

exit 0
S81kernelmon にリンク
	chmod +x  $MOUNTPOINT/etc/init.d/kernelmon
	ln -s ../init.d/kernelmon $MOUNTPOINT/etc/rcS.d/S81kernelmon
/usr/local/sbin/kernelmon
#!/bin/sh

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

LS-CL/LS-WSGL

/etc/init.d/kernelmon
#!/bin/sh

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

exit 0
LS-HGL との違いは、/proc/buffalo/gpio/switch/sw_control への 出力の有無のみ。

S81kernelmon にリンク

	chmod +x  $MOUNTPOINT/etc/init.d/kernelmon
	ln -s ../init.d/kernelmon $MOUNTPOINT/etc/rcS.d/S81kernelmon
/usr/local/sbin/kernelmon
#!/bin/sh

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

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

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

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

USB 関連のモジュールのロード。
モジュールは機種ごとにばらばら。
どーしよーかなぁ。。。
/lib/modules/2.6.16.16-arm1/kernel/drivers/usb/core/usbcore.ko
/lib/modules/2.6.16.16-arm1/kernel/drivers/usb/host/ehci-marvell-hcd.ko
/lib/modules/2.6.16.16-arm1/kernel/drivers/usb/storage/usb-storage.ko
/lib/modules/2.6.16.16-arm1/kernel/fs/fat/fat.ko
/lib/modules/2.6.16.16-arm1/kernel/fs/vfat/vfat.ko
/lib/modules/2.6.16.16-arm1/kernel/fs/msdos/msdos.ko
/lib/modules/2.6.16.16-arm1/kernel/drivers/usb/class/usblp.ko
それぞれ、存在すればロードするようにする。

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

debian 依存。各機種共通。
各機種ごとに IP アドレスを変えられるようにしたほうが 自分的にはうれしいな。

/ のアンマウント

/boot のマウント

HS-WSGL

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

HS-WSGL 以外

/dev/sdb1 をマウント。

/boot のコピー

HS-WSGL

不要

HS-WSGL 以外

uImage.buffalo をコピー

initrd の編集

・initrd の取り出し
・loop デバイスの作成
・initrd のマウント
・linuxrc の編集・・・機種依存
・initrd のアンマウント
・initrd.buffalo の構築

/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


ハックキットの一本化のための機種判別
ハックの記録
LinkStation/玄箱 をハックしよう

RAID機能搭載NASの最大約37%値下げをはじめ、レイヤー2スイッチ、内蔵SSDなど計18製品の価格改定を実施

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