「QEMU」カテゴリーアーカイブ

Intel CPUで16bitと32bitのモードが廃止

Intel CPUで16bitと32bitのモードが廃止されるという記事が出ていました。

Intel、新「X86-S」アーキテクチャで8086互換を切り捨て

新しい仕様は、X86-Sアーキテクチャと言うそうです。

パソコンがブートすると、いきなり64bitのモードに入って、32bitはアプリケーションのためにCompatibility modeのみ残るそうです。

長く親しんだモードがなくなるのは寂しいですね。

実際の製品になるのはいつになるのでしょうか。

QEMUを使ってMacでARM版Windows 10を動かすことに成功したそうです

QEMUとAppleのHypervisorフレームワークを使って、MacでARM版Windows 10を動かすことに成功したそうです。

Twitterの投稿

パッチも公開されていて、誰でも試すことができるようになっています。

Patchwork

Apple M1というCPUを使ったMacBook ProやMac miniが発売されましたね。Apple M1は、Appleが開発したARMアーキテクチャのCPUです。

Intelのx86_64というアーキテクチャとは違うため、これまでのソフトウェアが使えないという問題があります。

そのため、x86_64のソフトウェアを使うためには、エミュレーションを使う必要があります。

Appleは、Rosetta 2というエミュレーターを用意して対処しようとしているわけですが、それではVMwareやVirtualBoxといった仮想化ソフトが動かないという問題がありました。

仮想化ソフトの問題に対しては、AppleはHypervisorフレームワークというものを用意して、必要があれば使ってくださいという方針でいます。

これを使うと、ARM版Macでは、ARM版のゲストOSが使えるようになります。

今回は、Hypervisorフレームワークを使って、QEMUという仮想化ソフトを動かしたというものです。その上で、ARM版のWindows 10を実行しています。

ARM版Windows 10は、Windows Insider Programのものを使っているようです。

Appleの人は、MacのパソコンでWindowsが使えるかどうかは、Microsoft次第だと言っています。ただ、MicrosoftはARM版のWindows 10を自社のSurface Pro Xで使えるのみで、Macで使えるかどうかについては言及していません。

今後、一般の人が、ARM版のMacでWindowsが使えるかどうかはわかりません。

ARM版Windows 10は、11月にx86_64のプログラムのエミュレーションに対応すると聞いています。普通のWindows用のプログラムが実行できそうですね。パフォーマンスが気になります。

ARM用のDockerイメージをQEMUを使って作る

ARM用のDockerイメージを作る時に、QEMUのqemu-user-staticを使ってCPUエミュレーションを行う方法が紹介されています。

Jetson 上で Docker イメージをビルドするのが辛かったので EC2 上にビルド環境を作った

ARM用のバイナリを作る時に、ARM上のシステムでは時間がかかって仕方ないため、x86_64上のシステムで作ってしまおうということですね。

エミュレーションでどれくらいのスピードが出るのか使ったことがないのでわかりませんが、ARMネイティブで作るよりはいいみたいですね。

最近のQEMUをWindowsで作ってみた

QEMUをWindowsで作るには、MSYS2という環境を使うわけです。msys2-x86_64-20161025.exeというのを使って作ったMSYS2で、去年QEMUを作ろうとしたらエラーで作ることもできずそのままになっていました。

そこで、ちょっと本腰を入れて作ってみました。

エラーは、export dashlessという表示がされるエラーなのですが、調べてみるとMSYS2のエラーのようです。

そこで、pacman -Syuでパッケージを全部アップデートして対処しました。このエラーは出なくなりました。

ところが、capstone.libをmakeするルールがありません、というエラーが出ます。仕方ないのでconfigureに--disable-capstoneをつけて対処しました。

すると、めでたくQEMUを作ることができました。

こんな感じのconfigureです。

./configure --target-list=x86_64-softmmu --python=/usr/bin/python2 --disable-capstone

Python2については、MSYSのものを使ったので指定しています。capstone.libはMinGW64の問題のようでメーリングリストにも出ていましたが、使わないように指定するしか今のところ対処の方法はなかったです。あとtexinfoの警告が出ていますが、MSYS2の問題です。

簡単ですが、何かの参考になれば。

IntelのHardware Accelerated Execution Managerがオープンソースになっていた

スマホのAndroidのプログラム開発で、アクセラレーターとして使われているIntel Hardware Accelerated Execution Manager(HAXM)ですが、QEMUでも使えるようになっています。Windowsホストでアクセラレートできるのがいいですね。

これが、昨年2017年の11月にオープンソースになって公開されていました。QEMUのメーリングリストにはメールが出されていました。気づかなかった。

