※RTMのリリースが間近になり、プレビュー版の提供は停止中らしい。
qemuのlahf_lm の設定を有効にすると、KVMでWindows10が動くらしい。
「Load AH from Flags (LAHF) and Store AH into Flags (SAHF) in long mode」の略で、AMDの64ビット命令のLAHF、SAHFが、古いINTELのCPUの64ビット命令(EM64T)には無かったが後にEM64Tに追加されたので、これらの命令の実装の有無を区別するためのフラグらしい。多分、INTELのARKのページでVT-xがYESになっているCPUなら良いのだろう。
なぜVM用の命令が必要なのかは不明だが、インストール時に必要なら、中でHyper-Vが使えるハズなので、古いWindowsの環境のHDDが残っていれば、うっかりバックアップを忘れたメーラーのデータ(大抵はトンデモナイところに保存されているので中々見つからない)などをコピーできるハズなので、大助かりのハズだ。
/etc/libvirt/qemu/****.xml に
<cpu mode='custom' match='exact'>
<model fallback='allow'>kvm64</model>
<feature policy='require' name='lahf_lm'/>
</cpu>
と追加されればなんとかなるらしい。
qemu のコマンドラインなら
-cpu kvm64,+lahf_lm
とすればいいらしい。
が、Windowsのインストール直後に【困った顔】が出たゲストの設定にコレを付けても、ブートローダすらインストされていないから無理だろう。virsh undefineしディスクイメージも消して再インストールするしかない。
で、virt-installの設定に
–cpu kvm64,+lahf_lm
を付け足してやると/etc/libvirt/qemu/*****.xmlに
<cpu mode='custom' match='exact'> <model fallback='allow'>kvm64</model> <feature policy='force' name='lahf_lm'/> </cpu>
な風に設定される。
とりあえず困った顔のマークは出なくなった。
Thanks!
インスト手順
- 記事の後ろの方のスクリプトを用意し、赤字部分は必要に応じて修正する。
- SPICEクライアントを立ち上げ IPアドレスはKVMホストのIPアドレスを入力しておく。
- 1のスクリリプトを実行。
- 仮想マシンのインストールが進行中です。と表示されたら、手早く
- virsh dumpxml VMゲスト名 | grep spice | grep port
- とコマンドを入力しSPICEのポート番号を調べ、できるだけ早くSPICEクライアントに入力し接続する。
- インストール時間が結構長いが放置しないこと。
- 中のWindowsが再起動するとSPICEクライアントの接続も切れるのですぐに再接続する。
※SPICEのport指定するとTLS接続の扱いになってしまうので今回は外しました。
代わりにコマンドを打って確認。
# virsh dumpxml VMゲスト名 | grep spice|grep port
<graphics type=’spice’ port=’5900‘ autoport=’yes’ listen=’0.0.0.0′>
この例では5900に設定されている。
※ディスク20GBではインストールが終わらない?みたいなので32GBに変更した
- でもインスト後の使用量は10GB+αだった。※プレビュー版なので製品版になったら多少は増えるだろう。
※virt-topではCPU40%だが、普通のtopでは123%。J1900のCPU1コアでは無理っぽい。
※ディスクを増やしても–vcpus=1では「お待ちください…」がさっぱり進まないので2に変えるとインストールが進むようになった。
ブログ鯖で egrep model /proc/cpuinfo を観るとmodelが13だったので、ホストと同じCPUを指定すると
<vcpu placement='static'>1</vcpu>の後に<cpu mode='host-passthrough'/>
を付ける
# egrep model /proc/cpuinfo
model : 55
model name : Intel(R) Celeron(R) CPU J1900 @ 1.99GHz
に変わったので、
–cpu host-passthrough,+lahf_lm \
にしてみた。
多少効果はあるかもしれない。
というか、
–cpu host-passthrough \
にしておけばlahf_lmも自動的に有効なのかな?manコマンドにこれらオプションの記載は無く、オプションの書き方だけが書いてあるのでネット情報が全てな様だ。kvmもlibvirtもqemuなどのパッケージを口当たりが良い様にまとめたフロントエンドでしかないのかな?いつのまにかヘルプや参照先に載っている情報が古く(Core2Duo全盛期)なってしまった様だ。-lahf_lm的な記載もその当時の状況を反映したものなのだろう。よく安定して動作するものだなぁ~と感心しつつ、LinuxのパッケージもWindowsっぽくなっていくんだな・・・とも思えた。
※でもWindowsのCPU表示にはちゃんとJ1900と表示された。
※調整したもののWindows 10のインストールの「簡易設定」の「お待ちください…」は長いまま。
やっと
「こんにちは」が出てきた。
そして
「しばらくお待ちください」
しばらくが付いた!
「最後の処理をしています」
ほ、本当か?
「PCの電源を切らないでください」
待つしかない・・・
「あと少しです」
待つしかない・・・
「通常より時間がかかっていますが、まもなく準備を完了します」
SPICEクライアントの設定ミスか?ちょっと文字が裏返って表示されたり変な感じ。
待つしかない・・・
「さぁ始めましょう」
MRTGをみてみると
J1900のコアが50℃まで上がってた。
インスト中はCPU負荷がほぼ100%。
通信量は最大で320KB/秒と並。br0の限界?
このせいで「お待ちください…」が長かったのかもしれない。
とりあえずJ1900にはお疲れ様。
やっと窓から光が・・・
※画像はSPICEクライアントでインサイド・プレビュー(Build.10162)のデスクトップを表示したものです。
インストの後、暫くすると46℃まで下がった。
Windows自体のCPU負荷はそう大きく無いようだ。
とは云え、J1900にKVMのホストさせゲストにWindowsを入れSPICEクライアントで覗いているんだから・・・
- 動画鑑賞は無理そう。
- マウスの反応は遅い。
- サウンドはバリバリ。
なのは仕方が無い。
やはりJ1900にはブログ鯖が限界のようだ。
Windows 10のインストールはCPUのパワーが結構必要らしく、virt-installのパラメータをちゃんと調整しないとインストすらまともにできない様だ。
KVMゲストでもVT-xを使える設定になったハズなので・・・
しかしHyper-Vが見当たらない。
Windows8.xでは【プログラムと機能】⇒【Windowsの機能の有効化または無効化】の中にあったんだけど、
【Windowsの機能の有効化または無効化】すら見つからない。
探し方が悪いのかな?
ただでさえパワー不足でUI操作がモタついている状況なのに、KVMの中でHyper-Vするつもりはないけどね。
それとも
まだ設定が足りない
のだろうか?
ps.
アップデートを入れたらBuild 10162の表示が消えた。
ここ最近のゲームのCMでよく目にするのは【進化】と云う言葉、バージョンアップのことなのかな?
以下インストールに成功したスクリプト。※赤い文字部分は要確認。
#ISOイメージのパス指定 ※qemuユーザのアクセス制限で/tmp以外に置くと読み込みに失敗する。
ISOIMG=/tmp/Windows10_InsiderPreview_x64_JA-JP_10162.iso
#KVM上での名前を指定 IMAGE_NAME=Win10ip # VIRTUAL DISK FILEPATH IMG_PATH=/var/lib/libvirt/images # USE MEMORY SIZE (MB) RAM=3096 # VIRTUAL DISK SIZE (GB) DISK=32 virt-install \ --name ${IMAGE_NAME} \ --ram ${RAM} \ --disk path=${IMG_PATH}/${IMAGE_NAME}.qcow2,size=${DISK},format=qcow2 \ --vcpus=2 \ --os-type windows \ --cpu host-passthrough,+lahf_lm \ --os-variant=win7 \ --network bridge=br0 \ --accelerate \ --graphics spice,listen=0.0.0.0 --channel spicevmc \ --video qxl \ --cdrom ${ISOIMG}