È possibile eseguire il dual boot di due SO contemporaneamente?


35

È possibile eseguire il dual boot di due SO contemporaneamente?

Ad esempio : attualmente sto eseguendo il dual boot di Ubuntu 11.04 e Windows 7. Ubuntu è in esecuzione su un singolo HDD da 500 GB, Windows 7 è in esecuzione su un mirror RAID 1 da 1 TB. Per passare da un sistema operativo all'altro, è necessario riavviare. È possibile passare da un sistema operativo all'altro senza riavviare?

NOTA : sono pienamente consapevole delle capacità di VirtualBox e VMWare Player - Uso entrambi. Per favore, non rispondere "Usa la virtualizzazione!"

EDIT: Se questo non è possibile puoi condividere perché non è possibile? Per me, non sembra che sarebbe così difficile. Tieni presente che la mia visione è libera dalla conoscenza!


Su un mainframe con memoria partizionata ...
Fiasco Labs,

Risposte:


36

La maggior parte, se non tutti, i sistemi operativi tradizionali si aspettano di avere accesso esclusivo alla funzionalità di basso livello del computer host (ad es. Hardware, porte ecc.) E non hanno alcun concetto di condivisione con nient'altro - semplicemente non funzionerà - quindi per provare a far funzionare due SO contemporaneamente sullo stesso sistema è necessario un qualche tipo di arbitro trasparente per proteggere i sistemi operativi l'uno dall'altro - in altre parole, un'applicazione di virtualizzazione.


L'applicazione di virtualizzazione sembra essere il consenso. Ci sono opzioni gratuite o open source che consiglieresti?
James Hill,

2
Dipende davvero da cosa stai provando a fare poiché alcune app VM sono migliori in alcune cose rispetto ad altre, ma in generale: scegli il tuo sistema operativo predefinito principale (ad esempio: avvio su Ubuntu o Windows) e quindi installa Virtualbox, VM Player (i miei due preferiti) o la tua app VM preferita, quindi installa l'altro sistema operativo come macchina virtuale in quell'ambiente.
Linker3000,

potresti creare una distro ubuntu basata su colinux. colinux esegue il kernel linux come processo su Windows, quindi non è proprio virtualizzazione. in un certo senso, ciò che la domanda originale posta è possibile, non è ancora stato fatto.
Jay R. Wren,

Tuttavia, alcuni sono stati portati per essere eseguiti su sistemi operativi, al contrario dell'hardware reale - UserModeLinux è il perfetto controesempio. colinux (come menzionato da @Jay) è un altro esempio di "porting" di un sistema operativo su un altro.
nuovo123456

14

Sembra che tu stia respingendo Hyper-V e Xen (i cosiddetti hypervisor "bare metal") anche se sono più vicini a ciò che sembri chiedere. Sì, è virtualizzazione, ma non nello stesso modo in cui funziona VirtualBox.

Immagina che qualcosa come VirtualBox fosse il suo sistema operativo, quindi potresti installare un piccolo sistema operativo VirtualBox e quindi eseguire Windows e Ubuntu fianco a fianco come macchine virtuali sul sistema operativo VirtualBox. Bene, questo è essenzialmente ciò che fanno Hyper-V o Xen. È solo un sottile livello di virtualizzazione tra l'hardware e i sistemi operativi guest, ed è il più vicino possibile alla loro esecuzione diretta fianco a fianco con hardware esistente e sistemi operativi esistenti.

Non hai bisogno di un server separato per nessuno di questi, dovresti semplicemente installare l'hypervisor come se fosse il primo sistema operativo sulla macchina, quindi aggiungere Windows e Ubuntu come macchine virtuali sotto l'hypervisor.

Sia Xen che Hyper-V eseguiranno Ubuntu e Windows come sistemi operativi guest, anche se potrebbe non essere una configurazione supportata. Xen è più Linuxy e Hyper-V è un prodotto MS, quindi suggerirei di scegliere l'hypervisor in base al sistema operativo con cui ti senti più a tuo agio.


8

