Install KVM on Rocky Linux 9


準備項目

  1. VMware workstation
  2. Rocky Linux 9-5 ISO
  3. 安裝 Rocky Linux-svr1虛擬機, 記憶體配置16GB up IP: 192.168.133.185
  1. 安裝 Rocky Linus-svr2虛擬機 記憶體配置4G即可 (用於http Server放置Rocky Linux iso檔案及Kickstart 檔案)。 IP: 192.168.133.193

一、Rocky Linux-svr1 系統前置設定

  • 假如 系統預設安裝到文字介面模式,可先進行圖形化介面軟體安裝
  1. 先執行dnf grouplist 查看安裝包
1
[root@localhost ~]# dnf grouplist

安裝 Server with GUI

1
[root@localhost ~]# dnf groupinstall "Server with GUI"

  1. 設定系統預設為 圖形化介面開啟
1
[root@localhost ~]# systemctl set-defautl graphical.target 

  1. 重開機後即可進入圖形化介面

安裝 KVM相關套件

  1. 安裝 qemu-kvm libvirt virt-install virt-manager
1
[root@localhost ~]# dnf install qemu-kvm libvirt virt-install virt-manager

套件說明:

🧱 1. QEMU-KVM

QEMU 是一個開源的硬體模擬器和虛擬機器監控器(Hypervisor)。
KVM(Kernel-based Virtual Machine)是 Linux 核心中的虛擬化模組,它讓 Linux 本身變成一個 Hypervisor。

  • qemu-kvm 是 QEMU 加上 KVM 模組的組合,用來提供硬體虛擬化支援。

  • 支援 64-bit/32-bit 的多種作業系統(Linux、Windows、BSD 等)。

  • 搭配 KVM,可以大幅提升虛擬機的效能(接近原生)。

🧰 2. libvirt

libvirt 是一個用來管理虛擬機的 API 層和守護進程(libvirtd),支援多種 Hypervisor,包括 QEMU/KVM、Xen、LXC 等。

  • 提供統一的指令與管理方式(像 virsh CLI)。

  • 管理虛擬機的建立、啟動、暫停、刪除、網路、儲存設備等。

  • 預設管理的虛擬機存放位置通常在 /var/lib/libvirt/

🏗️ 3. virt-install

virt-install 是一個命令列工具,用來建立虛擬機,屬於 libvirt 套件的一部分。

  • 可以從 ISO、PXE、或是網路安裝來源建立 VM。

  • 提供詳細參數來設定 CPU、RAM、磁碟、網路、顯示裝置等。

🖥️ 4. virt-manager

virt-manager(Virtual Machine Manager)是一個圖形化介面,用來管理虛擬機。

  • 適合桌面使用者或初學者。

  • 可以直觀地建立/管理虛擬機、調整資源、設定網路與儲存。

  • 支援 VNC/SPICE 顯示畫面。

  1. 確認KVM模組已載入
1
[root@svr1 ~]# lsmod | grep "kvm"

  1. 啟動 libvirtd 服務
1
[root@svr1 ~]# systemctl enable --now libvirtd

電腦名稱及Bridge 網路設定

  • 設定電腦名稱:
1
[root@svr1 ~]# hostnamectl hostname svr1
  • 新增Bridge 網卡 “br0”
1
[root@svr1 ~]# nmcli con add type bridge ifname br0 con-name br0
  • 新增bridge-slave
1
[root@svr1 ~]# nmcli con add type bridge-slave ifname ens160 master br0

  • 設定br0 固定IP
1
[root@svr1 ~]# nmcli connection modify  br0  ipv4.method manual  ipv4.addresses 192.168.133.185/24 ipv4.gateway 192.168.133.2 ipv4.dns 192.168.133.2 autoconnect yes
  • 啟用br0及bridge-slave
1
[root@svr1 ~]# nmcli con up br0 && nmcli con up bridge-slave-ens160
  • 查看IP及網卡設置

Rocky Linus-svr2 安裝http 、kickstart file

==請參考svr1的固定IP設置流程,設定固定IP為192.168.133.193==

  • 安裝httpd
1
[root@svr2 ~]# dnf install httpd -y
  • 啟動服務
1
[root@svr2 ~]# systemctl enable --now httpd
  • 新增防火牆規則& 重新讀取防火牆
1
[root@svr2 ~]# firewall-cmd  --add-service=http --permanent
1
[root@svr2 ~]# firewall-cmd  --reload
  • 將Rocky 9 ISO 掛載到/mnt
1
[root@svr2 ~]# mount -o  loop Rocky-9.5-x86_64-dvd.iso  /mnt/
  • 新增/var/www/html/rocky9目錄
1
[root@svr2 ~]# mkdir /var/www/html/rocky9
  • 複製/mnt 下的 ISO檔案內容至 /var/www/html/rocky9/
