題 是否可以同時雙啟動兩個操作系統?


是否可以同時雙啟動兩個操作系統?

例如:我目前正在雙啟動Ubuntu 11.04和Windows 7.Ubuntu運行在一個500GB的硬盤上,Windows 7運行在1TB RAID 1鏡像上。要在兩個OS之間切換,需要重新啟動。是否可以在不重啟的情況下在兩個操作系統之間切換?

注意:我完全了解VirtualBox和VMWare Player的功能 - 我同時使用它們。請不要回答“使用虛擬化!”

編輯: 如果這是不可能的,你可以分享為什麼不可能嗎?對我而言,似乎並不那麼困難。請記住,我的願景不受知識的影響!


31
2017-09-08 12:33


起源


在具有分區內存的大型機上...... - Fiasco Labs


答案:


大多數(如果不是全部)主流操作系統都希望能夠獨占主機的低級功能(例如:硬件,端口等),並且沒有任何與其他任何東西共享的概念 - 它只是不起作用 - 因此,要在同一系統上同時嘗試運行兩個操作系統,需要某種形式的透明仲裁器來保護操作系統彼此之間 - 換句話說,就是虛擬化應用程序。


35
2017-09-08 13:17



虛擬化應用程序似乎是共識。您是否會推薦任何免費或開源選項? - James Hill
這實際上取決於你想要做什麼,因為有些VM應用程序在某些方面比其他應用程序更好,但總的來說:選擇你的主要默認操作系統(即:啟動到Ubuntu或Windows),然後安裝Virtualbox,VM Player(我的兩個) faves)或您最喜歡的VM應用程序然後將其他操作系統安裝為該環境中的虛擬機。 - Linker3000
你可以創建一個基於colinux的ubuntu發行版。 colinux作為windows上的進程運行linux內核,因此它不是真正的虛擬化。從某種意義上說,原始問題是可能的,它還沒有完成。 - Jay R. Wren
但是,有些已被移植到操作系統上運行,而不是實際的硬件 - UserModeLinux 是一個完美的反例。 coLinux的 (正如@Jay所提到的)是另一個被“移植”到另一個操作系統的例子。 - new123456


您似乎正在解僱Hyper-V和Xen(所謂的“裸機”管理程序),即使它們與您似乎要求的最接近。是的,這是虛擬化,但與VirtualBox的工作方式不同。

想像一下像VirtualBox這樣的東西是它自己的操作系統,所以你可以安裝一個小的VirtualBox操作系統,然後在VirtualBox操作系統之上並行運行Windows和Ubuntu作為虛擬機。嗯,這基本上就是Hyper-V或Xen的功能。它只是硬件和客戶操作系統之間的一個薄的虛擬化層,它可以與現有硬件和現有操作系統直接並行運行它們。

 需要一個單獨的服務器用於其中任何一個,您只需安裝虛擬機管理程序,就好像它是計算機上的第一個操作系統,然後在虛擬機管理程序下添加Windows和Ubuntu作為虛擬機。

Xen和Hyper-V都將作為客戶操作系統運行Ubuntu和Windows,儘管它可能不是受支持的配置。 Xen更多是Linuxy而Hyper-V是MS產品,因此我建議根據您更熟悉的操作系統選擇虛擬機管理程序。


13
2017-09-09 00:09





你能做的最接近的事情就是利用冬眠。不幸的是,操作系統彼此足夠陌生,以至於在沒有實現虛擬化的情況下,兩個操作系統無法同時運行。老實說,虛擬化並不像你想像的那麼糟糕......尤其是當你使用支持“VT”擴展的虛擬化平台時。客戶操作系統能夠直接與硬件通信,並具有更好的內存映射等。我實際上已經設置了一個直接安裝在SSD上的客戶操作系統......它運行速度比主機操作系統快。


8
2017-09-08 13:18



我對虛擬化沒有任何問題,我在我擁有的每台計算機上使用VirtualBox。你能解釋一下你提到的VT擴展嗎?僅供參考 - 這是供家庭使用,所以我正在尋找一種便宜的(讀取:免費/開源)方式。 - James Hill
VT =硬件虛擬化。基本上,CPU有一些額外的擴展(有時需要在BIOS中啟用),以便於並行運行操作系統。 VirtualBox可以做到這一點......但是如果你堅持使用軟件虛擬化,它將無法很好地運行。有時稱為VT-x,VT,AMD-V,硬件虛擬化或無數其他名稱。 - TheCompWiz
VMWare是否擁有您所說的“VT”擴展生物?如果是這樣,是否需要明確啟用? - MasterMastic
VT是處理器功能。這是一個天氣問題,你的CPU內置或不是內置的......以及主板是否支持它。 (可以在許多BIOS中禁用處理器擴展)通常默認情況下啟用...但可以禁用。我的惠普筆記本電腦關閉了......但我的超微服務器開啟了它。 - TheCompWiz