ライセンスは、BSD 3-Clause Licenseです。

作るには、Enterprise WDK 10かVisualStudioとSDK、WDKを使うようになっています。

ソースコードを見てみたのですが、自分が少しプログラムとは離れていたせいで、読めなくなっていました。どうしましょ。

ともあれ、ソースコードが公開されたことは今後にとって良かったのではないでしょうか。

QEMUでHAXMを使う手順が次のところに載っています。

Accelerating QEMU on Windows with HAXM

興味がある方はお試しください。

QEMUのWindowsホストでのHyper-Vのサポート

先月のQEMUのメーリングリストで、WindowsホストでアクセラレーターのHyper-Vを使えるようにするパッチが投稿されました。パッチを見てみると、なんとMicrosoftの人が作っています。Microsoftの人がGPLv2のソースコードを提供するなんてことは一昔前には考えられないことですね。

以前、インテルのアクセラレーターを使えるようになるパッチが取り込まれました。

今回これが動くと、特別にアクセラレーターをインストールしなくてもQEMUが速く動くのでいいですね。

メーリングリストではどのバージョンのWindows 10でも動くといっていますが、Hyper-VはWindows 10 Professionalでしか使えないことになっていますね。どちらが正しいのでしょう。

それと、Windows 10 Insider Previewというバージョンでしか動かないようです。次のWindows 10のアップデートで動くということでしょうか。

アクセラレーターはWindows Hypervisor Platform acceleratorという名前で、2月の初めにはソースコードがマージされています。

バイナリを作ろうとしたら、なんかエラーが出て試せていませんが、興味のある方は試してみてはいかがでしょうか。

ARM版Windows 10のバイナリトランスレーション

ARM版のWindows 10が発表されましたね。興味深いのは、ARM版でも、x86版のソフトウェアが動くことです。どうやっているかというと、x86版のソフトをバイナリトランスレーションして、ARMの命令に変換して動かしているのです。

明らかになってきたArm版Windows 10の課題とそのメリット

QEMUでやっていることと同じなので、どれくらい速度が出るのか気になるところです。記事を読むと、Win32のシステムコールにトランスレートした後、呼び出すDLLはネイティブの物を使うようです。この辺が、全部トランスレートして動かすQEMUと違うところでしょうか。サポートするのも32ビットのバイナリのみで、64ビットのソフトは動かないようです。Officeの32ビットが動けばいいやという感じでしょうか。

Intelが自社のチップのスマホで、ARM版のバイナリをx86の命令にトランスレートして動作させていますが、それとは全く逆のことをやっていますね。

Snapdragon 835だと、Cherry TrailとCore i3の間くらいの速度だそうです。あまり速度は気にならないような使い方がメインなのでしょうか。

動作速度より長時間使えることの方が、大切なのかもしれません。

来年には、Snapdragon 845が出るそうですから、そちらの方がいいような気がします。

ともあれ、実際に出てきたときはそれほど高いものにならないといいなと思います。

QEMUのIntel Hardware Accelerated Execution Managerのサポート

スマホのアプリ開発では、Android SDKが使われます。このSDKの中でQEMUがエミュレーターとして使われています。Intelから、このQEMUを補助するドライバとしてHardware Accelerated Execution Manager(Intel HAXM)というアクセラレーターが提供されています。

動作する条件は、2つあります。1つは、パソコンの開発環境がIntelのCPU上であること。2つめは、エミュレートするAndroidは、Intelのチップ上で動くx86用のAndroidであることです。

WindowsとMac OS用に以下の場所でデバイスドライバーが提供されています。

IntelR Hardware Accelerated Execution Manager (Intel HAXM)

自分もAndroid SDKを動かしてみたことがあります。やはり素のQEMUよりアクセラレーターがあったほうがアプリもきびきび動いてよいです。

このデバイスドライバーを使うパッチがメーリングリストに投稿されました。2017年の4月ごろに予定されているQEMUの次のバージョン2.9.0でサポートされるようになるようです。

Linux上ではKVMがありましたが、WindowsやMac OS上でアクセラレーターがなかったので動くとうれしいですね。

QEMU/KVMでセキュアブート

QEMU/KVMでセキュアブートを利用する方法が紹介されています。

第446回 QEMU/KVMでセキュアブートを利用する

セキュアブートを実現するには、3つも鍵が必要なんですね。公開鍵と秘密鍵を作って、それを利用して鍵をNVRAM領域に書き込む必要があるそうです。

少し手間がかかります。QEMUを使って体験してみると、セキュアブートの理解が進んでいいのではないでしょうか。