1
[root@svr2 ~]# cp -av /mnt/*  /var/www/html/rocky9/

  • 實際發現掛載的 /mnt複製時有遺漏 .treeinfo 檔案
    ==重要: 否則會無法辨識安裝路徑==
1
2
[root@svr2 ~]# ls -al /mnt/

  • 將檔案複製至 /var/www/html/rocky9/
1
[root@svr2 ~]# cp /mnt/.treeinfo /var/www/html/rocky9/
  • 重啟讀取httpd服務
1
[root@svr2 ~]# systemctl  reload httpd
  • 先產生一組sha512加密過的root密碼,用於Kickstart 內加密過的root密碼
1
2
3
4
5
[root@svr2 ~]# openssl passwd -6
Password:
Verifying - Password:
$6$NJXB7XsscZs6gwwz$miS83KCZTJ6w1JZxA6jHuKk2Be3vxPHN27UB9RQIkcL.SJlnUKhlc75mFvQYN55/auGqFM8wA1Io7CKDKmmcd1

-6 的意思是使用 SHA-512 加密法(SHA2-512),這是目前 Linux 系統中 /etc/shadow 的預設密碼加密方式之一。

  • 在svr2 /var/www/html/ 建立Kickstart 自動安裝檔 rocky9.cfg
1
[root@svr2 ~]# vim rocky9.cfg

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# Kickstart 自動安裝 Rocky Linux 9
#註1. install >> rocky 9已經不支援`install`開頭
#註2. virt-install 就是文字介面安裝,可不打上`text`
lang en_US.UTF-8
keyboard us
timezone Asia/Taipei --utc

# Root 密碼(加密格式)
rootpw --iscrypted $6$NJXB7XsscZs6gwwz$miS83KCZTJ6w1JZxA6jHuKk2Be3vxPHN27UB9RQIkcL.SJlnUKhlc75mFvQYN55/auGqFM8wA1Io7CKDKmmcd1

# 網路設定(DHCP)
network --bootproto=dhcp --device=eth0 --onboot=yes

# 磁碟分割(自動配置)
autopart --type=lvm
clearpart --all --initlabel
bootloader --location=mbr

# 使用者帳號 (明碼)
user --name=sam --password=qwe123 --plaintext --groups=sam

# 安裝最小化系統
%packages
@core
wget
vim
net-tools
%end

# 安裝後腳本
%post
echo "Kickstart 安裝完成!" > /root/install_done.txt
%end

  • 確認/var/www/html/ 底下目錄rocky9rocky9.cfg selinux content 設置正常 (httpd_sys_content_t)
1
2
3
4
5
[root@svr2 html]# ls -lZ
total 4
drwxr-xr-x. 2 root root unconfined_u:object_r:httpd_sys_content_t:s0 6 Apr 5 20:33 iso
drwxr-xr-x. 7 root root unconfined_u:object_r:httpd_sys_content_t:s0 111 Apr 5 20:41 rocky9
-rw-r--r--. 1 root root unconfined_u:object_r:httpd_sys_content_t:s0 867 Apr 6 18:00 rocky9.cfg

==註: 如果檔案不是呈現 httpd_sys_content_t ,則可使用下列指令修正==

  1. 定義檔案&目錄Selinux
1
2
[root@svr2 html]# semanage fcontext -a -t httpd_sys_content_t   檔案或目錄

  1. 套用目錄設置
1
[root@svr2 html]# restorecon -Rv /var/www//html/
1
[root@svr2 ~]# curl http://192.168.133.193/rocky9.cfg

至Rocky Linux-svr1 開始安裝系統

  • 建立一個虛擬機硬碟檔案 rocky-lab1.qcow2 20G
1
[root@svr1 ~]# qemu-img create -f qcow2 /var/lib/libvirt/images/rocky9-lab1.qcow2 20G
  • 查看已建立完成rocky-lab1.qcow2
1
[root@svr1 ~]# ls -l /var/lib/libvirt/images/

  • 指令 建立rocky9-lab1 虛擬機
1
[root@svr1 ~]# virt-install --name rocky9-lab1 --ram 4096 --vcpus 2 --disk path=/var/lib/libvirt/images/rocky9-lab1.qcow2,format=qcow2,bus=virtio --os-variant rocky9 --network bridge=br0,model=virtio --graphics none --console pty,target.type=serial --location http://192.168.133.193/rocky9/ --extra-args "inst.ks=http://192.168.133.193/rocky9.cfg console=ttyS0,115200n8"

  • 虛擬機 rocky9-lab1 已正在建立中

  • 系統安裝完成,並測試Root登入,驗證剛剛的明碼密碼是否可正常登入。

#KVM

作者

Sam Peng

發表於

2025-05-08

更新於

2025-05-13

許可協議