Czy możliwe jest podwójne uruchomienie dwóch systemów operacyjnych jednocześnie?

36

Czy możliwe jest podwójne uruchomienie dwóch systemów operacyjnych jednocześnie?

Na przykład : Obecnie uruchamiam podwójnie system Ubuntu 11.04 i Windows 7. Ubuntu działa na pojedynczym dysku twardym 500 GB, system Windows 7 działa na kopii lustrzanej RAID 1 o pojemności 1 TB. Aby przełączać się między dwoma systemami operacyjnymi, wymagane jest ponowne uruchomienie. Czy można przełączać się między dwoma systemami operacyjnymi bez ponownego uruchamiania?

UWAGA : Jestem w pełni świadomy możliwości VirtualBox i VMWare Player - używam obu. Proszę nie odpowiadać „Użyj wirtualizacji!”

EDYCJA: Jeśli nie jest to możliwe, możesz udostępnić, dlaczego nie jest to możliwe? Dla mnie nie wydaje się to takie trudne. Pamiętaj, że moja wizja nie jest obciążona wiedzą!

James Hill
źródło
Na komputerze mainframe z partycjonowaną pamięcią ...
Fiasco Labs

Odpowiedzi:

36

Większość, jeśli nie wszystkie, systemy operacyjne głównego nurtu oczekują wyłącznego dostępu do niskopoziomowej funkcjonalności komputera hosta (np. Sprzętu, portów itp.) I nie mają pojęcia o współużytkowaniu z niczym innym - to po prostu nie zadziała - więc próba uruchomienia dwóch systemów operacyjnych jednocześnie w tym samym systemie wymaga pewnej formy przejrzystego arbitra, aby chronić systemy operacyjne przed sobą - innymi słowy, aplikacja do wirtualizacji.

Linker3000
źródło
Aplikacja do wirtualizacji wydaje się być konsensusem. Czy są jakieś wolne lub otwarte opcje, które poleciłbyś?
James Hill
2
To naprawdę zależy od tego, co próbujesz zrobić, ponieważ niektóre aplikacje VM są lepsze w niektórych rzeczach niż inne, ale ogólnie: Wybierz główny domyślny system operacyjny (tj. Rozruch do Ubuntu lub Windows), a następnie zainstaluj Virtualbox, VM Player (moje dwa faves) lub ulubioną aplikację VM, a następnie zainstaluj inny system operacyjny jako maszynę wirtualną w tym środowisku.
Linker3000,
możesz stworzyć dystrybucję ubuntu opartą na colinux. colinux uruchamia jądro Linuksa jako proces w systemie Windows, więc tak naprawdę nie jest to wirtualizacja. w pewnym sensie to, jakie pierwotne pytanie jest możliwe, po prostu jeszcze nie zostało zrobione.
Jay R. Wren,
Jednak niektóre zostały przeniesione do działania w systemach operacyjnych, w przeciwieństwie do rzeczywistego sprzętu - UserModeLinux jest idealnym kontrprzykładem. colinux (jak wspomniano w @Jay) jest kolejnym przykładem „przeniesienia” systemu operacyjnego na inny.
new123456
15

Wygląda na to, że lekceważysz Hyper-V i Xen (tak zwane hiperwizory „gołego metalu”), nawet jeśli są one najbliższe temu, o co się prosi. Tak, to wirtualizacja, ale nie w ten sam sposób, w jaki działa VirtualBox.

Wyobraź sobie, że coś takiego jak VirtualBox to jego własny system operacyjny, dzięki czemu można zainstalować mały system operacyjny VirtualBox, a następnie uruchomić system Windows i Ubuntu obok siebie jako maszyny wirtualne na systemie operacyjnym VirtualBox. Cóż, zasadniczo to robią Hyper-V lub Xen. To tylko cienka warstwa wirtualizacji między sprzętem a systemami operacyjnymi gościa, i jest tak blisko, jak można bezpośrednio uruchomić je obok siebie z istniejącym sprzętem i istniejącymi systemami operacyjnymi.

Państwo nie potrzebuje oddzielnego serwera dla jednego z nich, to po prostu zainstalować hypervisor, jak gdyby był to pierwszy system operacyjny na komputerze, a następnie dodać Windows i Ubuntu jako maszyn wirtualnych w ramach hypervisor.

Zarówno Xen, jak i Hyper-V będą działały jako systemy operacyjne Ubuntu i Windows, chociaż może to nie być obsługiwana konfiguracja. Xen jest bardziej Linuxowy, a Hyper-V to produkt MS, więc sugerowałbym wybranie hiperwizora w oparciu o system operacyjny, w którym czujesz się bardziej komfortowo.

Kevin
źródło
8