La cosa più vicina che potresti fare ... è usare l'ibernazione. Sfortunatamente, i sistemi operativi sono abbastanza estranei l'uno all'altro che non c'è modo per entrambi i sistemi operativi di essere eseguiti contemporaneamente senza implementare la virtualizzazione. Onestamente, la virtualizzazione non è più così grave come si pensa ... specialmente quando si utilizza una piattaforma di virtualizzazione che supporta le estensioni "VT". I sistemi operativi guest hanno la possibilità di comunicare direttamente con l'hardware e hanno una mappatura della memoria molto migliore e così via. In realtà ho installato un SO guest installato direttamente su un SSD ... ed è andato più veloce del SO host.


Non ho problemi con la virtualizzazione, utilizzo VirtualBox su tutti i computer che ho. Puoi spiegare le estensioni VT che hai menzionato un po 'di più? Cordiali saluti - Questo è per uso domestico quindi sto cercando un modo economico (leggi: gratuito / open source) per farlo.
James Hill,

VT = Virtualizzazione hardware. Fondamentalmente, la CPU ha alcune estensioni aggiuntive (a volte richiede l'abilitazione nel BIOS) progettate per facilitare l'esecuzione di sistemi operativi in ​​parallelo. VirtualBox può farlo ... ma se sei bloccato con la virtualizzazione del software, non funzionerà bene. A volte chiamato VT-x, VT, AMD-V, Virtualizzazione hardware o una miriade di nomi aggiuntivi.
TheCompWiz

VMWare ha questa creatura estensioni "VT" di cui parli? in tal caso, deve essere abilitato esplicitamente?
MasterMastic,

VT è una funzionalità del processore. È una questione di tempo o no la tua CPU ha i bit integrati o no ... e anche se la scheda madre ne ha il supporto. (le estensioni del processore possono essere disabilitate in molti BIOS) Di solito è abilitato per impostazione predefinita ... ma può essere disabilitato. Il mio laptop HP è stato spento ... ma i miei server supermicro sono accesi.
TheCompWiz

7

Ecco la semplice, breve ragione per cui la risposta è "no": quale software controllerebbe il tuo hardware?

Se l'OS 1 lo fa, allora non stai eseguendo l'OS 2. Se l'OS 2 lo fa, allora non stai eseguendo l'OS 1. Se lo fanno entrambi, allora alcuni altri software dovrebbero mediare il loro accesso condiviso all'hardware fisico e questa è la virtualizzazione (che hai escluso).


8
A meno che OS 1 non sia OS / 2. Quindi il tuo OS / 2 in esecuzione come OS 1.: D
Kenneth Cochran

È semplicemente deformato ... Ricordare un sistema operativo pulito creato da un'azienda che non è riuscita a uscire da un sacchetto di carta bagnato.
Fiasco Labs,

2

Le cose che vengono in mente sono:
- Gestione della memoria (ram e cache)
- Gestione dei processi (thread di processo in esecuzione)

Quindi probabilmente avresti bisogno di un uomo che manipola l'utilizzo della memoria e i processi tra i due sistemi operativi.

Sarebbe un altro sistema operativo / firmware.
Quindi, se qualcuno lo ha implementato os lo implementerà, potresti finire con 3 Oss invece che 2 in esecuzione contemporaneamente

EDIT-
Aggiungendo ciò che linker3000 ha scritto: gestione delle porte

Questo "man in the middle" diventerà essenzialmente il tuo SO host e gli altri SO virtualizzati, riportandoti a quella che già sapevi fosse una soluzione


2

Tutti i sistemi operativi di cui sono a conoscenza richiedono il controllo totale dell'hardware del computer.

È teoricamente possibile però. Entrambi i sistemi operativi dovrebbero essere progettati per:

  • Esegui sia come master (controllo hardware totale) sia come slave (richiede risorse dal sistema operativo master)
  • Abbandonare il controllo dell'hardware su richiesta di un altro sistema operativo

Se entrambe queste condizioni sono soddisfatte, sarebbe possibile eseguire due sistemi operativi contemporaneamente senza alcun tipo di virtualizzazione. Sarebbe simile a due sistemi operativi che utilizzano il multitasking cooperativo . Naturalmente, il multitasking cooperativo è stato quasi abbandonato a causa del problema delle applicazioni scritte male che si rifiutano di cedere il controllo. Forse due sistemi operativi scritti correttamente funzionerebbero bene. Quindi di nuovo quale sarebbe l'incentivo?


1

Consentitemi di affrontare la parte "perché".

Uno dei motivi di un sistema operativo moderno è consentire l'esecuzione di più programmi (processi) contemporaneamente su un sistema. Se vuoi farlo in modo sicuro, deve accadere quanto segue:

  • Probabilmente (a meno che tu non abbia esigenze particolari) non vuoi dividere la RAM nel sistema in modo fisso - ad esempio 256 MB fissi per processo - ti limita a 8 processi in un sistema da 2 GB. Vorresti che ogni processo fosse in grado di "chiedere" memoria e restituirlo quando è finito.

  • Inoltre, non si desidera suddividere i dispositivi I / O in modo fisso tra i dispositivi. In genere si desidera che parte o tutto l'hardware, come la memoria, sia una risorsa condivisa, o almeno temporaneamente solo esclusiva per processi specifici in momenti specifici. Ciò richiede che tutti i processi non provino a eseguire l'I / O da soli, ma "esaminino" qualcosa per pianificare e coordinare l'I / O. La pianificazione è importante poiché la maggior parte degli I / O è molto più lenta della CPU, quindi puoi far funzionare la CPU per altri processi mentre è in attesa sull'I / O anche su un sistema single-core.

Per fare quanto sopra, è necessario sfruttare diverse funzionalità hardware della CPU. Uno di questi è la MMU, l'altro è la modalità protetta. Due sistemi operativi potrebbero condividere queste funzionalità hardware in modo cooperativo per eseguire due o più sistemi operativi?

Certo, ma non c'è nulla nell'hardware in grado di impedire a un sistema operativo di calpestare tutta la memoria degli altri sistemi operativi. Se la CPU è in modalità kernel (ha solo una modalità kernel), qualsiasi codice può fare qualsiasi cosa. È possibile al 100% che il codice di un sistema operativo venga eseguito su codice o dati dell'altro sistema operativo. E sappiamo che i sistemi operativi hanno avuto vulnerabilità in passato e ne avremo di più in futuro. Quindi è molto male per la sicurezza.

Ora, non sarebbe bello se potessi mettere un altro "livello" su questo e avere quel supporto hardware necessario per più sistemi operativi? Questo è esattamente ciò che fanno le funzionalità di virtualizzazione dell'hardware, mettono una barriera hardware tra più sistemi operativi in ​​esecuzione e c'è una "interfaccia" di alto livello per loro chiamata hypervisor. Puoi avere un solo hypervisor. E sì, i processi in esecuzione su entrambi i sistemi operativi devono passare attraverso tre livelli per eseguire I / O (processo - kernel locale - hypervisor)


0

So che non hai detto virtualizzazione, ma qualcosa come il server MS Hyper V potrebbe soddisfare le tue esigenze


Hyper-V richiederebbe un secondo computer per fungere da server. Se avessi una seconda macchina così potente, la posizionerei accanto all'altra mia torre e le avvierei entrambe con sistemi operativi diversi :). Inoltre, da quello che ho capito, l'installazione sarebbe costata non meno di $ 2k.
James Hill,

Penso che tu possa eseguire Hyper V su una singola macchina ..
Akash

2
la V in hyper-v è per la virtualizzazione. se il vincolo non è virtualizzazione, hyper-v non è una soluzione.
Jay R. Wren,

0

Non c'è altro modo che la virtualizzazione. Trovo difficile ottenere informazioni definitive su quali sistemi guest funzioneranno per i diversi hypervisor. http://en.wikipedia.org/wiki/Hypervisor Dovrebbe essere un buon inizio per ottenere alcune informazioni e Xen potrebbe valere la pena provare, anche se aspetterei che qualcuno confermi o smentisca definitivamente se supporta gli ospiti di Windows 7.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.