ハックキットの一本化のためのインストーラのデバッグ(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 をいじくりまわしてください!



LS-WTGL/R1, LS-WHGL/R1 シリーズファームウェア アップデータ
ハックの記録
LinkStation/玄箱 をハックしよう
ハックキットの一本化のためのインストーラのデバッグ(2)LS-CL

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

AltStyle によって変換されたページ (->オリジナル) /