- 締切済み
同じようにインストールした2台のLinuxをデュアルブートしたい
全く同じようにインストールした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にはどのように書いたらよいでしょうか。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- vaidurya
- ベストアンサー率45% (2714/5983)
一番シンプルなケースだと、hdcにあるルートファイルシステムあたりから grub.confを探してきて、hdaのほうのと見比べる。 というか、手動でマウントして両方開いて テキストエディタでカット&ペーストでgrub.confを編集すれば済む。 ちなみにgrubでのデバイス指定は、hdaとかと直接リンクされない。 起動デバイスとして出てくるHDD等の中で、認識されているものを 0から順番に振り分ける仕組み。 USB-HDDとかがからんだ場合とか、PATA/SATA混在の場合の状況は 試してみないとよくわかんないけど、普通hdaとhdcがHDDで hdbが光学ドライブだったりすると、hdcがhd1になるはず。 grubコンソールからの起動操作で確認してもいい。
- yakan9
- ベストアンサー率54% (2244/4125)
インストールしたときの、grub.confをファイルに保存しておき、 合成させて、(hda,b)のaとbを変更するだけだと思います。 Linuxは何を使っているかで、swapファイルが厳格な、Vine Linux などは、swapファイルのパーティションまでチェックしますね。
お礼
回答ありがとうございます。 TurboLinux10Dを使っています。 grubはインストールした時のままなので、 kernel (hd0,0)/vmlinuz root=0303 initrd (hd0,0)/initrd です。 同じディストリで同じようにインストールしたので、 もう片方も kernel (hd0,0)/vmlinuz root=0303 initrd (hd0,0)/initrd と書かれています。 (hd0,0)に何が入るのかを探すしか無いみたいですね。 セカンダリだから****だ、というような決まりは無いようなので。
- yakan9
- ベストアンサー率54% (2244/4125)
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をみて、 推測する以外ないと思います。
- Evreux
- ベストアンサー率29% (225/774)
全然詳しくないので当てずっぽうですが 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)でいいと思ったんですが…。
お礼
回答ありがとうございます。 プライマリマスターとセカンダリマスターに挿して、 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となったと思います。