MyLinuxの起動を確認する

MyLinux用initrdファイル(ramdisk.img)を用いて、MyLinuxが起動することを確認します。

LILOを使ってMyLinuxを起動

MyLinuxの起動確認には、MyLinux開発マシンにインストールされているVine Linuxのブートローダ「LILO」(LInux LOader)を使います。

MyLinuxのカーネルをコピー

MyLinuxのカーネルイメージとカーネルで利用されている変数と関数のアドレス一覧が書かれているファイルを、Vine Linuxの/bootディレクトリにコピーします。

# cp -p /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.29-mylinux
# cp -p /usr/src/linux/System.map /boot/System.map-2.4.29-mylinux

/usr/src/linux/arch/i386/boot/bzImage: MyLinuxのカーネルイメージ
/usr/src/linux/System.map: カーネルで利用されている変数と関数のアドレス一覧

(注)
コピーは、-pオプションを付けて所有者のユーザID、グループID、アクセス権限、最終修正時刻、最終アクセス時刻を同じ状態にします。

▼確認

# ls /boot -l | grep mylinux
-rw-r--r--    1 root     root       390086 Oct 25 23:40 System.map-2.4.29-mylinux
-rw-r--r--    1 root     root      1068796 Oct 25 23:40 vmlinuz-2.4.29-mylinux
#

initrdファイルの書き換え

MyLinux用のルートファイルシステムはハードディスク内の/usr/local/src/origlinuxディレクトリ上で構築します。

MyLinux完成時にはこのディレクトリをコンパクトフラッシュや USBメモリに書き込みます。
書き込んだものをルートファイルシステムとし、それらのデバイスからMyLinuxを起動します。

コンパクトフラッシュなら「hda1」が、USBメモリなら「sda1」がパーティション番号としてルートファイルシステムが割り当てられます。

このパーティション番号はデバイスファイル名として、initrdファイルを作成するときにlinuxrcスクリプトと/etc/fstabファイルだけに書いています。

その部分を起動確認用に書き換える必要があります。

ramdisk.imgを圧縮する前のファイル(/usr/local/src/origlinux/ramdisk)を、/mnt/loop0ディレクトリにマウントします。

# /sbin/losetup /dev/loop0 /usr/local/src/origlinux/ramdisk
# mount /dev/loop0 /mnt/loop0
# cd /mnt/loop0

/mnt/loop0/linuxrcスクリプトと/mnt/loop0/etc/fstabファイルを書き換えます。
「/dev/hda1」または「/dev/sda1」の個所を、「/dev/hda2」(/usr/local/src/origlinuxディレクトリに割り当てたデバイス名)に書き換えます。

▼ファイルシステムの確認

# df -T
ファイルシステム  形式  1k-ブロック   使用中      空き 使用% マウント場所
/dev/hda5     ext3    14341912   3134176  10479192  24% /
/dev/hda1     ext3      124427     11982    106021  11% /boot
none         tmpfs      127708         0    127708   0% /dev/shm
/dev/hda2     ext3     1035692    295232    687848  31% /usr/local/src/origlinux
#

●MyLinux起動確認用に書き換えたlinuxrcスクリプト
コンパクトフラッシュ用のlinuxrcスクリプトを起動確認用に書き換えます。
mount -o defaults --ro -t ext3 /dev/hda1 /FM

mount -o defaults --ro -t ext3 /dev/hda2 /FM
に書き換えます。

#! /bin/nash
echo Mounting /proc filesystem
mount -t proc /proc /proc
echo "Loading jbd.o module"
insmod /lib/jbd.o
echo "Loading ext3.o module"
insmod /lib/ext3.o
echo "Loading scsi_mod.o module"
insmod /lib/scsi_mod.o
echo "Loading ehci-hcd.o module"
insmod /lib/ehci-hcd.o
echo "Loading usb-ohci.o module"
insmod /lib/usb-ohci.o
echo "Loading usb-uhci.o module"
insmod /lib/usb-uhci.o
echo "Loading usb-storage.o module"
insmod /lib/usb-storage.o
sleep 5
echo Creating block devices
mkdevices /dev

echo 0x0100 > /proc/sys/kernel/real-root-dev
echo root filesystem is changed to RAMDISK
echo Mount FM
mount -o defaults --ro -t ext3 /dev/hda2 /FM

echo Rsync Root-Filesystem
rsync -ax /FM/rootsys/ /

echo umount /FM

▼確認
# cat linuxrc
#! /bin/nash

echo Mounting /proc filesystem
mount -t proc /proc /proc
echo "Loading jbd.o module"
insmod /lib/jbd.o
echo "Loading ext3.o module"
insmod /lib/ext3.o
echo "Loading scsi_mod.o module"
insmod /lib/scsi_mod.o
echo "Loading ehci-hcd.o module"
insmod /lib/ehci-hcd.o
echo "Loading usb-ohci.o module"
insmod /lib/usb-ohci.o
echo "Loading usb-uhci.o module"
insmod /lib/usb-uhci.o
echo "Loading usb-storage.o module"
insmod /lib/usb-storage.o
sleep 5
echo Creating block devices
mkdevices /dev

echo 0x0100 > /proc/sys/kernel/real-root-dev
echo root filesystem is changed to RAMDISK
echo Mount FM
mount -o defaults --ro -t ext3 /dev/hda2 /FM

echo Rsync Root-Filesystem
rsync -ax /FM/rootsys/ /

echo umount /FM
#

●MyLinux起動確認用に書き換えたfstabファイル
/dev/hda1 /FM ext3 defaults 0 0

