d.sunnyone.org
sunnyone.org

ページ

2015-10-22

UbuntuからローカルのLinux KVM上のWindowsにリモートデスクトップする環境を作る

今回は、Ubuntu DesktopにLinux KVMを構成し、その上にWindowsをインストールし、Desktopの側からリモートデスクトップ(RDP)で接続する環境を作る方法について。絵にするとこういう環境。



「普通Windows上にLinuxじゃないの?」と思うかもしれないが、 Windowsのリモートデスクトップは優秀なので、Windows上にVirtualBoxでLinux desktopを上げるよりは快適に使うことができるので、どちらも使いたい環境では個人的には気に入っている使い方である。

前提として、Ubuntu Desktop 14.04がセットアップされているものとする。なお、今となっては同じことGUIでもできるじゃん?と思う手順もあるが、動くなら全然そっちで構わないと思う。断片的に作業してる部分があるので、ちょっと足りてない話があるかも。

こだわらない手順ざっくり版

長くなってしまったので、なくてもいい部分を省いたざっくり手順を先に記載。ピンとこなければ、詳しくを参照。

  • Intel VT/AMD-VをBIOSで有効化 (詳しく)
  • sudo apt-get install qemu-system qemu-kvm libvirt-bin virt-manager (詳しく)
  • sudo virt-managerを実行し、localhostを右クリック→「新規」からVMをウィザードで追加 (詳しく:特にWindows10の場合)
  • VMにWindowsをインストールし、リモートデスクトップを構成。振られるIPを確認 (詳しく)
  • sudo apt-get install remmina-plugin-rdpし、remminaで「TLS」に設定してWindowsに接続 (詳しく)

ここからは、もう少し詳しい+やったら良いかもしれない手順。

初期設定

VMを作成する前に一度だけ必要になる作業。

BIOSの設定

KVMを使うので、Intel VT (Intel Virtualization Technology) のようなCPUの仮想化支援機能をBIOS上で有効にしておく。

ブリッジを構成する(必要であれば)

デフォルトのNATでは都合が悪い場合、VM用のネットワークを設定する。自分の環境ではホストNICを含むブリッジネットワークを作るのが便利なことが多いので、ホスト側にブリッジを構成してしまう。…と思っていたが、デフォルトで作成されるvirbr0 (192.168.122.0/24) のネットワークで十分かも。なお、後述の仮想マシンマネージャー(virt-manager)のGUIでも作れそうだが、やったことはない。

bridge-utilsパッケージをインストール。
sudo apt-get install bridge-utils

/etc/network/interfacesを例えば以下のように設定する。

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
        bridge_ports eth0
        address 192.168.1.X
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255
        gateway 192.168.1.254
 dns-nameservers 192.168.1.254

VMイメージ用のLVMの構成(お好みで)

VMのイメージはデフォルトでは/var/lib/libvirt/imagesに普通のファイルとして作られるので、ここの容量が十分にあれば別に使えるのだが、ファイルで取るよりLVMでブロックデバイスとして切り出してあげたほうが効率的と思うので、この構成を取るときはLVM用のパーティションを切ってLVM Volume Group vg0を作ることにしている。

ここでのパーティション構成はこういう形と想定する(本当は別ディスクにしたい)。


上記の前提のため、sda3をPV (Physical Volume)とし、それだけを含むvg0を作る。

$ sudo apt-get install lvm2
$ sudo pvcreate /dev/sda3
$ sudo vgcreate vg0 /dev/sda3

KVM関連ソフトウェアのインストール

qemu-kvm単体で使うのはさすがにしんどいので、libvirtを使って管理する。その管理用GUIであるところの仮想マシンマネージャー(virt-manager)も入れる。
$ sudo apt-get install qemu-system qemu-kvm libvirt-bin virt-manager

なお、Webで管理したい場合は「KVMの仮想マシンをWebブラウザから管理する」の記事を参照。

virt-managerを起動するときは
$ sudo virt-manager
とする。

