2つのOSがGRUBファイルを壊すのを防ぐにはどうすればよいですか?


7

LinuxとOpenSolarisを同じハードディスクの異なるパーティションにインストールしたい。 OpenSolarisはOSのアップデート時にgrubデータを積極的に管理しているようです(「ブート環境」機能の一部です)。 GRUBのデータが壊れないようにするために準備する必要があるものはありますか。後で同じシステムに別のバージョンのLinuxを追加したい場合、考慮事項は何ですか? 1つのOSを選択し、その1つのOSから常に最新の情報に更新する必要がありますか。もしそうなら、どのように私はLinuxの新しいバージョンのためにインストールISOを使うのですか?それは先に進んでgrubデータを自分で修正しないのでしょうか。すでにLinuxを起動していて、自分のgrubファイルを更新したい場合は、ドライブの起動セクションからデータを読み込み、現在起動しているローカルファイルシステムにそれを入れるgrubコマンドを実行する必要がありますか?


これはITの問題であり、SOには適していません。それは良い質問ですが他の所に属します。
swilliams

再開しました。開発環境では、プログラマーがこれらのオペレーティングシステム(または2つの同様のOS)の両方を実行していて、この問題に遭遇する可能性があります。
Thomas Owens

プログラマーは食事と眠りをする必要がありますが、それはそうSOのそれらの受け入れ可能なトピックを作りません。それがプログラマーに影響を与えるからといって、それをプログラミング関連にするわけではありません。
ephemient

食べることと寝ることは技術的ではありません。これは、プログラマーが仕事をやり遂げるのに役立つ、有効で技術的な質問です。私はそれが適切な椅子、時間追跡のためのツール、そしてその種のものを見つけるのと同じくらい許容できると思います。
Thomas Owens

私はswilliamsの推論を守りたいと思った。これがSOにふさわしい質問であるかどうかわからない、それは私が灰色の領域であると私が思うところにある(FAQがさらに明確にするか、またはコミュニティの投票があるまで)。
ephemient

回答:


3

あなたはどちらか一方のOSかもう一方に伝えなければならないでしょう ではない GRUBのブートセクタを自動的に上書きします。

私が見たすべてのLinuxディストリビューションには、それらのインストールCDがブートセクタをあふれさせるのを防ぐための何らかの方法がありますが、それはしばしばあいまいな高度なオプションです。

GRUBの設定データの大部分は ではない 非常に小さなブートセクタに格納されていて、そこには小さなローダプログラムとそれ以外を見つける場所へのポインタが含まれています。設定データは通常ドライブの通常のパーティションの通常のディレクトリに保存されます。 /boot 多くのLinuxディストリビューションで)そのため、Solarisが実際にLinuxパーティションのデータを処理していない限り、大したことではないでしょう。あるOSが他のOSによって作成されたブートセクタを破壊した場合は、簡単に復旧できます。


3

Grubは他のプログラムと同じようなプログラムです。ハードドライブの最初の部分(マスターブートレコード)には、オペレーティングシステムのロードに使用するプログラムを示す小さなセクションがあります。これは、新しいgrubをインストールしたときに邪魔になることです。ただし、grubを新しいOSでインストールしないことを選択することは可能です(マルチブートシステムでは常に最初にインストールする必要があるWindowsを除く)。 grubをインストールしない場合は、新しいシステムを認識するように元のシステムのgrubを設定する必要があります。言い換えれば、あなたは1からすべてのオペレーティングシステムのgrubを制御します(この場合、それがそれほど攻撃的であるならそれはsolarisが最良の選択であるように見えます)。このOSの中から、あなたのgrubに他のオプションを追加するのはとても簡単です。 /boot/grub/menu.lstでは、新しいオプションを追加してそれらの順序を選択できます。たとえば、私はUbuntu、Windows、およびGentooを実行しています。私のmenu.lstには以下のエントリが含まれています。

title       Ubuntu 8.04.1, kernel 2.6.24-18-generic
root        (hd1,0)
kernel      /boot/vmlinuz-2.6.24-18-generic root=UUID=887466bc-8a0d-4408-
17a-91ec1cfd9f2a ro quiet splash vga=795
initrd      /boot/initrd.img-2.6.24-18-generic
quiet

title       Microsoft Windows XP Professional
root        (hd0,0)
savedefault
makeactive
chainloader +1

title       Gentoo Linux 2.6.25-gentoo-r7
root        (hd0,1)
kernel      /boot/kernel-2.6.25-gentoo-r7 root=/dev/hdb2

これらのそれぞれには、名前、ハードドライブの場所(ディスクとパーティション)、そしてそのディスクのどこにロードするのかなど、ロードしたいシステムに関する基本的な情報が含まれています。 Windowsは自分自身をロードすることを望んでいるので、ディスク0パーティション0のWindowsブートローダーを見つけて(代わりにそれを実行して)チェーンロードすることをgrubに伝えます。 Linuxシステムでは、GRUBメニューに新しい機能を追加するために必要なのは、名前、ルートドライブ、カーネルの場所だけです。

後でLinuxをインストールし、grubのインストールをスキップするのを忘れた場合は、menu.lstを別のものにコピーすることもできます。


2

私はあなたがOSの一つを仮想マシンとして走らせる方が良いと思う。

VM拡張機能と2 GBのRAMをサポートする最新のCPUを使用すると、3〜4台のマシンを簡単に実行できます。次のスニペットを使って、CPUがそれらをサポートしているかどうかを確認してください。

egrep '^flags.*(vmx|svm)' /proc/cpuinfo

これにはたくさんのオプションがあります:Xen、kvm、VirtualBox、VMware。


1

前回のデュアルブートシステムをセットアップしたとき(前の人の答えのように仮想マシンが登場する前)は、ブートフロッピーを作成するオプションがありました。別のOSをインストールしてマスターブートレコード全体に書き込んだ後はフロッピーから起動し、他のOSをチェーンロードするようにGrubを設定してMBRに再インストールできるので、これは便利でした。私はVMwareを使用しているので、私は現代の同等物が何であるかわかりません。


0

共有しない /boot OS間では、それはより多くの作業です。最近のほとんどのディストリビューションのデフォルトは、単一のディストリビューションです。 / ファイルシステム、 /boot サブディレクトリにすぎませんが、 /boot それ自身のパーティションです、それはOSごとに別のもので大丈夫でしょう。

その後、各OSが独自のOSを管理します /bootそして、そのうちの1つがデフォルトの起動可能パーティションになります - もう一方をチェーンロードするように簡単に設定できるはずです。 Grubは、ディスク全体に影響を与えることなく、独自のパーティションだけにヘッダをインストールすることができます。


問題は/ bootパーティションではありません。多くのインストールプログラムは、すでにあるものを尊重することなく、独自のものをMaster Boot Recordに入れています。
Paul Tomblin

あなたの許可なしにインストール後のインストールが何もMBRに触れてはいけません、そしてインストール後に複数のgrubを簡単に修正することができます。そうは言っても、私はDebianがあなたがディスクまたはパーティションにgrubをインストールしたいかどうかを尋ねることを知っています、そして私は他のインストーラでも同様のオプションを期待するでしょう。
ephemient

0

両方ともgrubを使わずにインストールしてみて、どちらかのOSを起動できるようにするスーパーgrubを含むCDを保存してください。

Super Grub Diskはこのユーティリティで、一度実行するとgrubを実行します。OSを選択したり、GRRをMBRに固定したりすることができます。

と思う grubやliloとは別にブートディスクを作成することもできます。私はそれがどのように行われているのかわからない。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.