¿Es posible iniciar dos sistemas operativos al mismo tiempo?
Por ejemplo : actualmente estoy iniciando dual Ubuntu 11.04 y Windows 7. Ubuntu se está ejecutando en un solo disco duro de 500 gb, Windows 7 se está ejecutando en 1TB RAID 1 espejo. Para cambiar entre los dos sistemas operativos, se requiere un reinicio. ¿Es posible cambiar entre los dos sistemas operativos sin reiniciar?
NOTA : Soy plenamente consciente de las capacidades de VirtualBox y VMWare Player: uso ambas. Por favor, no responda "¡Use la virtualización!"
EDITAR: Si esto no es posible, ¿puede compartir por qué no es posible? Para mí, no parece que sea tan difícil. ¡Tenga en cuenta que mi visión no está afectada por el conocimiento!
windows-7
ubuntu
multi-boot
James Hill
fuente
fuente
Respuestas:
La mayoría, si no todos, los sistemas operativos convencionales esperan tener acceso exclusivo a la funcionalidad de bajo nivel de la computadora host (por ejemplo: hardware, puertos, etc.) y no tienen ningún concepto de compartir con nada más, simplemente no funcionará. Por lo tanto, intentar ejecutar dos sistemas operativos simultáneamente en el mismo sistema requiere algún tipo de árbitro transparente para proteger los sistemas operativos entre sí, en otras palabras, una aplicación de virtualización.
fuente
Parece que está descartando Hyper-V y Xen (los llamados hipervisores "de metal desnudo") a pesar de que están más cerca de lo que parece estar pidiendo. Sí, es virtualización, pero no de la misma manera que funciona VirtualBox.
Imagine que algo como VirtualBox era su propio sistema operativo, por lo que podría instalar un pequeño SO VirtualBox y luego ejecutar Windows y Ubuntu lado a lado como máquinas virtuales en la parte superior del SO VirtualBox. Bueno, eso es esencialmente lo que hacen Hyper-V o Xen. Es solo una delgada capa de virtualización entre el hardware y los sistemas operativos invitados, y está lo más cerca posible de ejecutarlos directamente junto con el hardware y los sistemas operativos existentes.
Usted no necesita un servidor independiente para ninguno de estos, usted acaba de instalar el hipervisor como si fuera el primer sistema operativo de la máquina, y luego agrega Windows y Ubuntu como máquinas virtuales bajo el hipervisor.
Tanto Xen como Hyper-V ejecutarán Ubuntu y Windows como sistemas operativos invitados, aunque puede que no sea una configuración compatible. Xen es más Linuxy e Hyper-V es un producto de MS, por lo que sugeriría elegir el hipervisor según el sistema operativo con el que se sienta más cómodo.
fuente
Lo más cercano que podrías hacer ... es hacer uso de la hibernación. Desafortunadamente, los sistemas operativos son lo suficientemente extraños entre sí que no hay forma de que ambos SO se ejecuten al mismo tiempo sin implementar la virtualización. Honestamente, la virtualización ya no es tan mala como piensas ... especialmente cuando estás usando una plataforma de virtualización que admite las extensiones "VT". Los sistemas operativos invitados tienen la capacidad de comunicarse directamente con el hardware y tienen un mapeo de memoria mucho mejor. De hecho, he configurado un sistema operativo invitado instalado directamente en un SSD ... y se ejecutó más rápido que el sistema operativo host.
fuente
Aquí está la razón simple y breve por la que la respuesta es 'no': ¿Qué software controlaría su hardware?
Si OS 1 lo hace, entonces no está ejecutando OS 2. Si OS 2 lo hace, entonces no está ejecutando OS 1. Si ambos lo hacen, entonces algún otro software tendría que mediar su acceso compartido al hardware físico. , y eso es virtualización (que descartó).
fuente
Las cosas que vienen a la mente son:
- Administración de memoria (ram y caché)
- Administración de procesos (subprocesos en ejecución)
Por lo tanto, es probable que necesite un hombre en el medio haciendo malabares con el uso de la memoria y los procesos entre los dos sistemas operativos.
Ese sería otro sistema operativo / firmware.
Entonces, si alguien lo ha implementado o lo implementará, puede terminar con 3 en lugar de 2 Oss ejecutándose simultáneamente
EDITAR:
agregando lo que escribió linker3000: gestión de puertos
Este 'hombre en el medio' se convertirá esencialmente en su sistema operativo host y los otros sistemas operativos virtualizados, lo que lo llevará de regreso a lo que ya sabía que era una solución
fuente
Todos los sistemas operativos que conozco exigen un control total del hardware de la computadora.
Sin embargo, es teóricamente posible. Ambos sistemas operativos deberían estar diseñados para:
Si se cumplen ambas condiciones, sería posible ejecutar dos sistemas operativos simultáneamente sin ningún tipo de virtualización. Sería similar a dos sistemas operativos que utilizan la multitarea cooperativa . Por supuesto, la multitarea cooperativa ha sido abandonada debido a la cuestión de las aplicaciones mal escritas que se niegan a ceder el control. Quizás dos sistemas operativos correctamente escritos jugarían bien. Entonces, de nuevo, ¿cuál sería el incentivo?
fuente
Permítanme abordar la parte del "por qué".
Una de las razones para un SO moderno es permitir que múltiples programas (procesos) se ejecuten al mismo tiempo en un sistema. Si desea hacer esto de manera segura, debe suceder lo siguiente:
Probablemente (a menos que tenga necesidades especiales) no quiera dividir la RAM en el sistema de manera fija, por ejemplo, 256 MB fijos por proceso, lo limita a 8 procesos en un sistema de 2 GB. Le gustaría que cada proceso pueda "pedir" memoria y devolverla cuando haya terminado.
Tampoco desea dividir los dispositivos de E / S de manera fija entre los dispositivos. Por lo general, desea que parte o todo el hardware, como la memoria, sea un recurso compartido, o al menos solo temporalmente exclusivo para procesos específicos en momentos específicos. Esto requiere que todos los procesos no intenten hacer E / S por su cuenta, sino que "atraviesen" algo para programar y coordinar las E / S. La programación es importante ya que la mayoría de E / S es mucho más lenta que la CPU, por lo que puede hacer que la CPU trabaje para otros procesos mientras espera E / S incluso en un sistema de un solo núcleo.
Para hacer lo correcto arriba, uno necesita aprovechar varias características de hardware de la CPU. Uno de ellos es la MMU, el otro es el modo protegido. ¿Podrían dos sistemas operativos compartir estas características de hardware de forma cooperativa para ejecutar dos o más sistemas operativos?
Claro, pero no hay nada en el hardware capaz de evitar que un sistema operativo pisotee la memoria de los demás sistemas operativos. Si la CPU está en modo kernel (solo tiene un modo kernel), cualquier código puede hacer cualquier cosa. Es 100% posible que el código de un sistema operativo se ejecute sobre el código o los datos del otro sistema operativo. Y sabemos que los sistemas operativos han tenido vulnerabilidades en el pasado y tendrán más en el futuro. Entonces es muy malo para la seguridad.
Ahora, ¿no sería genial si pudieras poner otra "capa" sobre esto y tener ese soporte de hardware necesario para múltiples sistemas operativos? Eso es exactamente lo que hacen las funciones de virtualización de hardware, ponen una barrera de hardware entre múltiples sistemas operativos en ejecución, y hay una "interfaz" de nivel superior para ellos llamada hipervisor. Solo puede tener un hipervisor. Y sí, los procesos que se ejecutan en cualquiera de los sistemas operativos deben pasar por tres capas para hacer E / S (proceso - núcleo local - hipervisor)
fuente
Sé que dijiste que no hay virtualización, pero algo como el servidor MS Hyper V puede satisfacer tus necesidades
fuente
No hay otra forma que la virtualización. Me resulta difícil obtener información definitiva sobre qué sistemas invitados funcionarán para los diferentes hipervisores. http://en.wikipedia.org/wiki/Hypervisor Debería ser un buen comienzo para obtener información y Xen podría valer la pena, aunque esperaría a que alguien confirme o niegue definitivamente si es compatible con los invitados de Windows 7.
fuente