3歩進む

Debian LS-QL

またまた、initrd を20回ぐらい作り直して、 ようやく前進できた。

md の確認

Debian GNU/Linux 5.0
qube login: guest
Password:
Last login: Wed Feb 18 15:55:08 JST 2009 from uxl.yamasita.jp on pts/0
Linux qube 2.6.22.7 #51 Thu Jan 29 09:56:43 JST 2009 armv5tejl

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
No directory, logging in with HOME=/
guest@qube:/$ df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/md1               4993920    212096   4781824   5% /
tmpfs                    62888         0     62888   0% /lib/init/rw
tmpfs                    62888         0     62888   0% /dev/shm
/dev/root.old            31729     16813     14916  53% /initrd
/dev/md0                995928    192140    803788  20% /boot
/dev/sda6            148376092     65652 148310440   1% /mnt/disk1
guest@qube:/$
/dev/md0 が /boot にマウントされているし、
/dev/md1 も / にマウントされている。
guest@qube:/$ cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md1 : active raid1 sda2[2]
      5004160 blocks [4/1] [__U_]

md10 : active raid1 sda5[2]
      1003904 blocks [4/1] [__U_]

md0 : active raid1 sda1[2]
      1003904 blocks [4/1] [__U_]

unused devices: <none>
guest@qube:/$
md もちゃんとできている。
guest@qube:/$ free
             total       used       free     shared    buffers     cached
Mem:        125780      53136      72644          0      32788      10920
-/+ buffers/cache:       9428     116352
Swap:      1003896          0    1003896
guest@qube:/$
Swap もちゃんと使われている。

インストーラの差分

LS-XHL にインストールした 2/16 版のインストーラからの差分は、、、
yasunari@ude:/home/linkstation/HackKit/unified$ diff -u hackkit_090216.sh hackki
t_090222.sh
--- hackkit_090216.sh   2009-02-16 20:37:53.995806375 +0900
+++ hackkit_090222.sh   2009-02-22 01:27:22.960106522 +0900
@@ -12,6 +12,11 @@
 NAMESERVER=192.168.1.2
 HOSTNAME=hackkit

+if [ -f hackkit_config ]
+then
+       . hackkit_config
+fi
+
 WORK=/mnt/disk1/share/hackkit
 HACKKIT=$WORK/hackkit_081209.tar.gz
 MOUNTPOINT=/mnt/debinst
@@ -51,7 +56,7 @@
 # / のマウント

 mount_root() {
-       if [ $MACHINE = LSWSGL ]
+       if [ $MACHINE = LSWSGL -o $MACHINE = LSQL ]
        then
            echo building md...
            /etc/init.d/startSysMd.sh
@@ -64,7 +69,7 @@
        fi
        mount -t xfs $ROOTPARTITION $MOUNTPOINT || exit

-       if [ $MACHINE = LSWSGL ]
+       if [ $MACHINE = LSWSGL -o $MACHINE = LSQL ]
        then

                mkdir $MOUNTPOINT/.buffalo
@@ -85,7 +90,7 @@
        cd $MOUNTPOINT
        tar zxvf $HACKKIT

-       if [ $MACHINE = LSWSGL ]
+       if [ $MACHINE = LSWSGL -o $MACHINE = LSQL ]
        then
                mkdir $MOUNTPOINT/mnt/disk1
                mkdir $MOUNTPOINT/mnt/disk2
@@ -97,7 +102,7 @@
 }

 #---------------------------------------------------------
-# fstab の修正(LS-WSGL のみ)
+# fstab の修正(LS-WSGL,LS-QL のみ)

 create_fstab() {
        echo creating /etc/fstab ...
@@ -109,10 +114,15 @@
 /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
+
+       echo "/dev/md0        /boot           $BOOTPARTITIONTYPE    defaults,noatime                0 0" >> etc/fstab
+
+       echo "/dev/sda6       /mnt/disk1      xfs     defaults,noatime                0 0" >> etc/fstab
+       if [ $MACHINE = LSWSGL ]
+       then
+               echo "/dev/sdb6       /mnt/disk2      xfs     defaults,noatime                0 0" >> etc/fstab
+       fi
 }

 #---------------------------------------------------------