這是答案為“不”的簡單,簡短的原因:什麼軟件可以控制您的硬件?

如果OS 1這樣做,那麼你沒有運行OS 2.如果OS 2這樣做,那麼你沒有運行OS 1.如果他們都這樣做,那麼其他一些軟件就必須調解他們對物理硬件的共享訪問,這是虛擬化(你排除了)。


7
2017-09-08 16:47



除非OS 1是OS / 2。然後運行OS / 2作為OS 1.:D - Kenneth Cochran
@KennethCochran - 這讓我笑了;-) - Unsigned
這只是簡單的扭曲...記住一個公司創建的一個整潔的操作系統,無法用濕紙袋推銷它。 - Fiasco Labs


想到的事情是:
     - 內存管理(ram和緩存)
    - 流程管理(流程運行)

因此,您可能需要一個中間處理兩個操作系統之間的內存使用和進程的人。

那將是另一個操作系統/固件。
因此,如果有人已經實現了它將實現它,你最終可能會同時運行3而不是2 Oss

編輯-
添加了linker3000所寫的內容:端口管理

這個“中間人”將基本上成為您的主機操作系統,其他操作系統虛擬化,讓您回到已經知道的解​​決方案


2
2017-09-08 13:20





我所知道的所有操作系統都要求完全控制計算機硬件。

但理論上可行。兩個操作系統都需要設計為:

  • 作為主設備(總硬件控制)和從設備(從主OS請求資源)運行
  • 根據其他操作系統的請求放棄對硬件的控制

如果滿足這兩個條件,則可以在沒有任何虛擬化的情況下同時運行兩個OS。它類似於兩個操作系統使用 合作多任務處理。當然,合作多任務處理已經完全放棄了,因為寫得不好的應用程序拒絕放棄控制。也許兩個寫得很好的操作系統會很好玩。那又有什麼激勵呢?


2
2017-09-08 19:53





讓我談談“為什麼”部分。

現代操作系統的一個原因是允許多個程序(進程)在系統上同時運行。如果您想安全地執行此操作,則需要執行以下操作:

  • 你可能(除非你有特殊需要)不想以固定的方式對系統中的RAM進行分配 - 例如每個進程固定256MB - 限制為2GB系統中的8個進程。您希望每個進程能夠“詢問”內存並在完成後返回它。

  • 您也不希望在設備之間以固定方式分配I / O設備。通常,您希望部分或全部硬件(如內存)成為共享資源,或者至少僅在特定時間暫時獨占特定進程。這要求所有進程不要自己嘗試進行I / O,而是“通過”某些事情來安排和協調I / O.調度非常重要,因為大多數I / O比CPU慢得多,因此即使在單核系統上等待I / O,也可以讓CPU為其他進程工作。

要做到以上幾點,需要利用幾個CPU硬件功能。其中一個是MMU,另一個是保護模式。兩個操作系統可以合作共享這些硬件功能來運行兩個或更多操作系統嗎?

當然,但硬件中沒有任何東西可以阻止一個操作系統踩踏其他操作系統內存。如果CPU處於內核模式(它只有  內核模式),任何代碼都可以做任何事情。一個操作系統的代碼可以100%運行在其他操作系統的代碼或數據上。我們知道操作系統過去曾存在漏洞,未來會有更多漏洞。所以這對安全性來說非常糟糕。

現在,如果您可以在此上添加另一個“層”並為多個操作系統提供所需的硬件支持,那不是很酷嗎?這正是硬件虛擬化功能的作用,它們在多個運行的操作系統之間設置了硬件障礙,並且有一個頂層的“接口”,稱為虛擬機管理程序。您只能擁有一個虛擬機管理程序。是的,在任一操作系統下運行的進程必須通過三層來執行I / O(進程 - 本地內核 - 管理程序)


1
2018-06-10 01:01





我知道你說沒有虛擬化,但像MS Hyper V服務器這樣的東西可能符合你的需求


0
2017-09-08 12:39



Hyper-V需要第二台機器作為服務器。如果我有一台功能強大的第二台機器,我會把它放在我的另一座塔旁邊,並用不同的操作系統啟動它們:)。此外,根據我的理解,設置成本不低於2千美元。 - James Hill
我想你可以在一台機器上運行Hyper V .. - Akash
hyper-v中的V用於虛擬化。如果約束不是虛擬化,則hyper-v不是解決方案。 - Jay R. Wren


除虛擬化之外別無他法。我發現很難獲得客戶系統適用於不同虛擬機管理程序的定義信息。 http://en.wikipedia.org/wiki/Hypervisor 應該是獲取一些信息的良好開端,而Xen可能值得一試,但我會等待有人肯定確認或否認它是否支持Windows 7來賓。


0
2017-09-08 13:32