====== FreeBSD 11.1-RELEASEのbhyveにWindows 10をインストール ====== ===== bhyveの準備 ===== bhyve用のBIOSイメージをインストール # pkg install bhyve-firmware 必要なカーネルモジュールを読み込む # kldload vmm # kldload if_tap # kldload if_bridge 上記モジュールを起動時に読み込むようにする # echo 'vmm_load="YES"' >> /boot/loader.conf # echo 'if_tap_load="YES"' >> /boot/loader.conf 仮想CPUのトポロジを設定する(要再起動)。デフォルト設定は1パッケージ1コアとなっており、特にWindows環境に複数個のCPUを割り当てた時にライセンス上の問題が出る。 # echo 'hw.vmm.topology.cores_per_package="12"' >> /boot/loader.conf tapデバイスアクセス時に自動的に有効化されるようにする # cat 'net.link.tap.up_on_open=1' >> /etc/sysctl.conf ===== 仮想マシンの準備 ===== ネットワークブリッジを作る igb0が物理マシンの有効なNICで、tap10が仮想マシンに割り当てられる仮想NIC。 # ifconfig tap10 create up # ifconfig tap10 create up # ifconfig bridge0 create 0 # ifconfig bridge0 addm igb0 addm tap10 ディスクイメージを用意する # truncate -s 30G disk0.img ===== 仮想マシンの起動 ===== # bhyve -c 2 -m 4G -H -w \ -s 0,hostbridge \ -s 3,ahci-cd,/path/to/WindowsInstall.iso \ -s 4,ahci-hd,./disk0.img \ -s 5,virtio-net,tap10 \ -s 29,fbuf,tcp=0.0.0.0:5902,wait \ -s 30,xhci,tablet \ -s 31,lpc \ -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd \ Windows 引数の意味: | -c 2 | CPUを2つ割り当てる | | -m 4G | メモリを4GB割り当てる | | -H | 仮想CPUのアイドル時に物理CPUをホールトする | | -w | 未実装のMSRレジスタへのアクセスを無視する。デバッグ用(付ける必要ないかも?)| | -s 3,ahci-cd,/path/to/image | PCIスロット3にAHCI接続の光学ドライブを接続 | | -s 4,ahci-hd,/path/to/image | PCIスロット4にAHCI接続のHDDを接続 | | -s 5,virtio-net,tap10 | PCIスロット5に準仮想化NICを接続 | | -s 29,fbuf,tcp=0.0.0.0:5902,wait | PCIスロット29に仮想フレームバッファを用意しポート5902でVNC接続を待ち受ける。waitを付けるとVNCで接続されるまでVMの起動を待つ | | -s 30,xhci,table | PCIスロット30にUSBのポインティングデバイスを接続 | | -s 31,lpc | PCIスロット31に仮想コンソールを接続。VMのBIOS画面をホストのターミナルにリダイレクト表示できるようになる。| | -s bootrom,/path/to/image | VMで使うBIOSを設定する | | Windows | 仮想マシンの名前 | このコマンドは何度も打ち込むことになるので、↓こんな感じでシェルスクリプト化しとくと便利。 #!/bin/sh bhyve -c 2 -m 4G -H -w \ -s 0,hostbridge \ -s 4,ahci-hd,/path/to/disk.img \ -s 5,virtio-net,tap10 \ -s 29,fbuf,tcp=0.0.0.0:5902 \ -s 30,xhci,tablet \ -s 31,lpc \ -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd \ ${1} ${2} ${3} ${4} \ VM_NAME ===== 仮想マシンへVNCしてWindowsをインストール ===== 無事に仮想マシンが起動したら、VNCで接続し、いつも通りWindowsをインストールする。 ただ、bhyveのVNCサーバはかなり相性があるようで、Macの標準VNCビューワ、Chicken of the VNC、RealVNC、TigerVNCの何れも物凄いラグやキー入力が出来なかったりで、まともに使えなかった。うちの環境では、ホストマシンに標準VNCビューワで接続し、その中でTigerVNCビューワでVMにVNCするのが一番まともに動いたっていう…。 {{ :freebsd:bhyve:bhyve_connect_to_vm_via_vnc.jpg |}} リモートデスクトップを有効化するまでの辛抱なので、実用上そこまで問題ではないけども。 ===== 参考サイト ===== * [[https://www.freebsd.org/cgi/man.cgi?query=bhyve&sektion=8|bhyve(8)]] * [[https://www.ateamsystems.com/tech-blog/howto-windows-10-bhyve-w-freebsd-11/|HOWTO: Windows 10 Under Bhyve /w FreeBSD 11 - A-Team Systems]] * [[http://www.mousou.org/node/412|FreeBSD 11.0-RELEASE の bhyve に Windows 7 をインストールする。 | 妄想日記 by 妄想エンジン]] * [[https://wiki.freebsd.org/bhyve/UEFI|bhyve/UEFI - FreeBSD Wiki]] * [[http://pr1ntf.xyz/windows10.html|Installing Windows 10 Under the bhyve Hypervisor.]]