Dlaczego nie można zainstalować systemu Windows 7 w systemie opartym na procesorze ARM?

12

Dzisiaj czytałem wiadomości ( 1 , 2 , 3 , 4 ) na temat Microsoft Windows 8 i zobaczyłem, że jedną z nowych funkcji jest to, że może działać na systemie opartym na procesorze ARM . To sprawia, że ​​zastanawiam się, dlaczego nie można tego zrobić w bieżącej wersji systemu Windows (Seven).

Jakie są rzeczywiste ograniczenia systemu Windows 7, aby być świadomym jego instalacji w systemie opartym na procesorze ARM? Miałoby to związek z wersją jądra, sterownikami, architekturą, a nawet kombinacją tych czynników?

Dopóki się nie dowiem, mogę zainstalować Linuksa na ARM, więc nie mogę nawet zainstalować Windows Seven na maszynie wirtualnej VMWare na ARM?

Diogo
źródło
1
Należy pamiętać, że Windows 8 ma działać na ARM. windows8news.com/2011/01/05/…
JSB
1
Ty można zainstalować Windows 7 w uruchomionej maszyny wirtualnej w systemie operacyjnym ARM. Musisz tylko znaleźć program maszyny wirtualnej, który działa zarówno na ARM i jest w stanie uruchomić gościa x86.
Przełom

Odpowiedzi:

30

Aby pliki binarne działały na procesorze ARM, należy je skompilować specjalnie dla tego procesora lub uruchomić w emulatorze.

Ponieważ systemy Linux są oprogramowaniem typu open source, ludzie mogą je skompilować specjalnie dla systemów ARM i przepisać dowolny kod x86. Ponieważ źródło dla systemu Windows jest zamknięte, chyba że Microsoft wyda wersję ARM, nie można go ponownie skompilować i uruchomić na nim.

Istnieją inne problemy z przejściem na systemy ARM, ale jest to prawdopodobnie największy.

O ile mi wiadomo, VMware nie będzie emulować x86. Myślę, że qemu może, ale nie użyłem go wcześniej do emulacji AR86 x86, tylko emulację ARM x86. Jeśli to zadziała, nastąpi znaczny spadek wydajności.

Chociaż każdy program musi zostać skompilowany pod kątem architektury, na której ma być uruchomiony, system operacyjny często musi być znacznie bardziej dostosowany do konkretnej architektury. Systemy operacyjne są odpowiedzialne za planowanie i przełączanie zadań, które działają z procesorem na bardzo głębokich poziomach.

jhulst
źródło
8
Zauważ, że możesz uogólnić pierwsze zdanie, usuwając słowo „ARM” i nadal mieć prawdziwe zdanie - z reguły pliki binarne zawsze muszą być albo kompilowane dla architektury, na której działają, albo mieć warstwę emulatora lub interpretera .
Shinrai
4
@jhulst Użyłem qemu do emulacji x86 na PowerPC i tak, jest on niesamowicie wolny.
Cajunluke
Podobno VPC (który MS kupił) zrobił przyzwoicie x86 na PPC z dynamiczną rekompilacją. To prawda, to było wieki temu i nigdy tak naprawdę nie próbowałem tego. QEMU jest straszne inne niż przenośność IMO. Robi pewne rzeczy BARDZO dobrze (np. Nie potrzebuje haków jądra), ale jest nieefektywny.
Journeyman Geek
Ten port QEMU do platformy hosta ARM nie wygląda na główny nurt i nie mogłem znaleźć innych.
RedGrittyBrick
Problemem będą również sterowniki urządzeń, szczególnie w przypadku wszelkich unikalnych funkcji ograniczonych do systemów ARM.
CarlF,
8

Prosta odpowiedź brzmi: „MS nie wydało portu” (chociaż Windows 8 powinien być przeniesiony do ARM), po prostu dlatego, że nie miało to wtedy sensu biznesowego. Jeśli chcesz wejść, jeśli stwardnienie rozsiane mogłoby ...

Cóż, historycznie, rodzina NT działała na wielu procesorach - NT działał na Alpha, PPC i MIPS, i były planowane porty dla architektur Clipper i SPARC. Jest to możliwe, ponieważ system Windows NT wyodrębnił zależne od sprzętu części kodu ( HAL ), przepisując tylko tę sekcję i ponownie kompilując wszystko inne (choć teoretycznie oprogramowanie oparte na platformie .NET jest rzekomo niezależne od sprzętu).

W przeciwieństwie do Linuksa, który, jeśli dobrze pamiętam, ma osobne gałęzie jądra dla każdej architektury, podobno TYLKO HAL jest specyficzny dla sprzętu, a reszta jest powszechna - uważam, że po utworzeniu HAL dla omawianej platformy ARM powinien on być względnie trywialne i niczym nie różni się od kodowania różnych części sprzętu, szczególnie jeśli system byłby konwencjonalny inaczej, powiedzmy, przy użyciu PCI-E i innych standardowych interfejsów branżowych.

Zakładając, że Microsoft wydał port ARM systemu Windows 7, każde oprogramowanie, które nie jest interpretowane, lub działające na maszynie Wirtualnej, takiej jak JVM, LLVM lub CLR, wymagałoby ponownej kompilacji lub uruchomienia na warstwie tłumaczenia, takiej jak Rosetta lub stara kompatybilność z 68K warstwa na starszych komputerach Mac , która jest świadoma kodu specyficznego dla x86 (i uruchamia go w emulacji w sposób transparentny), i jest wystarczająca moc procesora do tłumaczenia.

Journeyman Geek
źródło
Oprogramowanie .NET może działać na prawie każdej dużej architekturze przy użyciu Mono, który jest kompilatorem / środowiskiem wykonawczym Open Source dla programów .NET, które działają w większości głównych systemów operacyjnych. Oczywiście nie ma to bezpośredniego związku z pierwotnym pytaniem.
CarlF,
Więc nie. Ma to znaczenie dla części, w której „oprogramowanie musiałoby zostać ponownie skompilowane”. Wierzę, że CLR jest potencjalnie niezależny od platformy i / lub kod .net jest zoptymalizowany / skompilowany podczas instalacji. Całkowicie zapomniałem o mono, niestety, jest to jedna z tych rzeczy, które działają cicho w tle; p
Journeyman Geek
@ CarlF zastrzeżeniem jest to, że nie można użyć P / Invoke, aby uzyskać dostęp do jakichkolwiek plików binarnych win32. W chwili, gdy musisz to zrobić, tracisz wsparcie dla wielu platform. Jest to mniejszy problem niż w miarę rozwoju frameworku .Net; ale jeśli aplikacja musi ściśle współpracować z dowolnymi systemami zewnętrznymi, kod macierzysty staje się dość powszechny.
Dan bawi się Firelight
2

Nie można uruchamiać plików binarnych na procesorach o innej architekturze niż architektura, do której zostały skompilowane pliki binarne.

Nie możesz uruchomić AMD64 Linux na ARM, tak samo jak nie możesz uruchomić AMD64 Linux na procesorze i386 (32-bit). Jedynymi opcjami są emulowanie całego procesora (patrz qemu ), a następnie spróbowanie jak najlepiej.

VMware / VirtualBox nie są emulatorami procesorów, dlatego też nie masz szczęścia.

akira
źródło