ハックキットのインストール

LS-WSGL/R1

RamRoot で起動できるようになったので、 もう md が好きし放題。

ハックキットのインストーラを作るため、まずは手作業でインストールする。

DISK1 のマウント

インストーラを置くために、手で sda6 をマウントする。
# mkdir -p /mnt/disk1
# mount /dev/sda6 /mnt/disk1
# ls /mnt/disk1/
hackkit  spool
#
さすがにこれはスクリプトにはできない。

md の構成

標準ファームをまねて、md を構成する。
# echo 'DEVICE /dev/disk?_1 /dev/disk?_2 /dev/disk?_5' > /etc/mdadm.conf
# mdadm -Eb /dev/disk?_1 /dev/disk?_2 /dev/disk?_5 >> /etc/mdadm.conf
# mdadm -As --force
mdadm: /dev/disk2_1 has wrong uuid.
mdadm: /dev/disk1_1 has wrong uuid.
mdadm: /dev/disk2_2 has wrong uuid.
mdadm: /dev/disk1_2 has wrong uuid.
mdadm: /dev/md10 has been started with 2 drives.
mdadm: /dev/disk2_1 has wrong uuid.
mdadm: /dev/disk1_1 has wrong uuid.
mdadm: /dev/md1 has been started with 2 drives.
mdadm: /dev/md0 has been started with 2 drives.
#
できたのか?
# cat /proc/mdstat
Personalities : [raid0] [raid1]
md10 : active raid1 sda5[0] sdb5[1]
      1003904 blocks [2/2] [UU]

md1 : active raid1 sda2[0] sdb2[1]
      5004160 blocks [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1]
      1003904 blocks [2/2] [UU]

unused devices: <none>
#
いけてそう。

md のマウント

/mnt/debinst にマウントする。
# mkdir /mnt/debinst
# mount /dev/md1 /mnt/debinst
# ls /mnt/debinst/
bin        dev        home       lib        mnt        proc       root       sys        usr        www
boot       etc        initrd     libexec    modules    pwrmgrlog  sbin       tmp        var
#

標準ファームの待避

標準ファームを /mnt/debinst/.buffalo に待避する。
. で始まるファイル/ディレクトリは * で展開されないので、便利。
# cd /mnt/debinst/
# mkdir .buffalo
# mv * .buffalo
#

ハックキットのアーカイブの展開

/mnt/disk1/hackkit/ に置いてある hackkit_080317.tar.gz、 中身は、LS-HGL ハックキットのアーカイブと同じ物を、 /mnt/debinst/ に展開する。
# tar zxvf /mnt/disk1/hackkit/hackkit_080317.tar.gz
	:
	:

ジェイルの構成

上で待避した .buffalo を usr/local/buffalo とする。
# mv .buffalo usr/local/buffalo
#

fstab の修正

# vi etc/fstab
# cat etc/fstab
# /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           ext3    defaults,noatime                0 0
/dev/sda6       /mnt/disk1      xfs     defaults,noatime                0 0
/dev/sdb6       /mnt/disk2      xfs     defaults,noatime                0 0
#
マウントポイントも作る
# mkdir /mnt/debinst/mnt/disk1
# mkdir /mnt/debinst/mnt/disk2
#

miconapl の作成

# vi etc/init.d/miconapl
	:
	:
# cat etc/init.d/miconapl
#!/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

# 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 -l etc/*/*miconapl
-rwxr-xr-x    1 root     root          248 Oct 27 22:55 etc/init.d/miconapl
lrwxrwxrwx    1 root     root           18 Oct 27 22:56 etc/rc0.d/K10miconapl -> ../init.d/miconapl
lrwxrwxrwx    1 root     root           18 Oct 27 22:56 etc/rc6.d/K10miconapl -> ../init.d/miconapl
lrwxrwxrwx    1 root     root           18 Oct 27 22:56 etc/rcS.d/S80miconapl -> ../init.d/miconapl
# 

モジュールのロード

# vi etc/init.d/usb
	:
	:
# cat etc/init.d/usb
#!/bin/sh

case "$1" in
start)
        echo on > /proc/buffalo/gpio/power_control/usb0

        chroot /usr/local/buffalo mount /proc
        chroot /usr/local/buffalo insmod /lib/modules/2.6.16.16-arm1/kernel/drivers/usb/core/usbcore.ko
        chroot /usr/local/buffalo insmod /lib/modules/2.6.16.16-arm1/kernel/drivers/usb/host/ehci-marvell-hcd.ko
        chroot /usr/local/buffalo insmod /lib/modules/2.6.16.16-arm1/kernel/drivers/usb/storage/usb-storage.ko
        chroot /usr/local/buffalo insmod /lib/modules/2.6.16.16-arm1/kernel/fs/fat/fat.ko
        chroot /usr/local/buffalo insmod /lib/modules/2.6.16.16-arm1/kernel/fs/vfat/vfat.ko
        chroot /usr/local/buffalo insmod /lib/modules/2.6.16.16-arm1/kernel/fs/msdos/msdos.ko
        chroot /usr/local/buffalo insmod /lib/modules/2.6.16.16-arm1/kernel/drivers/usb/class/usblp.ko

        ;;
