質問: linuxブートローダgrubをインストールするコマンドgrub-installのオプション『--root-directory』について質問します。 linuxブートローダgrubをインストールするコマンドgrub-installのオプション『--root-directory』について質問します。 私の環境は次のようになっております。 /sda1 /boot /sda2 (swap) /sda3 / この場合に、grubのインストールは、 【1】:成功⇒⇒ root# grub-install /dev/sda 【2】:成功⇒⇒ root# grub-install --root-directory=/ /dev/sda 【3】:失敗⇒⇒ root# grub-install --root-directory=/boot /dev/sda となりました。 この『--root-directory』オプションについて、 マニュアルには、次のように記載されております。 ========▼▼ここから▼▼======== --root-directory=dir install grub images under the directory dir instead of the root directory. this option is useful when you want to install grub into a separate partition or a removable disk. here is an example in which you have a separate boot partition which is mounted on /boot: grub-install --root-directory=/boot hd0 ========▲▲ここまで▲▲======== このマニュアルによれば、 grubをルートディレクトリとは別のパーティションにインストールする場合に、 --root-directoryオプションで、そのディレクトリを指定する と書いているように思われます。 ■■質問1■■ / と /boot が別パーティションになっているのに、 --root-directoryオプションを指定していない【1】でうまくいくのはなぜか? ■■質問2■■ マニュアルでの、 『rootboot directory』 『boot partition』とはそれぞれなんのことか? 私の環境では、それぞれどこのことを意味するのか? ■■質問3■■ マニュアルにしたがうと、 ルートディレクトリ /(/dev/sda3) とは異なるパーティション /dev/sda1 にgrubをインストール しようとしているので、そのディレクトリを指定する必要があるので、 【3】:失敗⇒⇒ root# grub-install --root-directory=/boot /dev/sda が最も適切であると思われるのですが、 なぜ失敗するのでしょうか? 以上、どうぞよろしくお願いいたします。
回答: ■■ 質問1,3 の回答 ■■ grub のインストールは2つのことをします。 stage1 を mbr 領域に書き込むことと、 stage2 やファイルシステムに適した stage1_5, そして menu.lst などの設定ファイルを 通常パーティションの中に書き込むことです。 今回書き込むのは /dev/sda のディスクの先頭領域の mbr と、 現在稼動している linux から見える /boot/grub/ です。 --root-directory=/boot として失敗するのは、 /boot/boot/grub にgrub イメージをインストールしようとするからです。menu.lst の内容とで対応が取れていないと思います。 ■■ 質問2の回答 ■■ root directory は文字通り / ディレクトリです。/boot/grub/ が grub 用のファイルを置く場所になります。 --root-directory=/hoge と指定すると /hoge/boot/grub/ にgrubのファイルが置かれることになります。 boot partition はlinuxをブートするのに使う最低限のファイルを置くためのパーティションです。カーネルや initrd などがおかれているはずです。 古いシステムではハードディスクの先頭付近にしかカーネルを置けない制限があったために、/boot パーティションを別で用意しカーネルを入れる慣習ができた安全サイドのパーティションの切り方です。 sda1 が boot パーティションで、システムの root は sda3 になります。そして、sda1 が /boot にマウントされて /boot/grub/* は起動用のファイルとして sda1 に存在することになります。