アプリ版:「スタンプのみでお礼する」機能のリリースについて

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
が最も適切であると思われるのですが、
なぜ失敗するのでしょうか?


以上、どうぞよろしくお願いいたします。

A 回答 (1件)

■■ 質問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 に存在することになります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!