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

全く同じようにインストールした2台のLinux入りHDDをプライマリマスターとセカンダリマスターに接続し、
GRUBでデュアルブートさせたいです。

どちらのLinuxマシンも同じようにインストールしているので、
/boot/grub/grub.confには、
 title Linux
 kernel (hd0,0)/vmlinuz root=0303
 initrd (hd0,0)/initrd
と全く同じように書かれており、これで起動しています。

2台のHDDを接続し、プライマリに接続したHDDで起動し(こちらでしか起動できなかった)、
/sbin/fdisk -l で確認したところ、
プライマリに接続したHDDのデバイス名は/dev/hda1~3,
セカンダリに接続したHDDのデバイス名は/dev/hdc1~3でした。

http://oshiete1.goo.ne.jp/qa1787988.html
↑には、hdaが(hd0)、hdbが(hd1)のように書かれていたので、
hdcは(hd2)かと思い、
grub.confに、

 title Linux1
 kernel (hd0,0)/vmlinuz root=0303
 initrd (hd0,0)/initrd

 title Linux2
 kernel (hd2,0)/vmlinuz root=0303
 initrd (hd2,0)/initrd

と書いてみたのですが、GRUBで「Linux2」を選択しても、セカンダリに繋いだ方は起動しませんでした。
(ちなみに(hd1,0)と書いた場合は、(hd0,0)と同じくプライマリに繋いだ方が起動しました)
この環境でデュアルブートするには、grub.confにはどのように書いたらよいでしょうか。

A 回答 (4件)

MBRは、プライマリにあって、それを最後に書いたのが、最後に


インストールしたほうだと思われます。
よって最後にインストールしたのが、セカンダリのLinuxであれば、
プライマリのMBRから、セカンダリの/boot/grub/grub.confにリンク
されます。
言い換えると、最後にインストールした/boot/grub/grub.conf
にリンクして、これしか使用しないと思います。
そこで、最後にインストールした/boot/grub/grub.conf
の内容ですが、
ロジカルなものと、フィジカルなものの違いがあり、
HDDが2台あった場合は、ロジカル的な、hda,hdb,hd0,hd1は、
OSの都合により、抜ける時もあるかもしれません。

厳密に言えば、パーティションを切っていく段階で、ロジカル的な
hda1,hda2,hda3は変わります。
新たに作ったパーティションは、高い数値になります。
分かりやすく例を書けば、HDDの先頭の低番地
hda1,hda2,hda3,hda4とあった場合、
hda2を削除して同じところに作成すると、
hda1,hda4,hda2,hda3となります。
よって今現在、
fdisk -l
の状態、最後にインストールした、grub.confの内容を見て、
決定せざるを得ないと思われます。
title Linux1
 kernel (hd0,0)/vmlinuz root=0303
 initrd (hd0,0)/initrd
title Linux2
 kernel (hd2,0)/vmlinuz root=0303
 initrd (hd2,0)/initrd
の(hda,b)の、aとbは可変だと思われます。

それは、最後インストールしたときの、grub.confをみて、
推測する以外ないと思います。
    • good
    • 0

一番シンプルなケースだと、hdcにあるルートファイルシステムあたりから


grub.confを探してきて、hdaのほうのと見比べる。

というか、手動でマウントして両方開いて
テキストエディタでカット&ペーストでgrub.confを編集すれば済む。

ちなみにgrubでのデバイス指定は、hdaとかと直接リンクされない。
起動デバイスとして出てくるHDD等の中で、認識されているものを
0から順番に振り分ける仕組み。

USB-HDDとかがからんだ場合とか、PATA/SATA混在の場合の状況は
試してみないとよくわかんないけど、普通hdaとhdcがHDDで
hdbが光学ドライブだったりすると、hdcがhd1になるはず。

grubコンソールからの起動操作で確認してもいい。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

プライマリマスターとセカンダリマスターに挿して、
 kernel (hd0,0)/vmlinuz root=0303
 initrd (hd0,0)/initrd
を起動するとプライマリマスター(hda1)で起動します。
この状態で、/dev/hdc1に対してマウントをかけ、
セカンダリマスターのHDDのgrub.confを見てみましたけど、もちろん
 kernel (hd0,0)/vmlinuz root=0303
 initrd (hd0,0)/initrd
と同じように書いてあります。

>認識されているものを0から順番に振り分ける仕組み。
確かにhdcだからhd2かなと思いましたが、hd2では起動しませんでした。
光学ドライブは/dev/cdromとかになるんじゃないのでしょうか?
USB-HDDは挿してません。
確かプライマリスレーブに挿した時に/dev/hdbとなったと思います。

お礼日時:2008/02/04 21:07

インストールしたときの、grub.confをファイルに保存しておき、


合成させて、(hda,b)のaとbを変更するだけだと思います。
Linuxは何を使っているかで、swapファイルが厳格な、Vine Linux
などは、swapファイルのパーティションまでチェックしますね。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
TurboLinux10Dを使っています。

grubはインストールした時のままなので、
 kernel (hd0,0)/vmlinuz root=0303
 initrd (hd0,0)/initrd
です。
同じディストリで同じようにインストールしたので、
もう片方も
 kernel (hd0,0)/vmlinuz root=0303
 initrd (hd0,0)/initrd
と書かれています。
(hd0,0)に何が入るのかを探すしか無いみたいですね。
セカンダリだから****だ、というような決まりは無いようなので。

お礼日時:2008/02/04 21:00

全然詳しくないので当てずっぽうですが


title Linux2 のあとに
root (hd2,0)
を入れてやる必要があるのかもです。

title Linux2
root (hd2,0)
chainloader +1
として、セカンダリマスターのGrubを立ち上げてみるのもいいかもです。(うまくいくかわからないですが)
kernelのアップデートを行ったときにgrubのメニューが書き換えられることも考えるとこっちのほうが安全かも知れません。

この回答への補足

回答ありがとうございます。

書かなかったのですが、/dev/hda1がboot, hda2がSWAP, hda3がルートです。
root (hd2,0)
chainloader +1
を試してみたところ、SWAPが指定されてしまいダメでした。

その後、
 title Linux2
 kernel (hd1,0)/vmlinuz root=/dev/hdc3
 initrd (hd1,0)/initrd
で起動はできたのですが、
Linux1のカーネルを使い、Linux2のデータを持っている状態で起動しました。
(どちらも同じようにインストールしたOSが入っているので問題無いといえば無いのですが)

(hd1,0)の書き方で/dev/hdc1を指定できないとダメみたいです。
「(hd0,4) は1台目のハードディスクの/dev/hda5をマウントして起動することを意味します」
という記述をネット上で見つけたので、
2台目のHDDのパーティション1個目だから(hd1,0)でいいと思ったんですが…。

補足日時:2008/01/29 13:42
    • good
    • 0

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