2つのOSを同時にデュアルブートすることは可能ですか?
例えばですが。私は現在、Ubuntu 11.04とWindows 7をデュアルブートしています。Ubuntuは500GBのHDD1台で、Windows 7は1TBのRAID1ミラーで動作しています。2つのOSを切り替えるには再起動が必要です。再起動なしで2つのOSを切り替えることは可能でしょうか?
注意:私はVirtualBoxとVMWare Playerの機能を十分に理解しています – 私は両方を使用しています。”仮想化を使え!”とは答えないでください。”
EDIT: もしこれができない場合、なぜできないのかを教えていただけますか?私には、それはそれほど難しいことではないように思えます。私の視野は知識にとらわれていないことを心に留めておいてください
38 None 2011-09-08
すべてではない場合、ほとんどの場合、主流のオペレーティングシステムは、ホストコンピュータの低レベルの機能(例えば:ハードウェア、ポートなど)に排他的なアクセスを持っていることを期待しており、他の何かと共有の概念を持っていない – それだけでは動作しません – だから、同じシステム上で2つのOSを同時に実行しようとすると、お互いからオペレーティングシステムをシールドするために、透明な仲裁人のいくつかのフォームを必要とします – 言い換えれば、仮想化アプリケーション
39 Linker3000 2011-09-08
あなたが求めているものに最も近いのに、Hyper-VやXen(いわゆる「ベアメタル」ハイパーバイザ)を否定しているように見えます。はい、仮想化ですが、VirtualBoxと同じようには動作しません
VirtualBoxのようなものが独自のオペレーティングシステムで、小さなVirtualBox OSをインストールして、VirtualBox OSの上に仮想マシンとしてWindowsとUbuntuを並べて実行することができると想像してみてください。まあ、それは基本的にHyper-VやXenがやっていることです。ハードウェアとゲストOSの間に薄い仮想化層を作っているだけで、既存のハードウェアと既存のOSを使って、それらを直接並べて実行することに限りなく近いものです
どちらも別のサーバーを用意する必要はなく、マシン上の最初のOSであるかのようにハイパーバイザーをインストールし、ハイパーバイザーの下に仮想マシンとしてWindowsとUbuntuを追加するだけです
XenもHyper-Vも、サポートされている構成ではないかもしれませんが、ゲストOSとしてUbuntuやWindowsが動作します。XenはLinux寄りで、Hyper-VはMSの製品なので、どちらかのOSをベースにしてハイパーバイザーを選ぶことをお勧めします
18 Kevin 2011-09-09
一番近いのは… ハイバネーションを利用することだ残念ながら、オペレーティング・システムはお互いに十分に異質なものなので、仮想化を実装せずに両方のOSを同時に実行する方法はありません。正直言って、仮想化はもうあなたが思っているほど悪くはありません… 特にあなたが “VT” 拡張機能をサポートする仮想化プラットフォームを使用している場合。ゲストOSは、ハードウェアと直接通信する機能を取得し、はるかに優れたメモリマッピングを持っています。私は実際にSSDに直接インストールされたゲストOSをセットアップしました…そして、それはホストOSよりも高速に動作しました
8 TheCompWiz 2011-09-08
ここに、答えが「ノー」であるシンプルで短い理由があります。どのようなソフトウェアがハードウェアを制御するのでしょうか?
もしOS 1がそれをするならば、あなたはOS 2を実行していないことになり、OS 2がそれをするならば、あなたはOS 1を実行していないことになります。 もし両方がそれをするならば、他のソフトウェアが物理ハードウェアへの共有アクセスを仲介しなければならないでしょう
7 David Schwartz 2011-09-08
思い浮かぶものは以下の通りです。 – メモリ管理(RAMとキャッシュ) – プロセス管理(プロセススレッドの実行)
だから、あなたはおそらく、2つのOS間のメモリ使用量とプロセスをジャグリングする真ん中の男が必要になります
それは別の OS/ファームウェアになります。 もし誰かがそれを実装したならば、OSはそれを実装するでしょう、あなたは2つのOSSを同時に実行する代わりに3つのOSSで終わるかもしれません
EDIT- linker3000が書いたことを追加しました
この ‘真ん中の男 ‘ 本質的にあなたのホストOSと仮想化された他のOSになります , あなたがすでに解決策を知っていたものに戻ってあなたを導く
2 Shekhar 2011-09-08
私が知っているすべてのOSは、コンピュータのハードウェアの完全な制御を要求しています
理論的には可能ですが。どちらのOSも設計する必要があるでしょう
- マスター(ハードウェア全体の制御)とスレーブ(マスターOSにリソースを要求)の両方で動作します
- 他のOSからの要求に応じて、ハードウェアの制御を放棄する
この両方の条件を満たせば、仮想化のようなものがなくても2つのOSを同時に実行することが可能になります。これは、協調的マルチタスクを使った2つのOSに似ています。もちろん、協調的なマルチタスクは、お粗末に書かれたアプリケーションが制御を譲ることを拒否するという問題のために、すべてが放棄されています。おそらく、2つの適切に書かれたOSがうまく機能するでしょう。それからまた何のインセンティブがあるのでしょうか?
2 Kenneth Cochran 2011-09-08
なぜ」の部分を取り上げてみます
最近のOSの理由の一つに、システム上で複数のプログラム(プロセス)を同時に実行できるようにすることがあります。これを安全に行うためには、以下のことを行う必要があります
特別なニーズがない限り、システム内の RAM を固定的に分割したくないでしょう – 例えば、プロセスごとに 256MB 固定 – 2GB のシステムでは 8 プロセスに制限されます。各プロセスがメモリを「要求」して、それが完了したときにそれを返すことができるようにしたいと思います
また、I/Oデバイスをデバイス間で固定的に分割したくはありません。一般的には、メモリのような一部またはすべてのハードウェアを共有リソースにするか、または少なくとも特定の時間に特定のプロセスだけに一時的に排他的にしたいと考えています。これは、すべてのプロセスが自分でI/Oをしようとするのではなく、I/Oをスケジュールして調整するために何かを “通過 “する必要があります。ほとんどのI/OはCPUよりもはるかに遅いので、シングルコアのシステムでも、CPUがI/Oを待っている間に他のプロセスのために仕事をさせることができるので、スケジューリングは重要です
上記を正しく行うためには、いくつかのCPUハードウェア機能を利用する必要があります。そのうちの一つがMMUで、もう一つがプロテクトモードです。2つのOSがこれらのハードウェア機能を協調して共有して、2つ以上のOSを動作させることは可能でしょうか?
確かに、しかし、ある OS が他の OS のメモリを踏みつけるのを止めることができるハードウェアは何もありません。CPU がカーネルモード(カーネルモードは 1 つしかない)であれば、どんなコードでも何でもできます。ある OS のコードが他の OS のコードやデータの上を走ることは 100% 可能です。そして、OSには過去にも脆弱性があり、今後も脆弱性が増えることがわかっています。ですから、セキュリティにとっては非常に悪いことなのです
さて、この上に別の “レイヤー “を置いて、複数のOSのために必要なハードウェアをサポートすることができたら、それはクールだと思いませんか?ハードウェア仮想化機能はまさにその通りで、複数のOSの間にハードウェアのバリアを設け、ハイパーバイザーと呼ばれるトップレベルの「インターフェイス」があります。ハイパーバイザーは1つだけです。そして、どちらのOSの下で実行されているプロセスも、I/Oを行うためには3つのレイヤー(プロセス – ローカルカーネル – ハイパーバイザー)を通過しなければなりません
1 LawrenceC 2015-06-10
仮想化はしないと言っていましたが、MSのHyper Vサーバーのようなものがあなたのニーズに合っているかもしれません
0 Akash 2011-09-08
仮想化以外に方法はありません。どのゲストシステムが異なるハイパーバイザーで動作するか、明確な情報を得るのは難しいと思います。http://en.wikipedia.org/wiki/Hypervisor いくつかの情報を得るための良いスタートになるはずですし、Xen は試してみる価値があるかもしれません
0 Nornagest 2011-09-08