/dev/hda2 /FM ext3 defaults 0 0
に書き換えます。

# vi /mnt/loop0/etc/fstab

/dev/ram0 / ext3 defaults 1 1
/dev/hda2 /FM ext3 defaults 0 0
none /proc proc defaults 0 0

▼確認
# cat /mnt/loop0/etc/fstab
/dev/ram0       /       ext3    defaults 1 1
/dev/hda2       /FM     ext3    defaults 0 0
none            /proc   proc    defaults 0 0
#

/mnt/loop0をアンマウントします。
# cd
# umount /mnt/loop0
# losetup -d /dev/loop0

再び圧縮してイメージ化し、MyLinuxのカーネルと同様にVine Linux 3.1(開発マシン)の/bootディレクトリに格納します。ファイル名は区別しやすいように「initrd-2.4.29-mylinux.img」にします。

# gzip -c9 /usr/local/src/origlinux/ramdisk > /boot/initrd-2.4.29-mylinux.img

▼確認
# ls /boot -l | grep mylinux
-rw-r--r--    1 root     root       390086 Oct 25 23:40 System.map-2.4.29-mylinux
-rw-r--r--    1 root     root      1059898 Mar 21 18:35 initrd-2.4.29-mylinux.img
-rw-r--r--    1 root     root      1068796 Oct 25 23:40 vmlinuz-2.4.29-mylinux
[root@localhost root]#

/etc/lilo.confファイルの設定

LILOの設定ファイルである/etc/lilo.confファイルに、MyLinuxを起動するための設定を書き込みます。

オリジナルlilo.confの内容

# cat lilo.conf
prompt
timeout=50
default=linux
boot=/dev/hda
map=/boot/map
install=menu
message=/boot/message

image=/boot/vmlinuz-2.4.27-0vl7
        label=linux
        initrd=/boot/initrd-2.4.27-0vl7.img
        read-only
        root=/dev/hda5
        append=" resume2=swap:/dev/hda3"

MyLinux起動のためのlilo.conf設定

MyLinuxを起動するための設定を書き込みます。

# vi /etc/lilo.conf

prompt
timeout=50
default=linux
boot=/dev/hda
map=/boot/map
install=menu
message=/boot/message

image=/boot/vmlinuz-2.4.27-0v17
label=linux
initrd=/boot/initrd-2.4.27-0v17.img
read-only
root=/dev/hda5
append=" resume2=swap:/dev/hda3"

image=/boot/vmlinuz-2.4.29-mylinux
label=mylinux
initrd=/boot/initrd-2.4.29-mylinux.img
read-only
root=/dev/hda5
append=" resume2=swap:/dev/hda3"

●追加項目
image=/boot/vmlinuz-2.4.29-mylinux
MyLinuxのカーネルイメージを指定します。

label=mylinux
LILO画面に表示されるラベル名を指定します。

initrd=/boot/initrd-2.4.29-mylinux.img
MyLinuxのinitrdファイルを指定します。

read-only
書き込み禁止でルートファイルシステムを指定します。

root=/dev/hda5
ルートとしてマウントするデバイス名を指定します。

append=" resume2=swap:/dev/hda3"
カーネルに渡すパラメータを指定します。ソフトウェアサスペンドの設定を渡しています。

▼確認

# cat /etc/lilo.conf
prompt
timeout=50
default=linux
boot=/dev/hda
map=/boot/map
install=menu
message=/boot/message
image=/boot/vmlinuz-2.4.27-0vl7
        label=linux
        initrd=/boot/initrd-2.4.27-0vl7.img
        read-only
        root=/dev/hda5
        append=" resume2=swap:/dev/hda3"
image=/boot/vmlinuz-2.4.29-mylinux
        label=mylinux
        initrd=/boot/initrd-2.4.29-mylinux.img
        read-only
        root=/dev/hda5
        append=" resume2=swap:/dev/hda3"
[root@localhost etc]#

liloコマンド実行

設定内容をブートローダに反映させます。

# lilo -v
LILO version 22.5.8, Copyright (C) 1992-1998 Werner Almesberger
Development beyond version 21 Copyright (C) 1999-2003 John Coffman
Released 10-Oct-2003, and compiled at 19:43:30 on Nov 18 2003

Warning: LBA32 addressing assumed
Reading boot sector from /dev/hda
Using GRAPHIC secondary loader
Calling map_insert_data
Mapping message file /boot/message
Calling map_insert_file

Boot image: /boot/vmlinuz-2.4.27-0vl7
Mapping RAM disk /boot/initrd-2.4.27-0vl7.img
Added linux *

Boot image: /boot/vmlinuz-2.4.29-mylinux
Mapping RAM disk /boot/initrd-2.4.29-mylinux.img
Added mylinux

Writing boot sector.
/boot/boot.0300 exists - no boot sector backup copy made.
#

MyLinuxの起動

システムを再起動し、Vine LinuxのLILOの画面で「mylinux」を選択しMyLinuxを起動します。

「Kernel panic: no init found. Try passing init= option to kernel.」を表示して停止します。
MyLinux用initrdファイルはMyLinuxの起動時にだけ用いるルートファイルシステムであり、MyLinuxのルートファイルシステムをまだ組み立てていないためです。

mylinux_550.jpg

「Kernel panic」が表示された場合、ハードウエアリセットや電源ボタンを一定時間押してシステムを停止させる必要があります。

MyLinuxが途中まで起動できることが確認できました。
最後に、マシンを再起動し、不要なファイルやディレクトリを削除しておきます。
# cd /usr/local/src/origlinux
# rm -rf *

変更 2008.10.25
2008.07.06