本篇介紹如何在 KVM/QEMU 的環境下,遠端以 virt-install 指令建立虛擬機器,透過 VNC 的方式顯示 VM 畫面。

若想要在 KVM/QEMU 虛擬機器環境中安裝並運行作業系統,最簡單的方式就是使用 Virtual Machine Manager 的視窗操作介面來安裝並執行虛擬機器,但是如果我們需要透過 SSH 登入到遠端的機器上建立虛擬機器的話,有時候就會需要使用指令的方式來操作,以下是使用 virt-install 安裝虛擬機器,並以 virsh 運行虛擬機器的步驟。

建立虛擬機器

安裝虛擬機器之前,要先建立一個要給虛擬機器用的虛擬磁碟檔案:

# 建立 VM 用的硬碟檔案(遠端主機)
sudo qemu-img create -f qcow2 /home/seal/kvm/ubuntu1804.qcow2 20G

接著使用 virt-install 將作業系統安裝到剛剛建立好的虛擬磁碟檔案中,以下是安裝 Ubuntu Linux 18.04 的例子:

# 在 VM 中安裝 Ubuntu Linux 18.04(遠端主機)
sudo virt-install --virt-type kvm --name ubuntu1804 --ram 2048 \
  --disk /home/seal/kvm/ubuntu1804.qcow2,format=qcow2 \
  --network network=default \
  --graphics vnc,listen=0.0.0.0,password=YOUR_PASSWORD \
  --noautoconsole \
  --os-type=linux --os-variant=ubuntu17.10 \
  --cdrom=/home/seal/Downloads/ubuntu-18.10-desktop-amd64.iso

這裡我們使用 --graphics 參數指定使用 VNC 的方式顯示畫面,並讓 VNC 伺服器傾聽所有的 IP 位址,並設定密碼。

--os-type 是指定作業系統類型(可為 linuxwindows),而 --os-variant 則是更詳細的作業系統資訊,可用的選項可以使用 osinfo-query 指令查詢:

# 查詢 --os-variant 可用的選項(遠端主機)
osinfo-query os | grep ubuntu

執行了 virt-install 之後,即可使用 virsh vncdisplay 查詢這台 VM 所開啟的 VNC 連接埠:

# 查看 VNC 連接埠(遠端主機)
virsh vncdisplay ubuntu1804
:0

通常 CentOS Linux 都有防火牆,若是測試用的機器建議可以把防火牆關閉,方便測試:

# 關閉防火牆(遠端主機)
sudo systemctl stop firewalld

假設遠端主機的 IP 位址是 192.168.0.3,則我們就可以在本地端使用 vncviewer 以 VNC 的方式連到該 VM:

# 開啟 VNC Viewer(本地端)
vncviewer 192.168.0.3:0

如果是比較正式的機器,可以建立 SSH 安全加密通道,將遠端機器的 5900 連接埠導向至本地端的 5900 連接埠:

# 建立 SSH 安全加密通道(本地端)
ssh -NL 5900:localhost:5900 seal@192.168.0.3

然後再以 vncviewer 開啟本地端的 5900 連接埠:

# 開啟 VNC Viewer(本地端)
vncviewer localhost:0

接著就可以按照正常的方式安裝 Ubuntu Linux 作業系統:

VNC 顯示 VM 畫面

安裝完成後,查看一下目前所有的 VM:

# 列出所有 VM(遠端主機)
virsh list --all
 Id    名稱                         狀態
----------------------------------------------------
 -     ubuntu1804                     關機

使用 virsh start 將指定的 VM 開機:

# 啟動 VM(遠端主機)
virsh start ubuntu1804
區域 ubuntu1804 已開啟

這樣就可以開始使用 Ubuntu Linux 系統了。

VNC 顯示 VM 畫面

如果要遠端在 VM 中安裝 Windows 作業系統,流程都差不多,只要更換一下 ISO 檔案,更改 OS 的類型設定即可:

# 建立 VM 用的硬碟檔案(遠端主機)
sudo qemu-img create -f qcow2 /home/seal/kvm/windows10.qcow2 20G

# 在 VM 中安裝 Windows 10(遠端主機)
sudo virt-install --virt-type kvm --name windows10 --ram 2048 \
  --disk /home/seal/kvm/windows10.qcow2,format=qcow2 \
  --network network=default \
  --graphics vnc,listen=0.0.0.0,password=YOUR_PASSWORD \
  --noautoconsole \
  --os-type=windows --os-variant=win10 \
  --cdrom=/home/seal/Downloads/Win10_1809Oct_Chinese_x64.iso

接著按照正常方式安裝 Windows 10 作業系統:

VNC 顯示 VM 畫面

安裝完成後,啟動該 VM:

# 啟動 VM(遠端主機)
virsh start windows10
區域 windows10 已開啟

這樣就完成了。

VNC 顯示 VM 畫面

參考資料:OpenStackRed Hat运维之路csdnnixCraft