Openstack上でWindows10のVMを起動する。(KVM上でWindows10のVMを起動する。)〜MacからWindowsへのRDP接続まで〜


「Openstack環境下でもWindowsが使いたい!」という事で、KVM上でWindows10VMを使える状態、Openstackで管理できる状態にします。

もくじ

  • virtを使ったWindows10仮想マシンのインストール
  • OpenstackへのWindows10仮想マシンの登録
  • 仮想マシンディスク容量の拡張
  • MacからWindow仮想マシンへのリモートデスクトップ接続

動作環境

  • ホストマシン: Ubuntu server 18.04
    • Openstack queens(Ubuntuリポジトリからのダウンロード)
  • ゲストマシン: Windows10

virtio-winをダウンロード

virtioは仮想化環境のためのI/Oフレームワークです。KVMでWindows10のVMを利用するために必要なのでインストールします。

以下のURLの下のほうにvirtio-win.isoのダウンロードリンクがありますので、ホストマシンにダウンロードしておきます。
StableとLatestがありますが、今回はStableを選択しました。

virtio-winのダウンロード
wget https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso

windows10.isoのダウンロード

以下からwindows10のisoファイルをダウンロードします。
https://www.microsoft.com/en-us/software-download/windows10ISO

wgetで取る方法が分からなかったので、一旦メインPCであるMacでダウンロードしてscpでUbuntuに送り込みました。

インストール用ディスクの作成


$ qemu-img create -f qcow2 ./empty-disk.qcow2 1G
Formatting './empty-disk.qcow2', fmt=qcow2 size=1073741824 cluster_size=65536 lazy_refcounts=off refcount_bits=16
$ qemu-img create -f qcow2 ./Windows10.qcow2 20G
Formatting './Windows10.qcow2', fmt=qcow2 size=21474836480 cluster_size=65536 lazy_refcounts=off refcount_bits=16

emptyディスクは後ほどwindows上でvirtioドライバをインストールする際に必要となります。

windowsのインストール

ダウンロードしたwindows10のファイル名はwindows10.iso
ダウンロードしたvirtio-winのファイル名はvirtio-win.iso
となったときのインストールコマンドは下記です。

余裕があればCPU, メモリは増やしたほうがインストールが早めに終わるかと思います。
後ほどvirtio-winドライバをインストールするemptyディスクにはbusのタイプとしてvirtioを選択します。
ここで、

  • 空のディスク
  • 仮想ネットワーク

をアタッチすることでwindowsにデバイスを認識させ、そのデバイスに対してvirtio-winドライバーをインストールします。

$ virt-install --connect qemu:///system --name Windows10 --ram 4096 --vcpus 8 --network bridge=virbr0,model=virtio --disk path=Windows10.qcow2,format=qcow2,device=disk,bus=ide --disk path=./windows10.iso,device=cdrom,bus=ide --disk path=./virtio-win.iso,device=cdrom,bus=ide --disk path=empty-disk.qcow2,format=qcow2,bus=virtio,cache=none --graphics vnc,port=5901,listen=0.0.0.0 --os-type windows --os-variant win10

ちなみに--os-variantで指定出来る値は以下のコマンドで確認できます。

osinfo-query os

以下のサイトを参考にしました。ありがとうございました。
参考:http://blog.bit-isle.jp/bird/2015/12/1104

Windows10 VMへアクセス

ここからはVMの画面にアクセスする必要があります。
手順は割愛しますが、

  • (メインPCがmacなので)XQuartzをインストール・起動し
  • sshで-Xコマンド付きでログイン
  • コマンドラインでvirt-managerを起動

という手順でUbuntuServer上のvirt-managerがメインPCで表示されるようにします。
virt-installコマンドで実行中のVMがvirt-managerに表示されますので、"Open"をクリックしてVM画面を表示します。

画面を開くとWindowsのインストール画面が出ますので、カスタムインストールとして進めましょう。

ちなみにWindowsのプロダクトキーは後から入れることもできるので、一旦「プロダクトキーがありません」を選択してインストール作業を進めることもできます。
OSはWindows10 Proを選択しました。ちなみにWindows10 Proでないとリモートデスクトップができないようです。
途中でリブートが入りますが、シャットダウンだけしてブートしない事がありました。
そのときは手動で立ち上げてください。

Windowsが起動したあと、デバイスマネージャーからvirtio-winのドライバをインストールします。

ほかのデバイスに表示される全てにvirtio-winドライバをインストールします。

CDドライブのEにvirtioが割り当てられていたため、選択しインストールします。


以上で、KVM上でWindows10を使うことができるようになりました。

OpenstackでWindows10 VMを管理する。

イメージのアップロード

インストールの際に利用したWindows10.qcow2イメージをopenstackにアップロードします。
10Gほどあったため、結構時間がかかりました。

openstack image create --file ./Windows10.qcow2 --disk-format qcow2 --public Windows10_Pro

ボリュームの作成

イメージからボリュームを作ってインスタンス起動します。
500Gのボリュームをつくりました。これも割と時間がかかります。

インスタンスの作成

ボリュームからインスタンスを起動します。

HorizonのVNCからもWindowsが起動できていることが認識できます。

IPアドレスの確認

Openstack上では192.168.11.102のIPが振られていますので、当然windowsVMにも同じIPが振られています。


ディスクの設定

インストール時につかったディスク(Windows10.qcow2)が20Gだったため、20GしかCドライブどして認識されていません。
500Gのボリュームで作成したため、480G未使用領域があります。これをCドライブに結合します。

ウインドウズボタンを右クリックして、"ディスクの管理"から実施します。

Cドライブに500Gが割り当てられました!

リモートデスクトップの設定

Windows側でリモートデスクトップ設定をオンにする。


セキュリティグループの設定を追加する。

RDPは3389のポートを使うので、3389を開放します。調べてみるとUDPの3389も使うようですが、とりあえずTCPの3389だけ開けて接続可能でした。

リモートデスクトップビューワーの設定

当方のメインPCがmacなので、macからwindowsへRDP接続する方法です。利用するソフトウェアが違うだけで実質同じことをするかと思います。
Microsoft製のビューアーがAppStoreにあるのでこれをダウンロードします。
2つ種類がありますが、どちらでもアクセス可能でした。

無事、リモートデスクトップ接続できました!