デベロッパー:Linux How-To | 2005年10月07日 01:02 更新 |
GRUBを理解する |
GRUBを最も効率的に理解するためには,Red Hat Linux 7.2の標準設定状態における設定ファイルを解読していくのがいちばんだろう。
Red Hat Linux 7.2の場合,GRUB関連のファイルは/boot/grubディレクトリに格納されている。/boot/grubディレクトリ内のファイルの中で,menu.lstファイルがGRUB起動時に表示されるメニュー項目の設定ファイルだ。
|
標準のmenu.lstファイル内容は,インストールした環境にもよるが,おおむねList 1のようになっている。ちなみにList 1は,次のような構成である場合のものだ。
|
ここでは,List 1を見ながら各種解説をしていこう。
なお今回は記事の都合もあり,GRUBの全オプションを紹介することはできなかった。ここでは主立ったものを説明するに留める。全オプションについては,GRUBのオンラインマニュアルなどを参照してほしい。
List 1■menu.lstファイル
# grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/sda2 # initrd /initrd-version.img #boot=/dev/sda default=0 timeout=10 splashimage=(hd0,0)/grub/splash.xpm.gz title Red Hat Linux (2.4.7-10) root (hd0,0) kernel /vmlinuz-2.4.7-10 ro root=/dev/sda2 initrd /initrd-2.4.7-10.img |
項目の構成
menu.lstファイルの構成は,全般設定と個々の項目設定とに分かれる。個々の項目設定はtitleで始まる行だ。List 1の場合,次の部分がメニュー項目に相当する。
title Red Hat Linux (2.4.7-10) root (hd0,0) kernel /vmlinuz-2.4.7-10 ro root=/dev/sda2 initrd /initrd-2.4.7-10.img |
List 1では,メニュー項目が上記の1つしか用意されていないが,必要であれば複数個のtitleで始まる行を用意すればよい。その場合には,ブート時にGRUBによって複数の起動メニューが読み込まれ,表示されたメニューから1つを選んでOS起動させることができる。
title以外の部分である下記の箇所は,GRUBの全般設定である。
default=0 timeout=10 splashimage=(hd0,0)/grub/splash.xpm.gz |
ちなみに,各行の先頭が#で始まる行はコメント行であり動作に影響しない。
全般設定全般設定では,ユーザーが何も選択しなかった場合であっても,時限で自動選択されるメニュー項目の設定や背景画面などを指定することができる。
|
個々の項目
個々の項目では,ユーザーが対象メニューを選択した際,どのディレクトリににあるブートイメージファイルを読み込んで実行するのかを指定する。OSごとに依存したブートイメージの読み込み方法や,それぞれの実行方法なども指定できる。
|
GRUBから見えるドライブ構成
すでにお気づきだと思うが,List 1を見ると分かるようにGRUBではドライブの見え方がLinux上とは異なっている。GRUBでは,次の書式でドライブおよびパーティションを記述する。
(デバイス名,パーティション番号) |
|
|
ハードディスクの場合,デバイス名はIDEやSCSIの区別はない。起動時にBIOSが認識した順序で,hd0,hd1,…と割り当てられる。List 1の例では,次のようにして起動する場所を(hd0, 0)としている。
root (hd0,0) |
後続の行では,次のように起動するカーネルのブートイメージを指定している。
kernel /vmlinuz-2.4.7-10 ro root=/dev/sda2 |
ここでの例では,1台目のハードディスクの1番目のパーティション(Linuxから見える/dev/hda1や/dev/sda1に相当)から起動し,そのパーティション内にある/vmlinuz-2.4.7-10というファイルを読み込んで実行するという意味になる。
なおカーネルファイル名の後ろに続く,「ro root=/dev/sda2」という記述内容はカーネルに渡すオプションだ。必要があれば,この部分にカーネルに渡したい任意のオプションを指定できる。
2/5 |