仮想マシンマネージャー(virt-manager)からのストレージ・ネットワークの設定(お好みで)

virt-managerを起動し「localhost」をダブルクリックすると、ホストの設定画面がでてくる。ここで「仮想ネットワーク」「ストレージ」「ネットワークインタフェース」タブを選ぶと、それぞれの設定ができる。私は使っていないが、うまく使えば便利かもしれない。

VMの作成

VMを作成するごとに必要になる作業。基本的にはひとつだけだと思うが、複数使う場合はここを繰り返す。

VMイメージの作成(LVMを使ったとき)

LVM(かつvirt-managerでストレージの構成を行っていないとき)は、事前にストレージを作っておく。
$ sudo lvcreate -L 48G -n win1 vg0
win1の部分はVM名あるいはVM名-rootなどを入れることが多いが、名前なのでわかればなんでもいい。

仮想マシンの追加

ISOイメージを準備した後、virt-managerを起動し、localhostを右クリックして「新規」を選択。ウィザード画面が表示されるので聞かれる情報を入れていくだけ。

入力の注意点は以下の通り。

・OSはWindows, Windows 7を選ぶ(7なのはそれ以降の項目がないので。できたら選ぶ。Vista以前は使わないですよね?)

・メモリ容量、ディスク容量ともに適切に増やす。

・LVM(略)を使った場合、ストレージで既存のストレージを選択するを選び、先ほど作ったLVのパスを入力する。



・ウィザードの最後の画面で、詳細オプションを表示し、必要なネットワーク、例えば「ホストデバイス br0」を選択する。

なお、Windows 10のときは、ウィザードの最後で「インストール前に設定をカスタマイズする」を選択し、CPUを適切に選ばないと(例えばCore2 Duo)エラーで立ち上がらないみたい。


参考:仮想環境(KVM)でのwindows10が、一度起動した後リブートすると起動しなくなる (症状は違うが、この対処と同様にCPUを変更すると動作が変わる)

Windowsのインストール

virt-manager上から淡々とインストールする。リモートデスクトップを有効にする。必要であれば普通にIPアドレスを設定する(デフォルトのNATだと192.168.122.0/24のIPが振られていると思う)。このマシンにIPアドレスで接続しにいくので、設定しなくても確認をしておく。

VMの起動・停止

もちろんGUIからもOn/Offできるのだが、普段リモートデスクトップからの接続となるので、ターミナルからの起動・停止も覚えておくと便利。

確認
$ sudo virsh list --all

起動
$ sudo virsh start win1

停止
$ sudo virsh destroy win1


リモートデスクトップ接続

上記でVMができたら、ホスト側から接続する。

Remminaを使う方法

普通にRemminaを使うのであれば、apt-get installして起動して設定画面で設定すればOK。

$ sudo apt-get install remmina remmina-plugin-rdp

ただし「リモートデスクトップの設定」の「高度な設定」にある「セキュリティ」の項目がデフォルトの「ネゴシエーション」だと、最近のWindowsには接続できないので、他の項目、例えばTLSに変更する。


なお、RemoteFX を選ぶと、RDPの品質の設定でフォントスムージングが有効でも有効にならないので、それ以外、例えばTrue Color 32bitを選ぶこと。また、品質は最高(最低速)を選ぶこと。

xfreerdpを使う方法

Remminaを使うのはお手軽で良いのだが、アンチエイリアスが効かないのでガタガタで悲しい。しかし、xfreerdpを使うと有効にできる。
追記: と思っていたが、上述の通り品質でフォントスムージングを選んでおき、RemminaでもRemoteFXを選ばなければ有効になる模様。xfreerdpの手順も一応残しておくが、Remminaでいいと思う。

$ sudo apt-get install xfreerdp-x11

毎回コマンドを打つのはだるいので、以下のようなシェルスクリプトを置いて起動することにしている。パスワード入力をssh-askpassを使うのはちょっとチート気味。



---

これで設定方法と使い方はおしまい。両方使う方は試してみてはいかがか。

0 件のコメント:

コメントを投稿