FreeBSD 12のbhyveにWindows10をインストールする:その2(vm-bhyve使用)

Pocket

前回までで仮想マシンをインストールする準備が整った。
さっそくWindows10のインストールに取り掛かるが、準備すべきものがある。

  1. Windows10インストールイメージ
  2. TigerVNC(Viewer)

一つ目は言わずもがな。
https://www.microsoft.com/ja-jp/software-download/windows10

二つ目は、GUI操作のため。
Windowsのような、GUI操作が必須のOSをbhyve上の仮想マシンとして動かす場合には、VNCでその画面を見ることになる。
ただ、bhyveのVNCは癖があるようで、VNC viewerによっては途中で切れてしまうんである。
WindowsでもProであればリモートデスクトップという手もあるが、それにしたってインストールの時にはVNCで繋ぐほかない。
TigerVNCなら問題なく接続できるのでこれを準備しておくこと。
https://tigervnc.org/
https://github.com/TigerVNC/tigervnc/releases

2019/5/12時点では1.9.0が最新だからしてバイナリはこちら。Viewerでよい。
https://bintray.com/tigervnc/stable/tigervnc/1.9.0

初回には少し混乱したので記しておくが、VNCで接続する先のIPアドレスは、bhyveホストのIPアドレスである。
仮想マシンが自立して起動すると、そっちはそっちで独自のIPアドレスを取得する。

VNCはbhyveが用意する仮想マシンへのGUIアクセスなのでbhyveホストに接続する必要があるわけ。
一方で、仮想マシンそのものでリモートデスクトップやら、VNC Serverを用意すれば、そのときは当然、仮想マシンのIPアドレスを接続先として指定することになる。

ではISOの準備から。

仮想マシンインストール準備(インストーラ = ISO)

インストーラの準備。
ISOイメージを登録する。VirtualBoxでもそういう操作あるよね。

ISOイメージがあるなら$vm_dir/.isoに移す
sudo vmとして確認する
sudo vm とすれば、ダウンロードしてそこに置いてくれる。ちょっと驚き。

仮想マシンインストール準備(仮想マシン設定)

前提。
仮想マシンは$vm_dir/(仮想マシン名)/に置かれる。
設定ファイルは$vm_dir/(仮想マシン名)/(仮想マシン名).confである。
なお仮想マシンのログは$vm_dir/(仮想マシン名)/vm-bhyve.log。

仮想マシン置き場が/vmで、仮想マシン名がwin10だと、
/vm/win10/win10.confなどとなる。

で、vm createでまず仮想マシンの枠を作る。
このとき、-tでテンプレートを指定し、-sでディスクイメージのサイズを指定できる。
デフォルトだと20Gなので余程のことがない限り指定は必須。
作った仮想マシンはvm listで確認。

vm configureで設定(win10.conf)を変更。
vi操作で書き換える。
以下のように。

WindowsなのでBIOSはuefi。

graphicsをYesにするとVNCで接続できる。
デフォルトではbhyveホストのIPアドレス:5900で待ち受け。
変更したければそれぞれgraphics_listen、graphics_portで指定する。
また、解像度は800×600。graphics_res=”WxH”で変更できる。
graphics_waitを設定しておくと、VNC接続するまでゲストの起動を待ってくれる。
設定しなくても、仮想マシンをインストールモードで立ち上げたときには待ってくれるが、それは初回だけ。
Windowsのようにインストール時に複数回再起動するものはwaitしてもらったほうがいいだろうと。

Windows10homeの場合はcpuを1。(後述)

network0_typeにはe1000を指定。
インストールが無事に済んだらvirtioに変更するが、まずはe1000で。

network0_switchで本仮想マシンを繋ぐ仮想スイッチを指定する。
vm-bhyveのデフォルト、publicにしておく。
なお、起動した暁には、仮想マシンにはtapX(Xは数字)インタフェースが割り当てられ、publicに接続される。

disk0_type=”ahci-hd”としていて、本来ならディスクイメージをzfsのボリュームにしてvirtio-blkと指定したいが、以下の通りahci-hdしかダメ。
https://github.com/churchers/vm-bhyve/wiki/Supported-Guest-Examples
“the disk emulation needs to be ahci-hd.”

vm-bhyveは標準で仮想マシンの時刻をUTCに設定するので、utctime=”no”とする。
xhci_mouse=”yes”にしておかないと、後々VNCで接続したときにまともにマウスが動かない。

仮想マシンインストール

さあインストール。vmにinstallサブコマンドを与えて起動。
状態はvm listで確認。
bhyveホスト側では$vm_dirにあるvm-bhyve.logをtailして状況を確認しつつ進めるがよいだろう。

lockedの通り、VNC待ち。
TigerVNCで接続し、インストールを進める。
繰り返すがこのときの接続先はbhyveホスト。

インストール後(ネットワークドライバの変更他)

無事にインストールが済んだら、ネットワークドライバを変更する。
ネットワークドライバの変更なのでVNCから接続しておく。
ドライバの配布先には、仮想マシンから直接、行ってしまってよい。

場所はここだが、「virtio-win fedora」あたりで検索すれば辿り着けるはず。
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/

5/12時点では0.1.164が最新。
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.164-2/virtio-win-0.1.164.iso

Dにマウントしたら、以下のパスがドライバの場所。パスの通りWindows10, 64bitね。
こちらに強制的に変更する。ネットワークが切断されるがお構いなしで。
D:\NetKVM\w10\amd64

シャットダウンしたら、bhyve側の設定ファイルでネットワークタイプをe1000からvirtio-netに変更する。
graphics_waitも忘れずに削除。

ゲストWindowsに与えるCPU数

Windows10の場合、割り当てられるCPUは、Homeだと1つ、Proだと2つまで。
コア/スレッドはHomeだと32、Proだと256。

コアを二つ以上与えようとしても、vm-bhyveでの指定はCPU数でのみ可能。
1.3からはより細かい設定ができるようになるそうだが、pkgからインストールするvm-bhyveは1.2なので1のままにしておく。

https://github.com/churchers/vm-bhyve/wiki/Guest-Example:-Windows

なお/boot/loader.confに以下の設定をすることで、CPU一つあたりのコア数を指定できるが、手元ではうまく動かないので特に説明はしない。

上記パラメータの詳しい説明はこちら。
https://forums.freebsd.org/threads/bhyve-cpu-vcpu-cores-nad-threads.60169/

ホスト起動時に仮想マシンも起動させるには。

/etc/rc.confに以下の行を追加。
複数ある場合にはスペースを置いて起動させたい順に記載。
vm_delayは、複数の仮想マシンを起動する場合のインターバルを秒で指定。

No tags for this post.

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください