Hoy estaba leyendo algunas noticias ( 1 , 2 , 3 , 4 ) sobre Microsoft Windows 8 y vi que una de las nuevas características es que puede ejecutarse en un sistema basado en un procesador ARM . Esto me hace preguntarme las razones por las que no se puede hacer con la versión de lanzamiento actual de Windows (Seven).
¿Cuáles son las limitaciones reales de Windows 7 para tener en cuenta instalarlo en un sistema basado en un procesador ARM? ¿Tendría que ver con la versión del kernel, los controladores, la arquitectura o incluso una combinación de estos factores?
Hasta que lo sepa, puedo instalar Linux en un ARM, por lo que ni siquiera puedo instalar Windows Seven en una máquina virtual VMWare en un ARM.
Respuestas:
Para que los binarios se ejecuten en un procesador ARM, deben compilarse específicamente para ese procesador o ejecutarse en un emulador.
Dado que los sistemas Linux son de código abierto, las personas pueden compilarlos específicamente para sistemas ARM y reescribir cualquier código específico de x86. Debido a que la fuente para Windows está cerrada, a menos que Microsoft lance una versión ARM, no se puede volver a compilar y ejecutar en ella.
Hay otros problemas al pasar a los sistemas ARM, pero este es probablemente el mayor.
Hasta donde yo sé, VMware no emulará un x86. Creo que qemu puede, pero no lo he usado para ARM emulando x86 antes, solo x86 emulando ARM. Habrá un impacto significativo en el rendimiento si funciona.
Si bien cualquier programa debe compilarse para la arquitectura en la que está destinado a ejecutarse, un sistema operativo a menudo necesita estar mucho más personalizado para la arquitectura específica. Los sistemas operativos son responsables de cosas como la programación y el cambio de tareas, que funcionan con el procesador a niveles muy profundos.
fuente
La respuesta simple es "MS no ha lanzado un puerto" (aunque se supone que Windows 8 está portado a ARM), simplemente porque no tenía sentido comercial en ese momento. Si quieres entrar, si la EM podría ...
Bueno, históricamente, la familia NT se ha ejecutado en una gama de procesadores: NT se ejecutó en Alpha, PPC y MIPS, y había puertos planificados para las arquitecturas Clipper y SPARC. Esto es posible porque Windows NT extrajo las partes dependientes del hardware del código (el HAL ) y reescribió solo esa sección y recompilar todo lo demás debería funcionar (aunque en teoría el software basado en .NET es supuestamente independiente del hardware).
A diferencia de Linux, que, si recuerdo correctamente, tiene ramas de kernel separadas para cada arquitectura, supuestamente SOLO el HAL es específico del hardware, y el resto es común: creo que una vez que se creó un HAL para la plataforma ARM en cuestión, debería ser relativamente trivial, y no es diferente de la codificación de varios bits de hardware, especialmente si el sistema era convencional, por ejemplo, utilizando PCI-E y otras interfaces estándar de la industria.
Suponiendo que Microsoft lanzó un puerto ARM de Windows 7, cualquier software que no se interprete o se ejecute en una máquina virtual como JVM, LLVM o CLR necesitaría volver a compilarse o ejecutarse en una capa de traducción, como Rosetta o la antigua compatibilidad de 68K. capa en equipos Mac más antiguos , que conoce el código específico x86 (y lo ejecuta en emulación de forma transparente), y hay suficiente potencia de procesador para la traducción.
fuente
No puede ejecutar binarios en procesadores que tengan una arquitectura diferente a la arquitectura en la que se compilaron los binarios.
No puede ejecutar un Linux AMD64 en ARM, del mismo modo que no puede ejecutar Linux AMD64 en un procesador i386 (32 bits). Sus únicas opciones son emular un procesador completo (ver qemu ) y luego intentarlo lo mejor posible.
VMware / VirtualBox no son emuladores de procesador, por lo tanto, tampoco tiene suerte.
fuente