|
1.
ブートローダの選択
はじめに
さて、カーネルを設定し、コンパイルし、そして必要なシステムの設定ファイルも適切に編集したので、
システムを起動するときに、カーネルを立ち上げるプログラムをインストールするときが来ました。
そのようなプログラムは、ブートローダと呼ばれています。
${arch}向けに、Gentoo LinuxはGRUBとLILOを提供しています。
しかし、ブートローダをインストールする前にフレームバッファの設定方法を提供します(当然それを知りたいでしょうから)。
フレームバッファを利用すれば、(限定的ながら)グラフィカルな機能(Gentooが提供する素敵なブートスプラッシュイメージを使用するなど)とともに、Linuxのコマンドラインを実行することができます。
自由選択: フレームバッファ
もし、カーネルの設定でフレームバッファサポートを有効にしている場合、
(あるいは、genkernelのデフォルトのカーネル設定を使用している場合)
video文をブートローダの設定ファイルに追加することによってフレームバッファを有効にすることができます。
まず、使っているフレームバッファデバイスを必要があります。
uvesafbを使っているでしょう。
video文はフレームバッファの表示オプションをコントロールします。
フレームバッファドライバに続いて、有効にしたいコントロール文を記述しなければなりません。
指定できるすべての値は/usr/src/linux/Documentation/fb/uvesafb.txtに記載されています。
もっともよく使われる3つのオプションを紹介します。
| コントロール名 |
説明 |
| ywrap |
グラフィックカードがメモリ上でwrap可能であると仮定します。
(つまり、メモリの最後に到達したときに最初から続けられる、ということです。)
|
| mtrr:n |
MTRRレジスタを設定します。nには次のものを指定できます。
0-disabled
1-uncachable
2-write-back
3-write-combining
4-write-through
|
| mode |
解像度、色深度、リフレッシュレートを設定します。
例えば、1024x768-32@85は1024x768で32bitカラー、85Hzのリフレッシュレートであるということを示します。
|
この結果、video=uvesafb:mtrr:3,ywrap,1024x768-32@85のようになるでしょう。
この設定は書き留めておいてください。あとですぐ必要になります。
それでは、続いてGRUB または LILOをインストールしましょう。
1.
一般的な選択: GRUBを使用する
GRUB特有の言葉を理解する
GRUBを理解する上で最も重要なことは、GRUBのハードディスクやパーティションの参照方法に慣れることです。
あなたのLinuxパーティション/dev/sda1は、GRUBの下ではほとんどの場合(hd0,0)になります。
hd0,0の両側の括弧に注意してください。
それらは必要なものです。
ハードディスクドライブは、"a"ではなく0から、パーティションは1ではなく0からカウントされます。
ハードディスクだけではなく、CD-ROMやCD-R/RW等のatapi-ideデバイスもhdデバイスになることにも注意してください。また、SCSIドライブに対しても同様の数え方をします。
(BIOSで 、SCSIデバイスから起動する設定になっている場合を除いて、
通常、SCSIに対してはIDEドライブより大きな数字が割り当てられます。)
BIOSに他のハードディスク(例えばプライマリスレーブ)からブートするように設定した場合、そのハードディスクはhd0として参照されます。
ハードディスクが/dev/sda、2台め以降が/dev/sdb、/dev/sdc上にあり、/dev/sdb7が(hd1,6)として参照されると仮定します。
これはなんだかトリッキーな感じがしますし、実際、トリッキーです。
ただし、これから見るように、GRUBにはタブ補完機能が備わっているので、ハードディスクやパーティションがたくさんある場合や、GRUBのナンバリング方法をちょっと忘れてしまったときに便利です。
GRUBの雰囲気がつかめたところで、GRUBをインストールしましょう。
GRUBのインストール
GRUBをインストールするには、まずemergeしましょう。
コード表示 1.1: GRUBのインストール |
# emerge grub
|
これでGRUBはインストールされましたが、あなたが新たに作成したカーネルをGRUBが自動的に起動するためには、
設定ファイルを書き、GRUBをMBRに書き込む必要があります。
nano(あるいは、他のエディタでも可能ですが)で/boot/grub/grub.confを作成してください。
コード表示 1.1: /boot/grub/grub.confの作成 |
# nano -w /boot/grub/grub.conf
|
それではgrub.confファイルを仕上げてしまいましょう。
このガイドで使用しているパーティションの場合のgrub.confの例を2つ示します。
最初のgrub.confに対してのみたくさんコメントを付けています。
カーネルイメージのファイル名、また、もし使っている場合は、initrdイメージのファイル名が、あなたの使用しているものであることを確認してください。
-
最初のgrub.conf、カーネル構築にgenkernelを使用していないユーザ向けの例です。
-
2番目のgrub.confは、カーネル構築にgenkernelを使用したユーザ向けの例です。
注意:
GRUBはBIOSからデバイスの表示記号を割り当てます。
BIOSの設定を変更したら、デバイスの文字や番号も変わる可能性があります。
例えば、もし起動デバイスの順番を変更したら、GRUBの設定を変更する必要があるかもしれません。
|
注意:
rootファイルシステムがJFSの場合には、
JFSでは、read-writeマウントを許可する前にログを再読み込みする必要があるので、" ro"をkernelに加えなければなりません。
|
コード表示 1.1: genkernelを使用していないユーザ向けのgrub.confの例 |
default 0
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title Gentoo Linux ${kernel-version}
root (hd0,0)
kernel /boot/${kernel-name} root=/dev/sda3
title Gentoo Linux ${kernel-version} (rescue)
root (hd0,0)
kernel /boot/${kernel-name} root=/dev/sda3 init=/bin/bb
title Windows XP
rootnoverify (hd0,5)
makeactive
chainloader +1
|
コード表示 1.1: genkernelユーザ向けのgrub.conf |
default 0
timeout 30
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title Gentoo Linux ${kernel-version}
root (hd0,0)
kernel /boot/${genkernel-name} root=/dev/ram0 real_root=/dev/sda3
initrd /boot/${genkernel-initrd}
title Windows XP
rootnoverify (hd0,5)
makeactive
chainloader +1
|
もし、違うパーティション構成や、違うカーネルイメージ名を使用しているなら、適宜それにあわせてください。
(hd0,0)のようなGRUBに指定するデバイスは、ルートではなく、マウントポイントに関係します。
言い換えると、(hd0,0)/grub/splash.xpm.gzは、実際には、/boot/grub/splash.xpm.gzとなります。
これは、(hd0,0)が/bootであることによります。
そのほかに、違うパーティション構成を使用することを選択し、/bootを別のパーティションにおいていなければ、上記のコード例で使用されている/bootは本当に必要です。
もし私たちが提案したパーティション構成に従っているのなら、/bootを前に置く必要はありませんが、bootシンボリックリンクが動作するようにします。
一言で言えば、上記のコード例は、/bootパーティションを分けているいないにかかわらず動作します。
もし、なんらかオプションをカーネルに渡す必要があるならば、
単純にそれをkernelコマンドの最後に追加してください。
すでにひとつオプションを渡していますが(root=/dev/sda3、またはreal_root=/dev/sda3)、他のオプションも同様にカーネルに渡すことができます。
例えば、すでに話題に出たフレームバッファ用のvideoオプションのようにです。
もし、ブートローダーの設定ファイルにreal_rootパラメーターがある場合には、ルートファイルシステムマウントオプションを設定するためreal_rootflagsパラメーターを使ってください。
もし2.6.7かそれ以降のカーネルを使用しており、BIOSが大容量のハードディスクを認識しないためにハードディスクにジャンパ設定しているなら、sda=strokeを指定する必要があります。
sdaはこのオプションが必要なデバイスと置き換えてください。
genkernelを使用している場合、その起動オプションはインストールCDで使われているものと同じになります。
例えば、SCSIデバイスを持っている場合、カーネルオプションとしてdoscsiを追加します。
それでは、grub.confファイルを保存してエディタを終了してください。
システム起動時にGRUBが自動的に実行されるようにするためには、MBR (Master Boot Record、マスターブートレコード)にGRUBをインストールする必要があります。
GRUBの開発者はgrub-installを使用することを奨めています。
しかし、なんらかの理由でgrub-installが正常動作しない場合、
GRUBを手動でインストールする方法もあります。
一般的な選択: grub-installを使用してGRUBをインストールするまたは、もう一つの選択: GRUBを手動でインストールするへ進みしょう。
一般的な選択: grub-installを使用してGRUBをインストールする
GRUBをインストールするためには、grub-installコマンドを実行する必要があります。
しかし、chroot環境にいるためgrub-installは簡単には使えません。
はじめに、すべてのマウント済みのファイルシステムのリストである/etc/mtabを作成する必要があります。
幸運なことにこれを簡単にやる方法があります。
単に、/proc/mountsを/etc/mtabへ次のように上書きコピーしてください。
ブートパーティションを別に作成していなければ、rootfsの行を除外してください。
以下の例はどちらの場合でも動作します。
コード表示 1.1: /etc/mtabの作成 |
# grep -v rootfs /proc/mounts > /etc/mtab
|
これでgrub-installを使用してGRUBをインストールすることができます。
コード表示 1.1: grub-installの実行 |
# grub-install --no-floppy /dev/sda
|
もしGRUBに関してさらに疑問があるなら、GRUB FAQ、GRUB Wikiあるいは端末でinfo grubを参照してください。
それでは、システムの再起動へ進みましょう。
もうひとつの選択肢: GRUBを手動でインストールする
GRUBの設定を始めるために、grubと打ち込んでください。
grub>というGRUBコマンドラインプロンプトが現れたでしょう。
ここで、ハードディスクのブートレコードにGRUBをインストールするためには、正しいコマンドを打ち込む必要があります。
コード表示 1.1: GRUBシェルの開始 |
# grub --no-floppy
|
注意:
もしあなたのシステムにフロッピードライブがないなら、
GRUBが存在しないフロッピードライブを捜査しないように、
--no-floppyオプションを上記コマンドに追加してください。
|
次の例では、GRUBが/bootパーティションの${/boot}から情報を読むように、
そして、コンピュータの電源を入れた後、最初にGRUBプロンプトが出現するように、
ハードディスクのMBR(master boot record、マスターブートレコード)にGRUBをインストールしています。
もちろん、例に従って設定する必要はなく、必要に応じて変更してください。
GRUBのタブ補完機能は、GRUBシェルの中で使用できます。
例えば、"root ("と打ち込んで、続いてTABキーを押した場合、
hd0のようなデバイスの一覧を見ることができるでしょう。
"root (hd0,"に続いてTABキーを押した場合は、hd0,0のような撰択可能なパーティションの一覧を取得できます。
TAB補完を使うことによって、GRUBの設定はそれほど大変ではなくなるでしょう。
それでは、GRUBの設定をしましょう。
コード表示 1.1: GRUBをMBRにインストールする |
grub> root (hd0,0)
grub> setup (hd0)
grub> quit
|
注意:
GRUBをMBRではなく、特定のパーティションにインストールしたいなら、
setupコマンドの部分を編集して、それが正しいパーティションを指すようにします。
例えば、GRUBを/dev/sda3にインストールしたい場合、setup (hd0,2)というコマンドになります。しかしながら、こういうことをしたいユーザはあまりいません。
|
もしGRUBに関してさらに疑問があるなら、GRUB FAQ、GRUB Wikiあるいは端末でinfo grubを参照してください。
それでは、システムの再起動へ進みましょう。
1.
もう一つの選択: LILOを使う
LILOのインストール
LILO(LInuxLOader)は、実績があり、十分に機能するLinuxのブートローダです。
しかし、GRUBが持っている機能のうちLILOにはないものがいくつかあります。
そして、それが現在GRUBの人気が上昇している理由でもあります。
LILOがいまだに使われているのは、LILOは動作してもGRUBはうまく動かないシステムもあるからです。
また、もちろん、LILOに精通していて、LILOを使い続けたいというユーザもいます。
どちらにしても、Gentooはその両方をサポートしていて、この節を読んでいるということは、
あなたはLILOを使うことにしたわけです。
LILOをインストールするのは、とても簡単です。単に次のようにemergeを使うだけです。
コード表示 1.1: LILOのインストール |
# emerge lilo
|
LILOの設定
LILOを設定するには、/etc/lilo.confを作成しなければなりません。
お好みのエディタ(このハンドブックでは、一貫してnanoを例として使用しています)を立ち上げ、これを作成してください。
コード表示 1.1: /etc/lilo.confファイルの作成 |
# nano -w /etc/lilo.conf
|
少し前に、作成したカーネルイメージの名前を覚えておくようにお願いしたと思います。
次のlilo.confの例でも、以前例示した構成と同じパーティション構成を使います。
2つの例を示します。
-
カーネル構築にgenkernelを使用していない場合
-
カーネル構築にgenkernelを使用した場合
カーネルイメージのファイル名、また、もし使っている場合は、initrdイメージのファイル名が、あなたの使用しているものであることを確認してください。
注意:
rootファイルシステムがJFSの場合には、
JFSでは、read-writeマウントを許可する前にログを再読み込みする必要があるので、append="ro"を各行に加えなければなりません。
|
コード表示 1.1: /etc/lilo.confの例 |
boot=/dev/sda
prompt
timeout=50
default=gentoo
image=/boot/${kernel-name}
label=gentoo
read-only
root=/dev/sda3
image=/boot/${kernel-name}
label=gentoo.rescue
read-only
root=/dev/sda3
append="init=/bin/bb"
image=/boot/${genkernel-name}
label=gentoo
read-only
append="real_root=/dev/sda3"
initrd=/boot/${genkernel-initrd}
other=/dev/sda6
label=windows
|
注意:
もし、違うパーティション構成や、違うカーネルイメージ名を使用しているなら、適宜それにあわせてください。
|
もし、追加でカーネルにオプションを渡す必要があるなら、append文をそのセクションに追加してください。
例のように、フレームバッファを有効にするためにvideoを追加しています。
コード表示 1.1: カーネルオプションを追加するためにappend文を使用する |
image=/boot/${kernel-name}
label=gentoo
read-only
root=/dev/sda3
append="video=uvesafb:mtrr,ywrap,1024x768-32@85"
|
もし2.6.7かそれ以降のカーネルを使用しており、BIOSが大容量のハードディスクを認識しないためにハードディスクにジャンパ設定しているなら、sda=strokeを指定する必要があります。
sdaはこのオプションが必要なデバイスと置き換えてください。
genkernelを使用している場合、その起動オプションはインストールCDで使われているものと同じになります。
例えば、SCSIデバイスを持っている場合、カーネルオプションとしてdoscsiを追加します。
それでは、ファイルを保存して、エディタを終了してください。
/etc/lilo.confの設定をシステムに反映するために、/sbin/liloを実行してください(lilo.confの内容をディスクにインストールします)。
新しいカーネルをインストールするたびに、あるいはメニューに変更を加えた場合は/sbin/liloを毎回実行しなければならないということを覚えておいてください。
コード表示 1.1: LILOインストールの仕上げ |
# /sbin/lilo
|
もしLILOに関してさらに疑問があるなら、wikipedia pageを参考にしてください。
それでは、システムの再起動へ進みましょう。
1.
システムの再起動
chroot環境を抜けて、マウントしたすべてのパーティションをアンマウントしてください。
そして、待ちに待った次のコマンドを入力しましょう: reboot
コード表示 1.1: すべてのパーティションをアンマウントし再起動する |
# exit
cdimage ~# cd
cdimage ~# umount -l /mnt/gentoo/dev{/shm,/pts,}
cdimage ~# umount -l /mnt/gentoo{/boot,/proc,}
cdimage ~# reboot
|
もちろん、起動CDを抜くことを忘れずに。そうしないと新しいGentooシステムではなく、CDからまた起動してしまいます。
再起動したら、(Gentooインストールの締めくくり)へ進んでインストールを完了させましょう。
|