ハックキットの一本化のためのインストーラのデバッグ(1)LS-WSGL

Debian LS-WSGL/R1

一本化したハックキットのインストーラを順にデバッグをしていく。

まず最初は LS-WSGL

RamRoot で起動

標準ファームを実験用 HDD にコピーし、 先日作った RamRoot で起動するようにするスクリプトを実行、 RamRoot で起動する。

root でログイン

BUFFALO INC. LinkStation series
LS-WSGL-EM678 login: root
login[1187]: root login  on `ttyS0'



BusyBox v1.1.1 (2008.11.04-08:25+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

#

sda6 のマウント

ハックキットを収めている /mnt/disk1 をマウントする。
# ls /mnt
array1      authtest    disk2       msdfs_root  usbdisk1
array2      disk1       etc         ram
# mount /dev/sda6 /mnt/disk1/
XFS mounting filesystem sda6
# cd /mnt/disk1/share/hackkit/
# ls
LS-WSGL_hackkit_step1_0.02.sh  hackkit_081122.tar.gz
hackkit_001.sh                 mkimage
#

ハックキットインストーラの実行

まあ、色々バグは出るだろう。
# sh hackkit_001.sh
hackkit_003.sh: hackkit_001.sh: 79: Syntax error: "}" unexpected (expecting "then")
#
がー。

まあ、最初はそんなもの。

修正

修正、確認、修正、確認・・・

ようやく完了

[yasunari@giga unified]$ diff -u hackkit_001.sh hackkit_010.sh
--- hackkit_001.sh      2008-12-03 21:30:01.000000000 +0900
+++ hackkit_010.sh      2008-12-05 22:32:34.000000000 +0900
@@ -51,6 +51,11 @@
 # / のマウント

 mount_root() {
+       if [ $MACHINE = LSWSGL ]
+       then
+           echo building md...
+           /etc/init.d/startSysMd.sh
+       fi
        echo mounting root file system ...

        if [ ! -d $MOUNTPOINT ]
@@ -61,6 +66,7 @@

        if [ $MACHINE = LSWSGL ]
        then
+
                mkdir $MOUNTPOINT/.buffalo
                mv $MOUNTPOINT/lib/modules $MOUNTPOINT/.buffalo
                rm -fr $MOUNTPOINT/*
@@ -68,8 +74,6 @@
                mv $MOUNTPOINT/.buffalo/modules $MOUNTPOINT/lib
                rmdir $MOUNTPOINT/.buffalo

-               mkdir $MOUNTPOINT/mnt/disk1
-               mkdir $MOUNTPOINT/mnt/disk2
        fi
 }
 #---------------------------------------------------------
@@ -80,6 +84,19 @@

        cd $MOUNTPOINT
        tar zxvf $HACKKIT
+
+       # must be in an archive
+       mknod $MOUNTPOINT/dev/rtc c 10 135
+
+       if [ $MACHINE = LSWSGL ]
+       then
+               mkdir $MOUNTPOINT/mnt/disk1
+               mkdir $MOUNTPOINT/mnt/disk2
+
+               mknod $MOUNTPOINT/dev/md0  b 9 0
+               mknod $MOUNTPOINT/dev/md1  b 9 1
+               mknod $MOUNTPOINT/dev/md10 b 9 10
+       fi
 }

 #---------------------------------------------------------
@@ -524,9 +541,9 @@
 edit_initrd() {
        echo editing initrd ...

-       dd if=/boot/initrd.buffalo of=/boot/initrd.gz bs=64 skip=1
-       echo gunziping /boot/initrd.gz ...
-       gunzip /boot/initrd.gz
+       dd if=$MOUNTPOINT/boot/initrd.buffalo of=$MOUNTPOINT/boot/initrd.gz bs=64 skip=1
+       echo gunziping $MOUNTPOINT/boot/initrd.gz ...
+       gunzip $MOUNTPOINT/boot/initrd.gz
        if [ ! -d /tmp/root ]
        then
                mkdir /tmp/root || exit
@@ -540,7 +557,7 @@
                fi
        done

-       mount -o loop /boot/initrd /tmp/root || exit
+       mount -o loop $MOUNTPOINT/boot/initrd /tmp/root || exit
        mv /tmp/root/linuxrc /tmp/root/linuxrc.orig
        if [ $MACHINE = LSWSGL ]
        then
@@ -551,16 +568,6 @@

 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

@@ -575,18 +582,29 @@
 umount -a
 exit 0
 EOF
+       else
+       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
+       fi

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

-       rm -f /boot/initrd.gz
+       rm -f $MOUNTPOINT/boot/initrd.gz
 }

 #---------------------------------------------------------
@@ -624,7 +642,7 @@
 case "$PRODUCTID" in
 0x00000009)
        MACHINE=LSGL
-       # 各パーティションのフォーマット
+       # 各パーティションのフォーマット(LS-WSGL 以外)
        format_disk
        # / のマウント
        mount_root
@@ -656,7 +674,7 @@

        # /boot のマウント
        mount_boot
-       # /boot のコピー
+       # /boot のコピー(LS-WSGL 以外)
        copy_boot
        # initrd の編集
        edit_initrd
@@ -666,7 +684,7 @@
 0x0000000A)
        MACHINE=HSDHGL

-       # 各パーティションのフォーマット
+       # 各パーティションのフォーマット(LS-WSGL 以外)
        format_disk
        # / のマウント
        mount_root
@@ -698,7 +716,7 @@

        # /boot のマウント
        mount_boot
-       # /boot のコピー
+       # /boot のコピー(LS-WSGL 以外)
        copy_boot
        # initrd の編集
        edit_initrd
@@ -713,7 +731,7 @@
 0x0000000E)
        MACHINE=LSHGL

-       # 各パーティションのフォーマット
+       # 各パーティションのフォーマット(LS-WSGL 以外)
        format_disk
        # / のマウント
        mount_root
@@ -745,7 +763,7 @@

        # /boot のマウント
        mount_boot
-       # /boot のコピー
+       # /boot のコピー(LS-WSGL 以外)
        copy_boot
        # initrd の編集
        edit_initrd
@@ -755,7 +773,7 @@
 0x0000000F)
        MACHINE=LSCL

-       # 各パーティションのフォーマット
+       # 各パーティションのフォーマット(LS-WSGL 以外)
        format_disk
        # / のマウント
        mount_root
@@ -787,7 +805,7 @@

        # /boot のマウント
        mount_boot
-       # /boot のコピー
+       # /boot のコピー(LS-WSGL 以外)
        copy_boot
        # initrd の編集
        edit_initrd
@@ -803,8 +821,8 @@
        SWAPPARTITION=/dev/md10
        DATAPARTITION=""

-       # 各パーティションのフォーマット
-       format_disk
+       # 各パーティションのフォーマット(LS-WSGL 以外)
+       # format_disk
        # / のマウント
        mount_root
        # アーカイブの展開
@@ -835,8 +853,8 @@

        # /boot のマウント
        mount_boot
-       # /boot のコピー
-       copy_boot
+       # /boot のコピー(LS-WSGL 以外)
+       # copy_boot
        # initrd の編集
        edit_initrd
        # /boot のアンマウント
[yasunari@giga unified]$
ファイル名が、何度作り直したかをあらわしている。。。
9回も、標準ファームの HDD を作って、インストールして、 起動して、バグを見つけて、、、の繰り返し。

ただ、ひとつだけ対応方法のわからないエラーが残ってしまった。

INIT: version 2.86 booting
Setting the system clock.
Activating swap...Adding 1003896k swap on /dev/md10.  Priority:-1 extents:1 across:1003896k
done.
Setting the system clock.
Cleaning up ifupdown....
Loading kernel modules...done.
Checking file systems...fsck 1.41.3 (12-Oct-2008)
done.
Setting kernel variables (/etc/sysctl.conf)...Unknown HZ value! (107) Assume 100.
done.
Unknown HZ value! (107) Assume 100 って誰が何で出してるん?
保留。

さあ、次はどれを確認しよ。。。


LS-WSGL/R1 をお持ちの皆さん、Lenny を動かす手順は全部公開しました。
どんどん真似して LS-WSGL/R1 をいじくりまわしてください!

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


LS-WTGL/R1, LS-WHGL/R1 シリーズファームウェア アップデータ
ハックの記録
LinkStation/玄箱 をハックしよう

ハックキットの一本化のためのインストーラのデバッグ(2)LS-CL

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