LS-XHL de Debian 六日目 〜initrd〜
前回までで、基本的な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)のシステムが起動する準備ができました。
次回はいよいよ起動して、残りの設定について解説します。
Please Leave a Reply
TrackBack URL :