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のルートファイルシステムをまだ組み立てていないためです。
「Kernel panic」が表示された場合、ハードウエアリセットや電源ボタンを一定時間押してシステムを停止させる必要があります。
MyLinuxが途中まで起動できることが確認できました。
最後に、マシンを再起動し、不要なファイルやディレクトリを削除しておきます。
# cd /usr/local/src/origlinux
# rm -rf *
変更 2008.10.25
2008.07.06