本篇介紹如何在 CentOS Linux 7 的系統之下,安裝 KVM/QEMU 虛擬機器環境,在 VM 中運行各種不同的作業系統。

KVM 是一套以 Linux 核心為基礎的虛擬機器架構,採用開放原始碼的授權,通常會搭配 QEMU 與 libvirt 一起使用,KVM 負責存取 CPU 與記憶體,QEMU 負責模擬其他硬體資源(例如硬碟、網路、顯示卡、USB 設備等),而 libvirt 則提供一個統一的操作的介面,可用於管理虛擬機器、Daemon、儲存與網路等。


以下是在 CentOS Linux 7.6 之下,安裝 KVM/QEMU 虛擬機器環境,並在 VM 中運行 Ubuntu Linux 與 Windows 系統的步驟。

CPU 硬體虛擬化

KVM 的執行必須仰賴 Intel VT 或 AMD-V 這兩種 CPU 硬體虛擬化功能,若在 Linux 中想要檢查自己的 CPU 是否有開啟這個功能,可以查看 /proc/cpuinfo 中是否有 vmxsvm 這兩個關鍵字:

# 檢查 CPU 是否支援硬體虛擬化
grep -E '(vmx|svm)' /proc/cpuinfo
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm epb ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase smep erms xsaveopt dtherm arat pln pts spec_ctrl intel_stibp flush_l1d

如果查出來沒有硬體虛擬化功能的話,有可能是因為在 BIOS 中沒有啟用,可以嘗試去 BIOS 中找一下。

安裝 KVM

使用 yum 安裝 KVM 相關套件:

# 安裝 KVM 相關套件
sudo yum install qemu-kvm qemu-img virt-manager libvirt libvirt-python libvirt-client virt-install virt-viewer bridge-utils

將 SELinux 關閉,編輯 /etc/sysconfig/selinux 設定檔,將 SELinux 修改為 disabled

# SELinux=enforcing
SELinux=disabled

重新開機,讓 SELinux 設定生效,並載入 kvm 核心模組:

# 重新開機
reboot

重新開機之後,檢查 kvm 核心模組是否有被載入

# 檢查 kvm 核心模組是否有被載入
lsmod | grep kvm
kvm_intel             183621  0
kvm                   586948  1 kvm_intel
irqbypass              13503  1 kvm

啟動 libvirtd 服務:

# 啟動 libvirtd 服務
sudo systemctl start libvirtd

設定開機自動啟動 libvirtd 服務:

# 設定開機自動啟動 libvirtd 服務
sudo systemctl enable libvirtd

Virtual Machine Manager

安裝好 KVM、QEMU 與 libvirt 之後,接著就可以開始建立虛擬機器了。

建立虛擬機器的方式有很多種,最簡單的方式就是使用 Virtual Machine Manager,透過圖形化的操作介面來建立虛擬機器。

# 執行 Virtual Machine Manager
sudo virt-manager

使用 root 管理者權限執行 Virtual Machine Manager 之後,就會開啟圖形介面的虛擬機器管理員視窗。

Virtual Machine Manager

以下是使用 Virtual Machine Manager 建立虛擬機器的步驟。
Step 1
在 Virtual Machine Manager 主視窗中,選擇「File」中的「New Virtial Machine」(或是點選工具列中的新增虛擬機器按鈕),開啟新增虛擬機器的視窗。
Step 2
選擇安裝媒體,最常見的方式就是使用 ISO 檔或 CDROM 來安裝。

新增 VM

Step 3
選擇安裝作業系統用的 ISO 檔案所在位置。

選擇 ISO 檔案

Step 4
設定 CPU 核心數量以及記憶體大小。

設定 CPU 與記憶體

Step 5
設定硬碟大小,預設的硬碟影像檔會放在 /var/lib/libvirt/images

設定硬碟大小

如果預設的位置沒有足夠的空間,也可以選擇在別處自行建立 qcow2 的映像檔。

新增 qcow2 映像檔

自行建立好 qcow2 映像檔後,即可指定給新的虛擬機器使用。

設定映像檔

Step 6
設定 VM 名稱,同時亦可調整網路設定。

設定 VM 名稱與網路

網路設定預設是使用 NAT,也就是說 VM 可以上網,但是外部的電腦無法連進來,如果想要讓外部的連線以進入,就要改用橋接器(bridge)的設定。
Step 7
VM 使用指定的安裝 ISO 檔案開機之後,按照一般的方式安裝作業系統。

安裝 VM 的作業系統

在 Virtual Machine Manager 的視窗中,可以查看各 VM 的 CPU 使用量。

VM CPU 使用量

這是在 CentOS Linux 7 桌面上使用 KVM/QEMU 運行 Ubuntu Linux 的畫面。

KVM/QEMU 虛擬機器執行畫面

安裝完成後即可使用新的 VM 了。

KVM/QEMU 虛擬機器執行畫面

在預設的 NAT 網路環境中,VM 會以 DHCP 的方式取得 192.168.122.1/24 網段的 IP 位址,直接透過 host OS 的網路上網,對於普通的系統測試來說,這種網路環境設定是最方便的。

虛擬機器網路 IP 位址

在 KVM/QEMU 虛擬機器設定的視窗中,可以自由調整 VM 的各項細部設定值,例如 CPU、記憶體、網路、顯示卡等各種硬體設備,都可以在這裡更改。

KVM/QEMU 虛擬機器設定

如果要安裝 Windows 10 作業系統,只要將安裝的 ISO 檔案改為 Windows 10 的安裝 ISO 檔即可,其餘的設定步驟都相同。

在 VM 中安裝 Windows 10 作業系統

安裝完成之後,即可使用 VM 中的 Windows 10 作業系統了。

在 VM 中運行 Windows 10 作業系統

參考資料:LinuxTechijaywcjlovelijyyh.com