@@ -324,7 +334,7 @@
 do
        LINE=\`cat /proc/buffalo/kernevnt\`
        #echo "line [\$LINE]"
-       if [ "\$LINE" = PSW_off ]
+       if [ "\$LINE" = PSW_off -o "\$LINE" = PSW_pushed ]
        then
                shutdown -h now
        fi
@@ -546,7 +556,7 @@
        cd /
        if [ ! -d $MOUNTPOINT/boot ]
        then
-               mkdir $MOUNTPOINT/boot || exit
+               mkdir -p $MOUNTPOINT/boot || exit
        fi
        mount -t $BOOTPARTITIONTYPE $BOOTPARTITION $MOUNTPOINT/boot || exit
 }
@@ -584,7 +594,7 @@

        mount -o loop $MOUNTPOINT/boot/initrd /tmp/root || exit
        mv /tmp/root/linuxrc /tmp/root/linuxrc.orig
-       if [ $MACHINE = LSWSGL ]
+       if [ $MACHINE = LSWSGL -o $MACHINE = LSQL ]
        then
        cat > /tmp/root/linuxrc <<EOF
 #!/bin/sh
@@ -596,9 +606,13 @@
 mount proc /proc -t proc
 mount sysfs /sys -t sysfs

+. /usr/local/lib/libsys
+SetupNasFeature
+
 ldconfig
 depmod

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

@@ -927,6 +941,54 @@
        # /boot のアンマウント
        umount_boot
        ;;
+0x00004000)
+       MACHINE=LSQL
+
+       BOOTPARTITION=/dev/md0
+       BOOTPARTITIONTYPE=ext3
+       ROOTPARTITION=/dev/md1
+       SWAPPARTITION=/dev/md10
+       DATAPARTITION=""
+
+       # 各パーティションのフォーマット(LS-WSGL 以外)
+       # format_disk
+       # / のマウント
+       mount_root
+       # アーカイブの展開
+       extract_hackkit
+       # fstab の修正(LS-WSGL のみ)
+       create_fstab
+       # miconapl のコピー(LS-GL/HS-DHGLのみ)
+       #copy_miconapl
+       # LED コントロールスクリプトの作成
+       create_miconapl
+       # Fan コントロールスクリプトの作成(LS-GL/HS-DHGLのみ)
+       # create_fancontrol
+       # 電源 SW による電源 OFF 対応
+       create_kernelmon
+       # カーネルモジュールのコピー(LS-WSGL 以外)
+       # copy_modules
+       # カーネルモジュールのロードスクリプトの作成
+       create_usb
+
+       # ネットワークのセットアップ
+       network_interfaces
+       resolv_conf
+       hosts
+       hostname
+
+       # / のアンマウント
+       umount_root
+
+       # /boot のマウント
+       mount_boot
+       # /boot のコピー(LS-WSGL 以外)
+       # copy_boot
+       # initrd の編集
+       edit_initrd
+       # /boot のアンマウント
+       umount_boot
+       ;;
 *)
        echo unknown PRODUCTID = "$PRODUCTID"
        exit
yasunari@ude:/home/linkstation/HackKit/unified$
LS-XHL にも LS-QL にも、その場限りのパッチ的に修正を入れたので、 ここらあたりでリファクタリングが必要。

機能拡張

LS-QL 対応の他にも、hackkit_config があればそれを読み込む機能を追加した。

これまでは
インストールする度にインストーラの先頭に書いてある IP アドレスや ホスト名をそのマシンに対応するよう修正していた。

今回 hackkit_config があればそれを読み込む機能を追加した。
hackkit_config があればそれを読み込むので、 hackkit_config に

ADDRESS=192.168.2.50
HOSTNAME=qube
とデフォルト異なるところだけを書いておけば、 インストーラは全く修正しなくてもよい。

hackkit_config はそのマシンに固有
hackkit_YYMMDD.sh はそのマシンに依存しない
ようにできた。



LS-QL
バッファローダイレクト
楽天市場
amazon
livedoorデパート
Sofmap
バリューモア
Yahoo!ショッピングトップ
パソQ
ムラウチドットコム


2歩さがる
ハックの記録
LinkStation/玄箱 をハックしよう

リファクタリング

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