LS-XHL de Debian 六日目 〜initrd〜

posted by brdofprds on 2009.05.02, under Kirkwood, LS-XHL
02th

前回までで、基本的なDebian/Ubuntuのシステムが完成しました。

後はこれらのシステムが起動できるように細かい設定を行います。

HDDのパーティションを変更し、initrdを改変して作成したシステムがブートするようにします。

1. HDDのマウント、バックアップ

LS-XHLを停止して、作成したファイルと現在の状態をすべてバックアップします。

# mkdir /mnt/boot /mnt/root /mnt/disk1
# mount /dev/sdb1 /mnt/boot
# tar cfz /mnt/boot-original.tar.gz /mnt/boot
# umount /mnt/boot
# mount /dev/sdb2 /mnt/root
# tar cfz /mnt/root-original.tar.gz /mnt/root
# umount /mnt/root
# mount /dev/sdb6 /mnt/disk1
# tar cfz /mnt/(debian|ubuntu)-root.tar.gz /mnt/disk1/(debian|ubuntu)-root
# umount /mnt/disk1

2. initrdの改変

/bootに含まれていたinitrd.buffaloを展開して、中にあるlinuxrcを書き換えます。

ここでアップデートや、システムのチェックなどを行っていますが、それらを無効にして、システムがマウント出来るようにします。

# cp /mnt/boot_original.tar.gz .
# tar xfz boot_original.tar.gz
# cd boot
# ls
hddrootfs.buffalo initrd.buffalo u-boot.buffalo uImage.buffalo

このinitrd.buffaloを編集するのですが、手順が多いのでスクリプトを作成しました。

# cat unpack.sh
#!/bin/sh

dd if=initrd.buffalo of=initrd.gz bs=64 skip=1
gunzip initrd.gz
mount -o loop initrd /mnt/initrd

# cat pack.sh
#!/bin/sh

umount /mnt/initrd
gzip initrd
mkimage -A ARM -O Linux -T ramdisk -C gzip -a 0x00000000 -e 0x00000000 -n initrd -d initrd.gz initrd.buffalo
rm initrd.gz

注意事項としては、あらかじめマウントポイント(/mnt/initrd)を作成することと、uboot-mkimageパッケージをインストールしておくことです。

unpack.shでinitrd.buffaloを展開し、pack.shでintird.buffaloに圧縮します。いずれもルートで行ってください。

# ./unpack.sh
# cd /mnt/initrd
# vi linuxrc
(下記のようにする)
# cat linuxrc
==========================================================================
#!/bin/sh                                                                                                                                                  

export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin

echo "---- in linuxrc ---"
echo "Version 1.00 2008/ 7/ 1"

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

. /usr/local/lib/libsys
. /usr/local/bin/libbuffalo
. /usr/local/lib/libmsg    

reset_date()
{
        TMP=`date "+%s"`
        if [ ${TMP} -lt 1133362800 ] || [ ${TMP} -ge 1606748400 ] ; then
                date ${INITIAL_DATE}
                if [ -L "${HW_CLOCK}" ] ; then
                        hwclock --systohc --localtime
                else
                        hwclock -w
                fi
        fi
}

# set the system time from the hardware clock
HW_CLOCK=`which hwclock`
if [ -L "${HW_CLOCK}" ] ; then
        # not busybox hwclock version
        hwclock --hctosys --localtime
else
        # busybox hwclock version
        hwclock -s
fi
reset_date
date

# reload /etc/nas_feature
# if failed to copy, anyway go on bootup process with empty setting.
[ -f /etc/nas_feature ] && . /etc/nas_feature

ldconfig
depmod

## Setup Micon communication port and send flash-boot complete message.
miconapl -b -a boot_flash_ok > /dev/null

ln -sf /dev/sde /dev/usbdisk1
ln -sf /dev/sdf /dev/usbdisk2
create_devlink

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

umount /sys
umount /proc
umount -a
exit 0
==========================================================================
# cd -
# ./pack.sh

以上でinitrdの編集は終わりです。変更点はHDDのチェックを飛ばす部分が中心です。

3. パーティションの変更

以前/etc/fstabに記載したようにパーティションを変更します。

LS-XHLは/dev/sdb1がboot、/dev/sdb2が/である必要があります。オリジナルの状態では、ダミーパーティション/dev/sdb3,4がある上、xfsフォーマットが使われているので他で扱いやすいようにext3に変更します。

GpartedなどGUIを使った方が簡単で、間違えません。次のようにフォーマットします。

/dev/sdb1 /boot 512MB
/dev/sdb2 / (好きなだけ)
/dev/sdb3 linux-swap 512MB

これだけではu-bootが/bootを読めないので、次のようにフォーマットします。(参考)

# mkfs.ext3 -j -m 0 -I 128 /dev/sdb1

4. ファイルの書き戻し

準備が整ったので、ファイルを書き戻します。

# mount /dev/sdb1 /mnt/boot
# cp -a initrd.buffalo(改変したもの) u-boot.buffalo uImage.buffalo /mnt/boot/
# umount /mnt/boot
# mount /dev/sdb2 /mnt/root
# tar xfz (debian|ubuntu)-root.tar.gz -C /mnt
(最後に/mnt/rootで設定に誤りがないか確認します。)
# umount /mnt/root

以上で(Debian|Ubuntu)のシステムが起動する準備ができました。
次回はいよいよ起動して、残りの設定について解説します。

There are no comments.

Please Leave a Reply

TrackBack URL :

pagetop