Debian 5.0(lenny)の起動プロセスの確認

玄箱をDebian 6.0(squeeze)にする際、お世話になったサイトが www.revulo.com で、どうして対応が必要なのか知りたかったこともあり、セットアッププログラムを解析

debian-lenny-installer-kuroHG.sh

#!/bin/sh

BOOT_SELECTOR=kuro-bootsel2.20080419.tar.gz
BOOT_SELECTOR_PATCH=kuro-bootsel2-debian.tgz
DEBIAN_IMAGE=debian-lenny-kuroBOX-20090317.tgz
KERNEL_LOADER=loader.o
KERNEL_IMAGE=kernelimage-2.6.25.1-kuroHG.tgz
KERNEL_MODULE=modules-2.6.25.1-kuroHG.tgz

TMP=`pwd`
HDA1=/                # MontaVista Linux パーティション1
HDA3=/mnt            # Debian lenny パーティション3

tar xfz ${BOOT_SELECTOR}
tar xfz ${BOOT_SELECTOR_PATCH}    # kuro_boot.conf のみが入っていて前の${BOOT_SELECTOR}内の kuro_boot.conf を上書き
cd kuro-bootsel2
sh install.sh            # 次項に記載
cd ..
rm -rf kuro-bootsel2

cd ${HDA1}/boot
cp -p ${TMP}/${KERNEL_LOADER} .    # ローダーモジュール(loader.o) を hda1:/boot/ へ
tar xfz ${TMP}/${KERNEL_IMAGE}    # カーネル(vmlinux.bin, .config, System.map, uImage) を hda1:/boot/ へ

cd ${HDA3}
tar xfzp ${TMP}/${DEBIAN_IMAGE}    # hda3 にシステムを展開

cd ${HDA3}/lib/modules
tar xfz ${TMP}/${KERNEL_MODULE}    # カーネルモジュール(2.6.25.1-kuroboxHG/)を hda3:/lib/modules へ

install.sh

「玄箱用なんちゃってブートセレクタ2」(説明書:readme.euc-jp.txt)のセットアップ

#! /bin/sh

mkdir -p /boot/tools
cp kuro_swread kuro_morse /boot/tools/
cp kuro_bootsel2.sh /etc/init.d/
chmod 755 /etc/init.d/kuro_bootsel2.sh
if [ -d /etc/rcS.d ]; then \
    (cd /etc/rcS.d; ln -s ../init.d/kuro_bootsel2.sh S15kuro_bootsel2.sh)
fi
if [ -d /etc/rc.d/rcS.d ]; then
    (cd /etc/rc.d/rcS.d; ln -s ../init.d/kuro_bootsel2.sh S15kuro_bootsel2.sh)
fi

cp kuro_boot.conf /etc/

exit 0

kuro_boot.conf

変更された kuro_boot.conf は、デフォルトを2にしてパラメータ2は

# Menu entry No.2
#
menu2="Debian"
loader2="-f /boot/loader.o"
kernel2=/boot/vmlinux.bin
option2='cmdline="root=/dev/hda3"'

結果

「謎は全て解けた!」大げさだが理解したので快感である

先に理解していれば、etch から squeeze にするのに、
①hda1(etch)をhda3へコピー(hda3用の修正も必要)
②kuro_load_param(etch時利用されていた物)を修正してhda3から起動するよう変更(「玄箱用なんちゃってブートセレクタ2」を導入しても良い)
③hda3を/として起動後、etch>lenny>squeeze へとアップグレードする
という手順もあったのかと思う
ただしhda3が確保できないだろうからディスクの交換が必要になる

参考ファイル

/etc/init.d/kuro_bootsel2.sh
/etc/kuro_boot.conf

etch時のカーネル2.6の再ロードプロセスで利用していたのは以下のファイル

/etc/init.d/kuro_load
/etc/inid.d/kuro_load_wd
/etc/kuro_load_param