FreeBSD作為主機(host)使用bhyve虛擬機器安裝windows10
系統版本:
- FreeBSD 13.0
- Windows 10
1. 預安裝
1.1. 載入bhyve核心模組
# kldload vmm
1.2. 然後,為虛擬機器中的網路裝置建立一個tap介面做連線用。
# ifconfig tap1 create
# sysctl net.link.tap.up_on_open=1
net.link.tap.up_on_open: 0 -> 1
# ifconfig bridge0 create
# ifconfig bridge0 addm em0 addm tap1
# ifconfig bridge0 up
em0 : 看你到網絡卡名稱是什麼就寫什麼(終端輸入
ifconfig
便可檢視)
1.3. 安裝VNC客戶端(我用的tightvnc)
# pkg install tightvnc
1.4. 下載virtio-win驅動
只下載 virtio-win-0.1.118.iso 便可
1.5. 準備好 windows10.iso
2. 建立虛擬磁碟
2.1 直接建立
建立一個檔案以用作guest計算機的虛擬磁碟
# truncate -s 88G win10.img
刪除:
# rm win10.img
2.2 使用zfs建立
如果FreeBSD是ZFS檔案系統可用ZFS建立(我用的就是ZFS).
# zfs create -V16G -o volmode=dev zroot/win10disk0
建立的檔案到絕對路徑是
/dev/zvol/zroot/win10disk0
刪除:
# zfs destroy zroot/win10disk0
3. 安裝
使用影象化的UEFI Framebuffer來安裝 bhyve guest.
下面會用到兩個指令碼,一個是installwin10.sh
,另外一個是firststart.sh
(這指令碼要執行兩次).
3.1. 開始安裝
# sh installwin10.sh
開始執行,新開啟一個終端使用tightvnc
輸入:
% vncviewer
輸入0.0.0.0:5900
進行連線,以便操作圖形化安裝畫面.
安裝結束後,vnc會關閉和斷開.
然後為後面執行firststart需要刪除vm
# bhyvectl --destroy --vm=guestwin10
3.2. 第一次執行firststart.sh
# sh firststart.sh
執行tightvnc
% vncviewer
輸入0.0.0.0:5900
進行連線
3.3. 第二次執行firststart.sh
# sh firststart.sh
執行tightvnc
% vncviewer
輸入0.0.0.0:5900
進行連線進行win10安裝配置.
3.4 進行windows10網路配置
因為剛安裝好的windows10是沒有驅動無法上網的.
電腦-> CD virtio-win-xxx.iso -> NetKVM -> amd64(如果是32位就選x86) -> 右鍵點選 netkvm ->安裝.
4.指令碼及引數解析
如果建立的是 win10.img,則指令碼中使用 win10.img 替換 win10disk0(路徑一起替換).
4.1. installwin10.sh 如下:
#!/bin/sh
bhyve -c 2 -m 2G -w -H \
-s 0,hostbridge \
-s 3,ahci-cd,/path/to/win10.iso \
-s 4,ahci-hd,/dev/zvol/zroot/win10disk0 \
-s 5,virtio-net,tap1 \
-s 29,fbuf,tcp=0.0.0.0:5900,w=1280,h=720,wait \
-s 30,xhci,tablet \
-s 31,lpc \
-l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd guestwin10
4.2. firststart.sh 如下
#!/bin/sh
bhyve -c 2 -m 2G -w -H \
-s 0,hostbridge \
-s 3,ahci-cd,/path/to/virtio-win-0.1.118.iso \
-s 4,ahci-hd,/dev/zvol/zroot/win10disk0 \
-s 5,virtio-net,tap1 \
-s 29,fbuf,tcp=0.0.0.0:5900,w=1280,h=720,wait \
-s 30,xhci,tablet \
-s 31,lpc \
-l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd guestwin10
4.3. 引數解析
-c
: 分配給虛擬機器的CPU核數-m
: 分配給虛擬機器記憶體大小-w
: 忽略未實現的 MSR(特定模型的暫存器)-H
: vmexit from the guest on hlt(這個不會翻譯)-s
: <slot,driver,configinfo> PCI 插槽配置-l
: LPC裝置配置
參考:
FreeBSD bhyve Win10
FreeBSD handbook 22.7. FreeBSD as a Host with bhyve
virtio-win-0.1.118
How to install Linux VM on FreeBSD using bhyve and ZFS