Najbliższa rzecz, jaką możesz zrobić ... to skorzystać z hibernacji. Niestety systemy operacyjne są dla siebie na tyle obce, że nie ma możliwości, aby oba systemy działały w tym samym czasie bez wdrożenia wirtualizacji. Szczerze mówiąc, wirtualizacja nie jest już tak zła, jak myślisz ... szczególnie, gdy używasz platformy wirtualizacyjnej, która obsługuje rozszerzenia „VT”. Systemy operacyjne gościa mają możliwość bezpośredniej komunikacji ze sprzętem i mają znacznie lepsze mapowanie pamięci i tym podobne. Właściwie skonfigurowałem system gościa zainstalowany bezpośrednio na dysku SSD ... i działał szybciej niż system hosta.

TheCompWiz
źródło
Nie mam problemu z wirtualizacją, używam VirtualBox na każdym komputerze, który posiadam. Czy możesz wyjaśnić rozszerzenia VT, o których wspominałeś nieco więcej? FYI - To jest do użytku domowego, więc szukam taniego (czytaj: darmowy / open source) sposób na zrobienie tego.
James Hill
VT = sprzętowa wirtualizacja. Zasadniczo procesor ma kilka dodatkowych rozszerzeń (czasem wymaga włączenia w systemie BIOS) zaprojektowanych w celu ułatwienia równoległego uruchamiania systemów operacyjnych. VirtualBox może to zrobić ... ale jeśli utkniesz w wirtualizacji oprogramowania, nie będzie on działał dobrze. Czasami nazywany VT-x, VT, AMD-V, wirtualizacja sprzętu lub mnóstwo innych nazw.
TheCompWiz
Czy VMWare ma to stworzenie z rozszerzeniem „VT”, o którym mówisz? jeśli tak, to czy należy to wyraźnie włączyć?
MasterMastic,
VT to funkcja procesora. To zależy od pogody, czy nie, twój procesor ma wbudowane bity, czy nie ... a także, czy płyta główna obsługuje to. (Rozszerzenia procesora można wyłączyć w wielu BIOS-ach) Zazwyczaj jest on domyślnie włączony ... ale można go wyłączyć. Mój laptop HP miał go wyłączony ... ale moje serwery Supermicro mają go włączone.
TheCompWiz
7

Oto prosty, krótki powód, dla którego odpowiedź brzmi „nie”: jakie oprogramowanie kontroluje Twój sprzęt?

Jeśli system operacyjny OS 1 to robi, oznacza to, że system operacyjny nie działa 2. Jeśli system operacyjny OS2 to robi, system operacyjny nie działa 1. Jeśli oba systemy to robią, niektóre inne programy musiałyby pośredniczyć w dostępie do sprzętu fizycznego i to jest wirtualizacja (którą wykluczyłeś).

David Schwartz
źródło
8
Chyba że OS 1 to OS / 2. Następnie działający system OS / 2 jako OS 1.: D
Kenneth Cochran
To po prostu Warped ... Pamiętając o zgrabnym systemie operacyjnym stworzonym przez firmę, która nie mogła wydostać się z mokrej papierowej torby.
Fiasco Labs
2

Przychodzą mi na myśl następujące rzeczy:
- Zarządzanie pamięcią (RAM i pamięć podręczna)
- Zarządzanie procesami (uruchomione wątki procesu)

Prawdopodobnie więc potrzebujesz człowieka w środku żonglującego zużyciem pamięci i procesami między dwoma systemami operacyjnymi.

To byłby kolejny os / firmware.
Więc jeśli ktoś go zaimplementował, OS go zaimplementuje, możesz skończyć z 3 zamiast 2 OS działającymi jednocześnie

EDYCJA -
Dodanie tego, co napisał linker3000: zarządzanie portami

Ten „człowiek pośrodku” stanie się w zasadzie hostem systemu operacyjnego, a inne systemy zostaną zwirtualizowane, prowadząc cię z powrotem do rozwiązania, o którym wiesz, że było rozwiązaniem

Shekhar
źródło
2

Wszystkie systemy operacyjne, o których wiem, wymagają całkowitej kontroli nad sprzętem komputerowym.

Jest to teoretycznie możliwe. Oba systemy operacyjne należy zaprojektować w taki sposób, aby:

  • Działa zarówno jako master (całkowita kontrola sprzętu) i slave (żąda zasobów od master OS)
  • Zrezygnuj z kontroli sprzętu na żądanie innego systemu operacyjnego

