ブートローダーの設定

カーネルを再コンパイルしたので、次にブートローダーを設定して新しいカーネルを起動する必要があります。これは重要な手順です。この手順を実行しなかったり、誤って実行したりすると、システムを起動できません。システムが起動できない場合は、以前作成しておいたブートディスクを使用してシステムを起動し、ブートローダーを再度設定してください。ブートディスクが動作しない場合は、レスキューモードについて、第3章を参照してください。

今作ったばかりのカーネルは動かない可能性もありますから、元のカーネルを利用可能な状態のままにし、冗長ブートソースとする必要があります。Red Hat Linux7.2のインストール中、LILOか、GRUBをブートローダーとして選択するオプションがあります。これについては、以下の適切なセクションを参照してください。

GRUB

GRUBをブートローダーとして選択した場合、/boot/grub/grub.confファイルを変更する必要があります。デフォルトのGRUB設定ファイルは次のようになります。

# NOTICE:  You have a /boot partition.  This means that
#          all kernel paths are relative to /boot/
default=0
timeout=30
splashimage=(hd0,0)/grub/splash.xpm.gz

title Red Hat Linux (2.4.7-3)
        root (hd0,0)
        kernel /vmlinuz-2.4.7-3 ro root=/dev/hda3
        initrd /initrd-2.4.7-3.img

個別の/bootパーティションを作成している場合、カーネルとinitrdイメージへのパスは、/bootパーティションに置かれています。

新しいカーネルをGRUBに追加するには、既存のタイトルセクションをコピーし、それを編集して新しいカーネルイメージ(SCSIデバイスがありinitrdイメージを作ったのであれば、そのinitrdイメージも)を起動するように変更します。新しいセクションのタイトルは、古いカーネルを起動するセクションのタイトルと異なるようにしてください。Red Hat LinuxではRed Hat Linuxを使用して、かっこ内のカーネルバージョンが、GRUBを起動するカーネルが異なれば、異なるようデフォルト設定されてます。この例では、/boot/grub/grub.confファイルは次のようになります。

# NOTICE:  You have a /boot partition.  This means that
#          all kernel paths are relative to /boot/
default=0
timeout=30
splashimage=(hd0,0)/grub/splash.xpm.gz

title Red Hat Linux (2.4.7-3-jul2001)
        root (hd0,0)
        kernel /vmlinuz-2.4.7-3-jul2001 ro root=/dev/hda3
        initrd /initrd-2.4.7-3-jul2001.img

title Red Hat Linux (2.4.7-3)
        root (hd0,0)
        kernel /vmlinuz-2.4.7-3 ro root=/dev/hda3
        initrd /initrd-2.4.7-3.img

デフォルトのブートエントリは番号0に設定されています。新しいカーネルをデフォルトにするには、まずそのセクションを配置するか、デフォルトのエントリ番号を適切な番号(0からカウント)に変更します。GRUBの場合、設定ファイルを変更した後、コマンドを実行する必要はありません。

これ以降、システム起動時にRed Hat Linux (2.4.7-3-jul2001)Red Hat Linux (2.4.7-3)という2つのGRUBブートオプションが表示されるようになります。デフォルトのカーネルを起動するには、Enterキーを押すか、時間切れを待ちます。従来のカーネルを起動する場合は、それを選択して、Enterキーを押します。

コンピュータを再起動して、新しいカーネルの動作確認を始めます。ハードウェアが正しく検出できたかどうか、メッセージをよく見ます。

LILO

新しいカーネルを起動するようにLILOを設定するには、/etc/lilo.confファイルを更新して、/sbin/lilo -vコマンドを実行する必要があります。

デフォルトの/etc/lilo.confファイルは、およそ次のようになっています。

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
message=/boot/message
linear
default=linux

image=/boot/vmlinuz-2.4.7-3
	label=linux
        initrd=initrd-2.4.7-3.img
	read-only
	root=/dev/hda5

新しいカーネルをLILOに追加するには、既存のイメージセクションをコピーし、それを編集して新しいカーネルイメージ(SCSIデバイスがありinitrdイメージを作ったのであれば、そのinitrdイメージも)を起動するように変更します。さらに、従来のカーネルのラベルをlinux-oldなどと付け替えます。編集後の/etc/lilo.confは、次のようになっているはずです。

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
message=/boot/message
linear
default=linux
	
image=/boot/vmlinuz-2.4.7-3-jul2001
label=linux
initrd=initrd-2.4.7-3-jul2001.img
read-only
root=/dev/hda5
		
image=/boot/vmlinuz-2.4.7-3
label=linux-old
initrd=initrd-2.4.7-3.img
read-only
root=/dev/hda5

そして、/sbin/lilo -vを実行して、この変更を有効にします。作業が順調であれば、次のようなメッセージが表示されます。

LILO version 21.4-4, Copyright (C) 1992-1998 Werner Almesberger
'lba32' extensions Copyright (C) 1999,2000 John Coffman

Reading boot sector from /dev/hda
Merging with /boot/boot.b
Mapping message file /boot/message
Boot image: /boot/vmlinuz-2.4.7-3
Added linux *
Boot image: /boot/vmlinuz-2.4.7-3-jul2001
Added linux-old
Writing boot sector.

メッセージにWriting boot sector.と表示されていることを確認します。ここで、「linux」のあとにある「*」は、linuxというラベルのセクションがLILOのブートするデフォルトカーネルだということを表します。

これ以降、システム起動時にlinuxlinux-oldという2つのLILOブートオプションが表示されるようになります。

新しいカーネル(linux)を起動するには、単にEnterキーを押すか、LILOの時間切れを待ちます。従来のカーネル(linux-old)を起動するときは、linux-oldを選び、Enterキーを押します。

コンピュータを再起動して、新しいカーネルの動作確認を始めます。ハードウェアが正しく検出できたかどうか、メッセージをよく見ます。