stop)
        chroot /usr/local/buffalo umount /proc

        echo off > /proc/buffalo/gpio/power_control/usb0
        ;;
*)
        echo "Usage: $0 {start|stop}"
        exit 1
esac

exit 0
# chmod +x etc/init.d/usb
# ln -s ../init.d/usb etc/rc0.d/K10usb
# ln -s ../init.d/usb etc/rc2.d/S90usb
# ln -s ../init.d/usb etc/rc6.d/K10usb
# ls -l etc/*/*usb
-rwxr-xr-x    1 root     root          838 Oct 27 23:03 etc/init.d/usb
lrwxrwxrwx    1 root     root           13 Oct 27 23:05 etc/rc0.d/K10usb -> ../init.d/usb
lrwxrwxrwx    1 root     root           13 Oct 27 23:06 etc/rc2.d/S90usb -> ../init.d/usb
lrwxrwxrwx    1 root     root           13 Oct 27 23:06 etc/rc6.d/K10usb -> ../init.d/usb
#

SW による電源 OFF

/usr/local/sbin/kernelmon

# vi usr/local/sbin/kernelmon
	:
	:
# cat 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 usr/local/sbin/kernelmon
#

/etc/init.d/kernelmon

以前は、/etc/init.d/usb で /proc/buffalo/gpio/switch/sw_control に on を書いたが、
USB とは関係ないので、kernelmon で書く。
# vi etc/init.d/kernelmon
	:
	:
# cat 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
# chmod +x etc/init.d/kernelmon
# ln -s ../init.d/kernelmon etc/rcS.d/S81kernelmon
#

さあ、LS-WSGL 依存のところは、こんなところか。

あとはネットワーク系とぉ、、、initrd か。

ネットワーク関連の設定

手抜き。
LS-HGL ハックキットのネットワーク系のところだけを 切り出して設定。
# sh /mnt/disk1/hackkit/LS-WSGL_hackkit_step2_0.00.sh
creating network_interfaces ...
creating resolv.conf ...
creating hosts ...
creating hostname ...
#

アンマウント

もうルートファイルシステムは完璧!なので、アンマウントする。
# umount /mnt/debinst
#

initrd

もう一回 initrd の /linuxrc を編集して、initrd を作り直す。

md0 (/boot)のマウント

# mount /dev/md0 /boot
EXT2-fs warning: mounting unchecked fs, running e2fsck is recommended
# ls /boot
conf_save.tgz                   initrd.gz
conf_save.tgz.orig              log.tgz
hddrootfs.buffalo.updated.done  lost+found
initrd.buffalo                  uImage.buffalo
initrd.buffalo.orig
#

initrd.buffalo の待避

# cd /boot
# mv initrd.buffalo initrd.buffalo.RamRoot
#

initrd のマウント

initrd.gz が残っているので、復元してマウントする。
# gunzip initrd.gz
# mknod /dev/loop0 b 7 0
# mkdir /tmp/root
# mount -o loop initrd /tmp/root
# cd /tmp/root
#

/linuxrc の編集

標準ファームの /linuxrc を sed で編集するのは、 少々無理がある。
最低限の linuxrc とする。
「最低限」ってどれだけ必要???
export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin

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

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

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

umount /sys
umount /proc
umount -a
exit 0
このぐらいか。
# vi linuxrc
	:
	:
# cat linuxrc
#!/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

/etc/init.d/startSysMd.sh

echo "0x901" > /proc/sys/kernel/real-root-dev

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

initrd のアンマウント

# cd /
# umount /tmp/root
#

initrd の圧縮

# gzip /boot/initrd
#

initrd.buffalo の作成

# /mnt/disk1/hackkit/mkimage -A ARM -O Linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initrd -d /boot/initrd.gz /boot/initrd.buffalo
Image Name:   initrd
Created:      Thu Nov  1 00:51:27 2007
Image Type:   ARM Linux RAMDisk Image (gzip compressed)
Data Size:    5598606 Bytes = 5467.39 kB = 5.34 MB
Load Address: 0x00000000
Entry Point:  0x00000000
#
できた。完璧のはず。

LinkStation Mini
LS-WSGL
楽天市場
Amazon
Yahoo!ショッピング
Livedoor デパート
Sofmap
TSUKUMO ネットショップ
ムラウチドットコム
ヤマダ電機WEB
パソQ


KOF 展示環境
ハックの記録
LinkStation/玄箱 をハックしよう

メモリー、外付けHDD、ネットワーク対応HDDなど計44製品の価格改定を実施

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