Jeśli oba te warunki zostaną spełnione, możliwe byłoby jednoczesne uruchomienie dwóch systemów operacyjnych bez jakiejkolwiek wirtualizacji. Byłoby to podobne do dwóch systemów operacyjnych korzystających z wielozadaniowości kooperacyjnej . Oczywiście współpraca wielozadaniowa została prawie zaniechana ze względu na problem źle napisanych aplikacji odmawiających kontroli. Być może dwa poprawnie napisane systemy operacyjne byłyby fajne. Z drugiej strony jaka byłaby zachęta?

Kenneth Cochran
źródło
1

Pozwól, że odniosę się do części „dlaczego”.

Jednym z powodów nowoczesnego systemu operacyjnego jest umożliwienie jednoczesnego uruchamiania wielu programów (procesów) w systemie. Jeśli chcesz to zrobić bezpiecznie, muszą się zdarzyć następujące rzeczy:

  • Prawdopodobnie (chyba że masz specjalne potrzeby) nie chcesz dzielić pamięci RAM w systemie w ustalony sposób - np. 256 MB ustalonych na proces - ogranicza Cię do 8 procesów w systemie 2 GB. Chcesz, aby każdy proces mógł „poprosić” o pamięć i zwrócić ją, gdy zostanie zakończona.

  • Nie chcesz również dzielić urządzeń I / O w ustalony sposób między urządzeniami. Zazwyczaj chcesz, aby część lub całość sprzętu, na przykład pamięć, była zasobem współdzielonym lub przynajmniej tymczasowo wyłącznym dla określonych procesów w określonych porach. Wymaga to, aby wszystkie procesy nie próbowały same wykonywać operacji we / wy, ale „przechodziły” przez coś, aby zaplanować i koordynować operacje we / wy. Planowanie jest ważne, ponieważ większość operacji we / wy jest znacznie wolniejsza niż procesor, więc procesor może pracować dla innych procesów podczas oczekiwania na operacje we / wy nawet w systemie jednordzeniowym.

Aby wykonać powyższe prawo, należy skorzystać z kilku funkcji sprzętowych procesora. Jednym z nich jest MMU, drugim jest tryb chroniony. Czy dwa systemy operacyjne mogą współdzielić te funkcje sprzętowe w celu współpracy dwóch lub więcej systemów operacyjnych?

Jasne, ale w sprzęcie nie ma nic, co mogłoby powstrzymać jeden system operacyjny przed tupnięciem w pamięci innych systemów operacyjnych. Jeśli CPU jest w trybie jądra (ma tylko jeden tryb jądra), każdy kod może zrobić wszystko. W 100% możliwe jest, aby kod z jednego systemu operacyjnego działał na kodzie lub danych drugiego systemu operacyjnego. Wiemy, że systemy operacyjne miały w przeszłości luki, a w przyszłości będzie ich więcej. To bardzo źle wpływa na bezpieczeństwo.

Czy nie byłoby fajnie, gdybyś mógł nałożyć na to kolejną „warstwę” i potrzebowałby wsparcia sprzętowego dla wielu systemów operacyjnych? Właśnie to robią funkcje wirtualizacji sprzętu, stanowią barierę sprzętową między wieloma działającymi systemami operacyjnymi, a dla nich istnieje „interfejs” najwyższego poziomu, zwany hiperwizorem. Możesz mieć tylko jednego hiperwizora. I tak, procesy działające w jednym z systemów operacyjnych muszą przejść przez trzy warstwy, aby wykonać operacje we / wy (proces - lokalne jądro - hiperwizor)

LawrenceC
źródło
0

Wiem, że nie powiedziałeś o wirtualizacji, ale coś takiego jak serwer MS Hyper V może pasować do twoich potrzeb

Akash
źródło
Hyper-V wymagałby, aby drugi komputer działał jako serwer. Gdybym miał drugą maszynę, która była tak potężna, ustawiłbym ją obok mojej drugiej wieży i uruchomiłbym obie z różnymi systemami operacyjnymi :). Z tego, co rozumiem, konfiguracja kosztowałaby nie mniej niż 2 tys. USD.
James Hill
Myślę, że możesz uruchomić Hyper V na jednej maszynie.
Akash
2
V w hyper-v służy do wirtualizacji. jeśli ograniczeniem nie jest wirtualizacja, wówczas hyper-v nie jest rozwiązaniem.
Jay R. Wren,
0

Nie ma innej drogi niż wirtualizacja. Trudno mi określić określone informacje, które systemy-goście będą działać dla różnych hiperwizorów. http://en.wikipedia.org/wiki/Hypervisor Powinien być dobry początek, aby uzyskać pewne informacje, a Xen może być warty wypróbowania, chociaż czekałbym, aż ktoś zdecydowanie potwierdzi lub zaprzeczy, jeśli obsługuje gości Windows 7.

Nornagest
źródło