GRUB 起動ディスクの使い方

忘れないうちに!の自分用メモ。Linux初心者なので間違いがあるかもしれません。あしからず(え。

menu.lstを作成せず、フロッピー起動から手動で指定してOSをロードさせる方法についてです。GRUBフロッピーの作成及びmenu.lstを作成して選択起動する方法については下記をどうぞ

NOBUSAN'S SQUARE さんの下記ページの解説がすばらしく深くてわかりやすいと思います(ってか私のページは無駄かも...orz)。参考にさせて頂きました。

キーボードの配置が通常時と違うので注意。( ) は1つずつ右にずれてます。

  • = は へ
  • + は Shift + へ

パーティションの先頭(PBR)にブートローダを置いてる場合はMBM(Multiple Boot Manager)の方が簡単だと思います。でもLILOなどをマスターブートレコード(MBR)にのみ置いてる場合はMBMでは起動できないようです。つまり、GRUBは自身がブートローダ(カーネルロード?)であるが、MBMはブート“マネージャ”(チェーンロード?)だからということになるんでしょうか。

最初は難しいと感じましたが、Tabキーでの補完機能を使えばなんてことないかなと。間違ってもやり直せるし、検索やファイルの内容表示も可能なので。

基本的な使い方

GRUB(起動フロッピー)自身をブートローダとして使う場合です。

  1. rootコマンドでカーネルのあるパーティションに移動(大抵は/bootパーティション)
  2. kernelコマンドでカーネルのファイル名及びLinuxを起動させるルート(“/”)パーティションを指定

※あと、RAMディスクの指定が必要な場合はinitrdコマンドで指定。

  • 最後に、bootコマンドで起動
カーネルのあるパーティションを指定(移動)
grub> root (

ここでTabキーを押すと

grub> root (
 Possible disk are:  fd0 hd0 hd1

と指定(起動)可能な候補が表示されます。但し、通常Linuxで使われるデバイスの表示方法と少し違うので注意

  • hd0 = /dev/hda
  • hd1 = /dev/hdb

※0から数えます。

hd0 = /dev/hda でいいなら

grub> root (hd0

ここでTabキーを2回押すと指定ドライブのパーティションの一覧が出ます。

grub> root (hd0,
 Possible partitions are:
   Partison num: 0,  Filesystem type is fat, partiton type 0xb
                    --- <省略> ---
   Partison num: 7,  Filesystem type is ext2fs, partiton type 0x83
   Partison num: 8,  Filesystem type is ext2fs, partiton type 0x83

/bootパーティションをルート(“/”)パーティションとは別に作っている場合はルートパーティションの前に置かれていると思うので「7」を指定してみます。間違っててもやりなおせばいいのでまぁ適当ですが...(汗。

grub> root (hd0,7)

ここでEnterを押す。

  Filesystem type is ext2fs, partiton type 0x83

と表示されます。

あるいは、find /mapfind /boot/map*1)で表示されるので、それを指定した方が早いかも。

grub> find /map
 (hd0,7)
 (hd1.0)
grub> root (hd0,7)
カーネルのファイル名、ルート(“/”)パーティションの指定

kernelコマンドでカーネルのファイル名及びLinuxを起動させるルート(“/”)パーティションを指定します。

grub> kernel /vmlinuz-

ここでTabキーを押すとファイル名が表示されます。

grub> kernel /vmlinuz-
 Possible files are: vmlinuz-2.4.31-0vl1.8 vmlinuz-2.4.31-0vl1.12

カーネルをアップグレードしている場合などは複数表示されるので新しい方を指定する。(※適当な所でTabキーを押せば補完してくれます。)

grub> kernel /vmlinuz-2.4.31-0vl1.12

このまま続いてルートパーティションを指定します。

※ここでのパーティションの指定はLinux上の表示と同じです。

適当な推測ですが(汗)、/bootパーティションが hd0,7 = hda8 ですから /パーティションは hda9 かなぁと。

grub> kernel /vmlinuz-2.4.31-0vl1.12 root=/dev/hda9
   [Linux-bzimage, setup=0x1400, size=0x1608b1]

最低限必要な指定は以上です。このあとbootコマンドで起動させます。

grub> boot
オプション
grub> kernel /vmlinuz-2.4.31-0vl1.12 ro root=/dev/hda9 vga=0x318

とかできます。

初期RAMディスクの指定

必要な場合は(どんな時に必須となるのかよくわかってませんが...すみません)initrdコマンドで指定します。

grub> initrd /initrd

とか入力してTabキー、で表示された候補の中からkernelコマンドで指定したカーネルとバージョン - リリース番号が同じものを指定します。

grub> initrd /initrd-2.4.31-0vl1.12.img
   [Linux-initrd @ 0x13fc4000, 0x1b5c6 bytes]

chainloaderコマンドでの指定

パーティションの先頭(PBR)にブートローダを置いてる場合(もちろんそれが生きてる場合ですけど)はchainloaderコマンドで指定する方が簡単です。

Windows も起動できますよん

chainloaderコマンド
grub> chainloader (

と入力してTabキーを押すと起動可能なデバイスが表示されます。

grub> chainloader (
 Possible disks are:  fd0 hd0 hd1
grub> chainloader (

今度はパーティションを表示させます。

grub> chainloader (hd1,
 Possible partitions are:
   Partison num: 0,  Filesystem type is ext2fs, partiton type 0x83
   Partison num: 1,  Filesystem type is ext2fs, partiton type 0x83
grub> chainloader (hd1,
grub> chainloader (hd1,1)+1

この後bootコマンドを入力するとブートローダ画面が出るはずです。

※「+1」の指定はパーティションの先頭、つまりブートセクタのことらしいです(自信ないけど..)。

便利な使い方

何も入力せずにTabキーを押すと使用可能なコマンドの一覧が表示されます。

rootコマンドを使用せず、kernelコマンドで直接パーティションを指定することも可能です。

grub> kernel (hd0,7)/vmlinuz-2.4.31-0vl1.12 ro root=/dev/hda9 vga=0x318

catコマンドでファイルの内容表示ができます。

grub> cat (hd1,1)/etc/fstab

findコマンドで(絶対パスを指定して)ファイルの検索が可能。こんな風に使えば/bootパーティションとルートパーティションの確認ができますね。

grub> find /vmlinuz
(hd0,7)
(hd1,0)
grub> find /etc/fstab
(hd0,8)
(hd1,1)

※注:(hd0,8) = /dev/hda9
(hd1,1) = /dev/hdb2

*1:/boot パーティションを分けていない場合