[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[plamo:12344] Re: ろくに使い方も分からずGRUBをいじったらplamo98
-
From:KOJIMA Mitsuhiro
-
Date:Fri, 16 Nov 2001 12:22:32 +0900
- Subject: [plamo:12344] Re: ろくに使い方も分からずGRUBをいじったらplamo98
- From: KOJIMA Mitsuhiro <kojima@xxxxxxxxxxx>
- Date: Fri, 16 Nov 2001 12:22:32 +0900
- Posted: Fri, 16 Nov 2001 12:13:03 +0900
こじま@「絶望と悲しみの海から、それは生まれ出る 地に希望を、天に夢を
取り戻すため生まれ出る〜♪」
# 意味不明、、
From: KATOH Yasufumi <karma@murata.co.jp>
Subject: [plamo:12343] Re: ろくに使い方も分からずGRUBをいじったら plamo98
Date: Fri, 16 Nov 2001 09:17:22 +0900
Message-ID: <200111160017.JAA09614@murata.co.jp>
> > すごいです。覚えます。liloよりこっちの方が安心っぽいですね。
> > ただわかりやすい説明書が・・・
>
> google で検索 (日本語のページをね) したらかなり出てきますよ.:-)
>
> 例えば
> http://www.fastnet.ne.jp/~hashi/grub/
> http://www.geocities.co.jp/SiliconValley-Bay/3897/grub/grub.html
> とか.
>
昔、「Linux インストールキット(第二版)」向けに、grub の使い方を簡単に
書いたものがあるので流してみます。
# 対象としている grub のバージョンが古くて、最近では事情も変っていると
# 思いますので、まぁ参考程度に御覧くださいませ。
手動で detex したので \section{...} あたりが残ってるのはご愛敬。
--------------------------------------------------------------------
\section{GRUB}
GRUBはLILOと同様、HDやFDからLinuxをブートするためのブートローダです。
LILOは、Linuxを起動することが主目的で、Linux以外ではDOS/WindowsとOS/2
しか起動できないのに対して、GRUBではDOS/WindowsやOS/2に加えて、GNU
HURD(本来のターゲット)やFreeBSD、NetBSDなども起動することが可能です。
また、GRUBは各種OSのファイルシステム(Linuxのext2、BSDのFFSなど)を理解
するので、それらのファイルシステム上にあるカーネルや設定ファイルなどを
柔軟に扱うことができます。
本節ではGRUBの機能のうち、Linuxの起動に必要な部分のみを説明しています。
GRUBは本節で説明する以外にもさまざまな機能を有しているので、それらの詳細
については /usr/doc/grub にあるGRUBの解説文書を参照してください。
LILOではMBRに起動するカーネルの位置情報を記録しているため、カーネルを
更新するたびに lilo を再実行して、その情報をMBRに反映させなければいけ
ないのに対し、GRUBでは stage1 と stage2 という2段階の構成になっており、
MBRに置く stage1 では、実際の処理を司どる stage2 の位置を記録している
だけなので、カーネルを更新してもMBRを書き直す処理は不要になっています。
stage2 の位置を動かせば、MBRに再インストールする必要があります。
GRUBはこのように高機能なブートローダですが、LILOに比べて多少サイズが大
きかったり、HDDの指定方法が煩雑であるという欠点もあります。
Linux/98では最初からブートローダとしてGRUBを採用しています。Plamo
Linuxでも、1.4以降はインストール用のミニLinux用にはGRUBを使うようになっ
ています。ただし、HDDへインストールするブートローダはPC互換機ではLILO
のままです(PC98シリーズではGRUBです)。
本節では、GRUBの使用法とHDDへのインストール法について、必要となる機能
を中心に解説します。
\subsection{GRUBのモード}
GRUBには、大きく分けて、メニュー画面を表示して起動するカーネルや設定を選
択するメニューモード、メニュー画面の設定を編集するためのエントリ編集モー
ド、手動でコマンドを入力するコマンドモードの 3 つのモードがあり
ます。それぞれのモード間の移行は以下の通りです。以下では、これらの各モー
ドについて簡単に紹介します。
grub のモード遷移図
c
Enter +--------------------+ --> +--------------------+
エントリの設定で <--- | メニューモード | <-- | コマンド入力モード |
起動 +-------------------+ ESC +--------------------+
| ^ |
e | | ESC | boot
V | V
b +-----------------------+ ``kernel=.. ''の設定で
編集した設定で <--- | エントリ編集モード |<+ 起動
起動 +-----------------------+ |
| ^ |
Enter | | Enter | ESC(行編集結果は破棄)
V | |
+----------------------+ |
| ライン編集モード | --+
+----------------------+
\subsubsection{メニューモード}
あらかじめ menu.lst に登録した設定を表示して、必要な設定を選択するた
めのモードです。
menu.lst は、インストール用のFDならば /grub/menu.lst に用意されており、
AT用の標準的な menu.lst には以下のような設定が登録されています。
fallback = 1
title = boot mini-Linux from this FD
kernel = (fd0)/vmlinuz root=/dev/ram0 rw
initrd = (fd0)/initrd.gz
title = ------------------------------------------------
pause = Press [ESC] to return menu
title = boot Windows98 from /dev/hda1
root = (0x80,0)
makeactive
chainloader = +1
設定項目は title から次の title までが一つのエントリとして扱われ、メ
ニューモードで title 行で指定した文字列を選択すれば、そのエントリに指
定したコマンドが順に実行されます。
以下に、上記の menu.lst の設定について簡単に説明します。
・ fallback=1
何らかのエラーが生じた場合に起動するエントリの指定です。エントリ番号は
0から始まるので、この指定では2つ目のエントリ(この例ではWindows98に関す
る設定)が利用されることになります。
・title=...
メニュー画面でそのエントリを指定するためのラベルです。
・kernel=...
読み込むカーネルの指定です。カーネルに与える各種パラメータ
もここで指定します。FDやHDの指定方法は後述します。
.initrd=..
このエントリで使用する起動用ramdisk(initrd)の指定です。
・root=..
ルートパーティションとして使うパーテイションの指定です。Linuxではルー
トパーティションの位置はカーネルパラメータで指定するので、root=.. で
は指定できません。
・makeactive
指定したルートパーティションを起動可能なパーティションとして認識させる
ための指定です。Windows/DOSのパーティションをGRUBから起動する場合に必
要な設定です。
・chainloader = ..
指定したファイルやセクタをブートローダとして利用するための指定です。
Windows/DOSでは chainloader = +1 と指定して、パーティションの先頭セ
クタを読みこませる必要があります。Linux/98の場合、HDの仕様の違いにより
chainloader = +2 となります。
この menu.lst を読みこんだGRUBは、以下のようなメニュー画面を表示します。
GRUB version 0.5(639K lower / 97216K upper memory)
+--------------------------------------------------------------------+
| boot mini-Linux from this FD |
| ------------------------------------------ |
| boot Windows from /dev/hda1 |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
+--------------------------------------------------------------------+
Use the ↑ and ↓ keys for selecting which entry is highlighted.
Press enter to boot the selected OS, 'e' to edit the
commands before booting, or 'c' for command-line.
\subsubsection{エントリ編集モード}
メニュー画面で指定したエントリに対して、menu.lst の記述を編集するため
のモードです。カーネルパラメータを追加したい場合などに利用します。
編集したいエントリ行で`e'を押すとこのモードに移り、 menu.lst の記述
を表示します。
GRUB version 0.5(639K lower / 97216K upper memory)
+---------------------------------------------------------------------+
|kernel = (fd0)/vmlinuz root=/dev/ram0 rw |
|initrd = /initrd.gz |
| |
| |
| |
| |
| |
| |
| |
+---------------------------------------------------------------------+
Use the ↑ and ↓ keys for selecting which entry is highlighted.
Press 'b' to boot, enter to edit the selected command in the
boot sequence, 'c' for a command-line, 'o' to open a new line
after ('O' for before) the selected line, 'd' to remove the
selected line, or escape to go back to the main menu.
ここでカーソルキーの上下で反転行を動かし、Enter を押せばその行の設定が
修正できる状態になります。
[Minimum BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename. ESC at any time exits.]
editing> kernel=(fd0)/vmlinuz root=/dev/ram0 rw _
編集が終れば、Enter でエントリ編集モードの画面に戻り、`b'を押すとその
エントリの設定でカーネルを起動します。コマンド行の入力画面では TAB を
押すと指定可能なコマンドやファイルシステム、ファイル名などの候補が表示
されます。
\subsubsection{コマンドラインモード}
menu.lst が存在しなかったり、メニュー画面から`c'を押すと、GRUBのコ
マンドを手動で実行できるコマンドラインモードに移行します。
TAB キーを押すと利用可能なコマンドのリストが表示されます。
[Minimum BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename. ESC at any time exits.]
command> [TAB]
Possible commands are: "pause= ...", "uppermem= <kbytes>", "root= <device>",
"rootnoverify= <device>", "chainloader= <file>", "kernel= <file> ...",
"module= <file> ...", "modulenounzip= <file> ...", "makeactive", "boot", and
"install= <stage1_file> [d] <dest_dev> <file> <addr> [p] [<config_file]"
command>
これらのコマンドのうち、Linuxのカーネルの起動に必要なコマンドは
``kernel=...''の指定程度です。``kernel=...''コマンドでは、menu.lstにお
ける指定と同様に、起動したいカーネルとカーネルパラメータを指定します。
カーネルとカーネルパラメータを指定して Enter を押すと、GRUBはカーネル
を読みこみます。
[Minimum BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename. ESC at any time exits.]
command> kernel=(fd0)/vmlinuz root=/dev/ram0 rw
[Linux-zImage, setup=0x1200, size=0x7aee0]
command> _
必要な指定が終われば boot コマンドを実行して、読み込ませたカーネルを
起動します。
command> boot<return>
Uncompressing Linux...done.
Now booting the kernel
...
\subsection{GRUBのデバイス指定}
GRUBでは、HDDはIDEもSCSIも共に(hdN)という形で扱います。複数のパーティ
ションがある場合、(hdN,M)という形になります。HDDはIDE が先、SCSIが後に
認識され、IDEではデバイス番号の順、SCSIではSCSI IDの順に番号が割りあて
られます。以下に2台のIDE HDDと1台のSCS IHDDが接続されている場合の例を
示します。GRUBではIDEとSCSIの違いは関係なく、0からの連番で番号を振るこ
とに注意してください。
HDDの種類 Linuxでのデバイス名 GRUBのデバイス名
---------------------------------------------------------------------------
最初のIDEディスク全体 /dev/hda (hd0)
最初のIDEディスクの最初
のパーティション /dev/hda1 (hd0,0)
2台目のIDEディスクの3番目
のパーティション /dev/hdb3 (hd1,2)
最初のSCSIディスク
(全体では3台目のHDD)の
2番目のパーティション /dev/sda2 (hd2,1)
--------------------------------------------------------------------------
通常、FDはパーティションを切ることはないため、全体を対象に(fd0)あるい
は(fd1)として扱われます。
\subsection{GRUBのHDドライブへのインストール}
Plamo/98ではデフォルトでGRUBがHDからのブートローダとしてインストールさ
れますが、Plamo/ATではGRUBは手動でインストールする必要があります。
GRUBはLinuxのコマンドとしてはインストールされず、GRUB自身のコマンドラ
インモードからインストールしなければならないため、GRUBをHDドライブにイ
ンストールするには、GRUBを書きこんだFDが必要になります。Plamo Linuxで
は、インストール用のミニLinuxシステムがGRUBを書きこんだFDとして利用で
きます。
CD-ROMからインストールした場合など、インストール用のFDを作成していな
い場合は、別途FDに書き出しておいてください。
必須ではありませんが、GRUBをインストールする際には、まず menu.lst を作っ
ておくのが便利でしょう。Plamo Linuxでは、/boot/grub ディレクトリにGRUB
関連のファイルをインストールするので、menu.lst もこのディレクトリに作っ
ておくのが便利でしょう。
menu.lst では、カーネルの位置とルートパーテイションの位置を指定する必
要があります。その他、カーネルパラメータが必要な場合も指定しておきます。
以下に、/dev/hda2 にLinuxをインストールした場合の menu.lst の例を示し
ます。
title = boot Linux from /dev/hda2
kernel = (hd0,1)/vmlinuz root=/dev/hda2 ro
IDEのHDドライブとSCSIのHDドライブが一台ずつ接続されていて、SCSI HDの最
初のパーティション(/dev/sda1)にLinuxをインストールした場合は以下のよう
になります。
title = boot Linux from /dev/sda1
kernel = (hd1,0)/vmlinuz root=/dev/sda1 ro
カーネルの位置をGRUBに知らせるための (hd1,0)/vmlinuz はGRUB流の書式に
なっていますが、ルートパーティションの位置をカーネルに知らせるための
root=/dev/sda1 はLinuxの書式になっていることに注意してください
このような /grub/menu.lst を用意した上で、GRUBの書きこまれたFD から起
動し、`c'を押してGRUBのコマンドラインモードに移行し、install=..コマン
ドを実行します。
GRUBの install コマンドの書式は以下のようになります。
install= stage1 [d] dest_dev stage2 0x8000 [p] menu_file
ここで、stage1 と stage2 はGRUBの stage1 ファイルと stage2 ファイルの
位置を指定します。Plamo Linuxのデフォルトの状態では、これらのファイル
は /grub/ ディレクトリにインストールされるので、ルートパーティションの
位置をGRUBの書式で指定する必要があります。例えば、ルートパーティション
が /dev/hda2 の場合は(hd0,1)/grub/ になります。
dest_dev はGRUBの stage1 をインストールする先の指定です。HDドライブの
MBRにインストールする場合は (hd0) ですし、Linuxをインストールしたパー
ティションのスーパーブロックの場合は (hd0,1) のようになります。
dest_dev の指定には d オプションがあり、このオプションを指定した場合、
起動デバイスに関わらず、指定デバイスにGRUBをインストールします。通常
は stage2 ファイルがあるディスクを対象にGRUBをインストールするので、
それではうまくインストールできない場合にこのオプションを指定してみて
ください。
0x8000 はGRUBの stage2 がメモリに読みこまれるアドレスで、Linuxではこの
値に固定されています。
[p] menu_file は、GRUBのメニュー用ファイルの位置の指定です。メニュー用
ファイルは必須ではありませんが、メニュー用ファイルが無いとGRUB は直接
コマンドモードになります。
/dev/hda2 にLinuxをインストールし、このHDドライブのMBRにGRUBを書きこむ
場合の指定は以下のようになります。
command> install (hd0,1)/boot/grub/stage1 (hd0) (hd0,1)/boot/grub/stage2 0x8000 p (hd0,1)/boot/grub/menu.list <return>
command> _
IDEとSCSIのHDドライブが一台ずつあり、SCSI HDドライブの最初のパーティショ
ン(/dev/sda1)にLinuxをインストールした場合の指定は以下の通りです。
command> install (hd1,0)/grub/stage1 d (hd0) (hd1,0)/grub/stage2 0x8000 p (hd1,0)/grub/menu.list<return>
command> _
GRUBはHDのMBRだけでなく、Linuxをインストールしたパーティションの先頭に
インストールすることも可能で、その場合は dest_dev の部分が (hd0,1) や
(hd1,0) のようにドライブとパーティションを組み合わせた指定になります。
ブートローダにGRUBを使えば、カーネルをコンパイルし直した場合も、新しく
作成したカーネルを古いカーネルに上書きするだけで使えるようになります。
また、/boot/grub/menu.lst にエントリを追加することで、複数のカーネルを
切り替えて使うことも簡単にできます。例えば、新しく作成したカーネルを
/vmlinuz.new にコピーして、以下のような menu.lst を使えば、古いカーネ
ルと新しいカーネルを起動時に選択することができます。
title = boot original Linux from /dev/sda1
kernel = (hd1,0)/vmlinuz root=/dev/sda1 ro
title = boot test Linux from /dev/sda1
kernel = (hd1,0)/vmlinuz.new root=/dev/sda1 ro
title = boot test Linux with /dev/hda2
kernel = (hd1,0)/vmlinuz.new root=/dev/hda2 ro
- References
-
- [plamo:12339] Re: ろくに使い方も分からずGRUBをいじったらplamo98, Shun-ichi TAHARA (田原 俊一)
- [plamo:12340] Re: ろくに使い方も分からずGRUBをいじったらplamo98, Makoto Abe
- [plamo:12343] Re: ろくに使い方も分からずGRUBをいじったらplamo98, KATOH Yasufumi
[検索ページ]
[メール一覧]
Plamo ML 公開システム