Windows 7をARMプロセッサベースのシステムにインストールできないのはなぜですか?


12

今日、私はいくつかのニュース(読んでいた1234の新機能の一つは、それが上で実行できるということであることをMicrosoft Windowsの8とのこぎり程度)ARMプロセッサベースのシステムを。これは、現在のリリースバージョンのWindows(Seven)では実行できない理由を疑問に思います。

ARMプロセッサベースのシステムにWindows 7をインストールする際に注意すべきWindows 7の実際の制限は何ですか?カーネルのバージョン、ドライバー、アーキテクチャ、さらにはこれらの要因の混合物に関係するでしょうか?

私が知るまで、ARMにLinuxをインストールできるので、ARM上のVMWare仮想マシンの下にWindows Sevenをインストールすることさえできませんか?


1
Windows 8はARMで実行される予定です。windows8news.com/2011/01/05/...
JSBձոգչ

1
あなたはできる ARMオペレーティングシステムで実行中の仮想マシンにWindows 7をインストールします。ARM上で実行され、x86ゲストを実行できる仮想マシンプログラムを見つける必要があります。
ブレークスルー

回答:


30

バイナリをARMプロセッサで実行するには、そのプロセッサ専用にコンパイルするか、エミュレータで実行する必要があります。

Linuxシステムはオープンソースであるため、人々はARMシステム専用にそれらをコンパイルし、x86固有のコードを書き換えることができます。Windowsのソースは閉じているため、MicrosoftがARMバージョンをリリースしない限り、再コンパイルして実行することはできません。

ARMシステムへの移行には他にも問題がありますが、これはおそらく最大の問題です。

私の知る限り、VMwareはx86をエミュレートしません。qemuはできると思うが、x86をエミュレートする前にx86をエミュレートするために使用したことはない。機能する場合、パフォーマンスが大幅に低下します。

すべてのプログラムは、実行対象のアーキテクチャ用にコンパイルする必要がありますが、多くの場合、オペレーティングシステムは特定のアーキテクチャに合わせてはるかにカスタマイズする必要があります。オペレーティングシステムは、スケジューリングやタスクの切り替えなど、非常に深いレベルでプロセッサと連携するものを担当します。


8
ルールとして-あなたが最初の文の単語を除去することにより、「ARM」を一般化し、まだ真の声明を持つことができることを注意バイナリは常にどちらかの彼らは上で実行しているアーキテクチャ用にコンパイルする必要がある、または他のエミュレータまたはインタプリタ層を持っています
新井

4
@jhulst私はqemuを使用してPowerPCでx86をエミュレートしましたが、非常に遅いです。
Cajunluke

おそらくVPC(MSが購入)は、動的な再コンパイルによりPPCでx86を適切に実行しました。確かに、これは何年も前のことで、実際に自分で試したことはありません。QEMUは、移植性のIMO以外は恐ろしいです。カーネルフックを必要としないなど、非常にうまく機能しますが、非効率的です。
ジャーニーマンオタク

ARMホストプラットフォームへのこのQEMUポートはあまり主流に見えず、他に見つけることができませんでした。
RedGrittyBrick

また、特にARMシステムに限定された独自のデバイスでは、デバイスドライバーも問題になります。
-CarlF

8

簡単な答えは、「MSは移植版をリリースしていません」(Windows 8はARMに移植されることになっていますが)、単にその時点ではビジネス上意味がありませんでした。あなたが入りたいなら、MSができるなら...

さて、歴史的に、NTファミリはさまざまなプロセッサで実行されてきました。NTはAlpha、PPC、およびMIPSで実行され、ClipperおよびSPARCアーキテクチャ用に計画されたポートがありました。これは、Windows NTがコードのハードウェア依存部分(HAL)を抽象化し、そのセクションだけを書き直し、他のすべてを再コンパイルすればうまくいくためです(理論上、.NETベースのソフトウェアはハードウェアに依存しないと思われます)。

Linuxとは異なり、リコールした場合、各アーキテクチャごとに別々のカーネルブランチがあり、おそらくHALはハードウェア固有であり、残りは一般的です。問題のARMプラットフォーム用のHALが作成されたら、比較的些細なことであり、特にPCI-Eや他の業界標準のインターフェイスを使用するなど、システムが従来型だった場合は特に、ハードウェアのさまざまなビットのコーディングと違いはありません。

MicrosoftがWindows 7のARMポートをリリースしたと仮定すると、JVM、LLVM、CLRなどのVMで解釈または実行されないソフトウェアは、Rosetta古い68K互換性などの翻訳レイヤーで再コンパイルまたは実行する必要があります古いMac上の層のx86固有のコードを認識だ、(エミュレーション透過的にすることを実行)、および翻訳のための十分なプロセッサパワーがあります。


.NETソフトウェアは、ほとんどの主要なオペレーティングシステムで実行される.NETプログラム用のオープンソースコンパイラ/ランタイムであるMonoを使用して、ほぼすべての主要なアーキテクチャで実行できます。もちろん、これは元の質問とは直接関係ありません。
CarlF

うーん、ダメ。「ソフトウェアを再コンパイルする必要がある」部分に関連します。CLRはプラットフォームに依存しない可能性があり、インストール時に.netコードが最適化/コンパイルされると信じています。私は完全にモノを忘れてしまった、残念ながら、バックグラウンドで静かに動作しますそれらのもののその1; P
ジャーニーマンオタク

@CarlFの注意点は、P / Invokeを使用してwin32バイナリにアクセスできないことです。必要な瞬間に、クロスプラットフォームのサポートを失います。これは、.Netフレームワークが成長したときほど問題ではありません。ただし、アプリがサードパーティシステムと緊密に連携する必要がある場合は、ネイティブコードがかなり一般的になります。
ダンは、ファイヤーライト

2

バイナリのコンパイル先のアーキテクチャとは異なるアーキテクチャのプロセッサでバイナリを実行することはできません。

i386(32ビット)プロセッサーでAMD64 linuxを実行できないのと同様に、ARMでAMD64 Linuxを実行することはできません。唯一の選択肢は、プロセッサ全体をエミュレートすること(qemuを参照)してからベストを尽くすことです。

VMware / VirtualBoxはプロセッサエミュレータではないため、同様に不運です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.