kvm 安裝 windows 虛擬機器

菜鳥運維筆記發表於2021-11-08

作者:SRE運維部落格

部落格地址: https://www.cnsre.cn/

文章地址:https://www.cnsre.cn/posts/211108848062/

相關話題:https://www.cnsre.cn/tags/kvm/


安裝前準備

驗證CPU是否支援KVM

如果結果中有vmx(Intel)或svm(AMD)字樣,就說明CPU的支援的。

egrep '(vmx|svm)' /proc/cpuinfo

sre運維|Linux運維|自動化運維|kvm安裝windows虛擬機器|kvm安裝windows虛擬機器找不到硬碟|kvm安裝windows虛擬機器找不到網路卡|kvm安裝windows虛擬機器報錯|kvm安裝widnows2012

關閉SELinux

/etc/sysconfig/selinux 中的 SELinux=enforcing 修改為 SELinux=disabled

sre運維|Linux運維|自動化運維|kvm安裝windows虛擬機器|kvm安裝windows虛擬機器找不到硬碟|kvm安裝windows虛擬機器找不到網路卡|kvm安裝windows虛擬機器報錯|kvm安裝widnows2012

安裝一些最基本的服務

可選項,因為我是剛安裝好的CentOS,所以為了下面方便點,先把一些必要的工具安裝下

yum install epel-release net-tools vim unzip zip wget ftp -y

sre運維|Linux運維|自動化運維|kvm安裝windows虛擬機器|kvm安裝windows虛擬機器找不到硬碟|kvm安裝windows虛擬機器找不到網路卡|kvm安裝windows虛擬機器報錯|kvm安裝widnows2012

安裝KVM及其依賴項

yum install qemu-kvm libvirt virt-install bridge-utils -y

sre運維|Linux運維|自動化運維|kvm安裝windows虛擬機器|kvm安裝windows虛擬機器找不到硬碟|kvm安裝windows虛擬機器找不到網路卡|kvm安裝windows虛擬機器報錯|kvm安裝widnows2012

驗證安裝結果

下圖說明已經成功安裝了

lsmod | grep kvm

sre運維|Linux運維|自動化運維|kvm安裝windows虛擬機器|kvm安裝windows虛擬機器找不到硬碟|kvm安裝windows虛擬機器找不到網路卡|kvm安裝windows虛擬機器報錯|kvm安裝widnows2012

開啟kvm服務

並且設定其開機自動啟動

systemctl start libvirtd systemctl enable libvirtd

檢視狀態操作結果

如下圖所示,說明執行情況良好

systemctl status libvirtd

sre運維|Linux運維|自動化運維|kvm安裝windows虛擬機器|kvm安裝windows虛擬機器找不到硬碟|kvm安裝windows虛擬機器找不到網路卡|kvm安裝windows虛擬機器報錯|kvm安裝widnows2012

systemctl is-enabled libvirtd

sre運維|Linux運維|自動化運維|kvm安裝windows虛擬機器|kvm安裝windows虛擬機器找不到硬碟|kvm安裝windows虛擬機器找不到網路卡|kvm安裝windows虛擬機器報錯|kvm安裝widnows2012

配置網橋模式

先將 /etc/sysconfig/network-scripts/ 目錄下的網路卡配置檔案備份一份

建立 ifcfg-br0 檔案

建立的 br0檔案的IP地址要和物理網路卡的IP地址一致,命令 ipconfig 檢視物理網路卡將不會顯示IP

內容如下:

[root@bogon ~]*# vim /etc/sysconfig/network-scripts/ifcfg-br0*

DEVICE=br0
BOOTPROTO=none
DEFROUTE=yes
ONBOOT=yes
TYPE=Bridge
IPV4_FAILURE_FATAL=yes
IPADDR=192.168.1.130
NETMASK=255.255.255.0
GATEWAY=192.168.1.254
DNS1=221.6.4.66
DELAY=0
USERCE=no

修改原網路卡配置

vim /etc/sysconfig/network-scripts/ifcfg-eno1s
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="YES"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="eno1"
UUID="bb40d726-8d67-4187-90c3-eb61e1b42d61"
DEVICE="eno1"
ONBOOT="yes"
IPADDR="192.168.1.130"
NETAMSK=255.255.255.0
GATEWAY="192.168.1.254"
DNS1="221.6.4.66"
IPV6_PRIVACY="no"
BRIDGE=br0

重啟網路服務

systemctl restart network

使用 ifconfig 驗證操作結果,多了一塊網路卡 br0 ,現在訪問宿主機 使用 192.168.1.130 就可以了。

sre運維|Linux運維|自動化運維|kvm安裝windows虛擬機器|kvm安裝windows虛擬機器找不到硬碟|kvm安裝windows虛擬機器找不到網路卡|kvm安裝windows虛擬機器報錯|kvm安裝widnows2012

安裝虛擬機器

準備作業系統安裝映象檔案

在本文中將使用和宿主環境一樣的 CentOS7.2,把該檔案放到 /home/iso 目錄下

掛載U盤

[root@nkgtsv01 ~]# fdisk -l
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

磁碟 /dev/sda:2995.0 GB, 2994995200000 位元組,5849600000 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 4096 位元組
I/O 大小(最小/最佳):4096 位元組 / 4096 位元組
磁碟標籤型別:gpt
Disk identifier: 434CB2EB-C42E-4B9D-A76B-B759709EC159


#         Start          End    Size  Type            Name
 1         2048       206847    100M  EFI System      EFI System Partition
 2       206848       616447    200M  Microsoft basic
 3       616448   5849597951    2.7T  Linux LVM

磁碟 /dev/mapper/centos-root:214.7 GB, 214748364800 位元組,419430400 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 4096 位元組
I/O 大小(最小/最佳):4096 位元組 / 4096 位元組


磁碟 /dev/mapper/centos-swap:17.2 GB, 17179869184 位元組,33554432 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 4096 位元組
I/O 大小(最小/最佳):4096 位元組 / 4096 位元組


磁碟 /dev/mapper/centos-home:322.1 GB, 322122547200 位元組,629145600 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 4096 位元組
I/O 大小(最小/最佳):4096 位元組 / 4096 位元組


磁碟 /dev/mapper/centos-tmp:107.4 GB, 107374182400 位元組,209715200 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 4096 位元組
I/O 大小(最小/最佳):4096 位元組 / 4096 位元組


磁碟 /dev/mapper/centos-data:2333.2 GB, 2333249372160 位元組,4557127680 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 4096 位元組
I/O 大小(最小/最佳):4096 位元組 / 4096 位元組


磁碟 /dev/sdb:31.0 GB, 31004295168 位元組,60555264 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 位元組 / 512 位元組
I/O 大小(最小/最佳):512 位元組 / 512 位元組
磁碟標籤型別:dos
磁碟識別符號:0xcad4ebea            需要掛載的硬碟

   裝置 Boot      Start         End      Blocks   Id  System
/dev/sdb4   *         256    60555263    30277504    7  HPFS/NTFS/exFAT
[root@nkgtsv01 ~]# mkdir -p /mnt/udisk
[root@nkgtsv01 ~]# ls
anaconda-ks.cfg
[root@nkgtsv01 ~]# ls /mnt/
udisk  usb
[root@nkgtsv01 ~]# mount -t ntfs-3g /dev/sdb4 /mnt/udisk/
mount: 未知的檔案系統型別“ntfs-3g”

[root@nkgtsv01 ~]# yum list *ntfs*
已載入外掛:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.sjtu.edu.cn
 * epel: mirrors.ustc.edu.cn
 * extras: ftp.sjtu.edu.cn
 * updates: ftp.sjtu.edu.cn
可安裝的軟體包
ntfs-3g.x86_64                              2:2017.3.23-1.el7                        epel
ntfs-3g-devel.x86_64                        2:2017.3.23-1.el7                        epel
ntfsprogs.x86_64                            2:2017.3.23-1.el7                        epel

已安裝:
  ntfs-3g.x86_64 2:2017.3.23-1.el7

完畢!
[root@nkgtsv01 ~]#yum install ntfs-3g.x86_64 -y

[root@nkgtsv01 ~]# mount -t ntfs-3g /dev/sdb4 /mnt/udisk/
The disk contains an unclean file system (0, 0).
The file system wasn't safely closed on Windows. Fixing.

[root@nkgtsv01 ~]#
[root@nkgtsv01 ~]# ls /mnt/
udisk  usb
[root@nkgtsv01 ~]# ls /mnt/udisk/
CentOS-7.2-x86_64-DVD-1611.iso  CentOS-7-x86_64-DVD-1708.iso  maven_storey2.zip
[root@bogon data]# mkdir -p /data/iso
[root@bogon data]# ls
iso  kvm-bak  network
[root@nkgtsv01 ~]# mount  -o loop /mnt/udisk/CentOS-7-x86_64-DVD-1708.iso /data/iso/
mount: /dev/loop0 防寫,將以只讀方式掛載

sre運維|Linux運維|自動化運維|kvm安裝windows虛擬機器|kvm安裝windows虛擬機器找不到硬碟|kvm安裝windows虛擬機器找不到網路卡|kvm安裝windows虛擬機器報錯|kvm安裝widnows2012

建立虛擬機器檔案存放的目錄

mkdir -p /data/kvm-images

{{< alert theme="warning" dir="ltr" >}}
⚠️ 注意

關於virtio-win驅動

{{< /alert >}}

virtio-win驅動主要用於kvm裡的 windows虛擬機器。virtio-win提供yum源安裝rpm包,virtio驅動預設會安裝在/usr/share/virtio-win目錄中,可共享於kvm裡的windows虛擬機器。

sudo wget https://fedorapeople.org/groups/virt/virtio-win/virtio-win.repo -O /etc/yum.repos.d/virtio-win.repo
# 新增repo

sre運維|Linux運維|自動化運維|kvm安裝windows虛擬機器|kvm安裝windows虛擬機器找不到硬碟|kvm安裝windows虛擬機器找不到網路卡|kvm安裝windows虛擬機器報錯|kvm安裝widnows2012

該repo檔案提供兩個不同的倉庫:

  • virtio-win-stable
    預設,該倉庫的版本和RHEL版本關聯在一起釋出,意味著得到了非常多的測試,很穩定。

  • virtio-win-latest
    該倉庫提供最新的build版本,這些版本可能有各種問題,使用者需自己承擔風險。這個倉庫預設是disable的。如果你想從穩定版更新到最新版,可以使用如下命令:

    sudo yum --enablerepo=virtio-win-latest update virtio-win
    

sre運維|Linux運維|自動化運維|kvm安裝windows虛擬機器|kvm安裝windows虛擬機器找不到硬碟|kvm安裝windows虛擬機器找不到網路卡|kvm安裝windows虛擬機器報錯|kvm安裝widnows2012

安裝完成後的檔案會存放在/user/share,內容如下:

/usr/share/virtio-win/*.iso: ISO映象,包含所有驅動,詳細內容後面會描述
/usr/share/virtio-win/*.vfd: 用於Windows XP下的VFD軟碟機映象
/usr/share/virtio-win/drivers: 從VFD軟碟機映象中提取的檔案
/usr/share/guest-agent/*.msi: QEMU Guest Agent 32bit 和 64bit 安裝包

其中ISO映象內容為:

NetKVM/: Virtio網路驅動
viostor/: Virtio塊驅動
vioscsi/: Virtio SCSI驅動
viorng/: Virtio RNG驅動
vioser/: Virtio串列埠驅動
Balloon/: Virtio 記憶體氣球驅動
qxl/: 用於Windows 7及之前版本的QXL顯示卡驅動. (virtio-win-0.1.103-1和之後版本會建立)
qxldod/: 用於Windows 8及之後版本的QXL顯示卡驅動. (virtio-win-0.1.103-2和之後版本會建立)
pvpanic/: QEMU pvpanic 裝置驅動 (virtio-win-0.1.103-2和之後版本會建立)
guest-agent/: QEMU Guest Agent 32bit 和 64bit 安裝包
qemupciserial/: QEMU PCI 串列埠裝置驅動

或者你也可以通過一下方獲取

穩定版virtio-win iso

穩定版virtio-win x86 floppy

穩定版virtio-win amd64 floppy

最新版virtio-win iso

最新版virtio-win x86 floppy

最新版virtio-win amd64 floppy

最新版qemu-ga files

全部下載目錄

變更日誌

使用 virt-install 建立虛擬機器

[root@bogon data]# virt-install --virt-type kvm --name=njvm2k8 --ram=1024 --vcpus=1 --os-type=windows --accelerate --cdrom=/home/kvm_data/iso/cn_windows_server_2008_r2_617396.iso --disk path=/usr/share/virtio-win/virtio-win.iso,device=cdrom --disk path=/home/kvm_data/img/njvm2k8.qcow2,bus=virtio --network bridge=br0 --graphics vnc,listen=0.0.0.0,password=123456,port=5920 --noautoconsole
 

WARNING  無法連線到圖形控制檯:沒有安裝 virt-viewer。請安裝 'virt-viewer' 軟體包。
WARNING  沒有控制檯用於啟動客戶機,預設為 --wait -1
開始安裝......
正在分配 'njvm2k8.img'                                   | 200 GB  00:00:00
正在刪除磁碟 'njvm2k8.img'                                |    0 B  00:00:00
域安裝失敗,您可以執行下列命令重啟您的域:
'virsh start virsh --connect qemu:///system start njvm2k8'
否則請重新開始安裝

不要理會裡面提示的錯誤,接著往下走

命令含義

virt-install 
--name=客戶機名稱  
--ram 記憶體(1024)1G 
--vcpus= cpu1 
--os-type= 客戶機系統型別  
--os-variant= win2k8 
--disk path= 客戶機檔案存放路徑 ,
size=客戶機硬碟大小200 
--accelerate 
--cdrom  (映象檔案路徑) 
--vnc --vncport=vnc遠端埠 5910 
--network bridge=網路卡橋接 br0,model=virtio 
--noautoconsole

開啟防火牆上的5910埠

因為 VNC 使用的埠預設是 5910 所以需要開啟防火牆, 防火牆若關閉請忽略

 firewall-cmd --zone=public --add-port=5910/tcp --permanent              

sre運維|Linux運維|自動化運維|kvm安裝windows虛擬機器|kvm安裝windows虛擬機器找不到硬碟|kvm安裝windows虛擬機器找不到網路卡|kvm安裝windows虛擬機器報錯|kvm安裝widnows2012

檢視開啟新建立的虛擬機器

virsh list --all
virsh start njvm2k8-win

使用VNC連結虛擬機器

vncviewer下載地址

sre運維|Linux運維|自動化運維|kvm安裝windows虛擬機器|kvm安裝windows虛擬機器找不到硬碟|kvm安裝windows虛擬機器找不到網路卡|kvm安裝windows虛擬機器報錯|kvm安裝widnows2012

使用VNC輸入宿主機IP地址 加上埠號 輸入虛擬機器名字然後開啟

sre運維|Linux運維|自動化運維|kvm安裝windows虛擬機器|kvm安裝windows虛擬機器找不到硬碟|kvm安裝windows虛擬機器找不到網路卡|kvm安裝windows虛擬機器報錯|kvm安裝widnows2012

sre運維|Linux運維|自動化運維|kvm安裝windows虛擬機器|kvm安裝windows虛擬機器找不到硬碟|kvm安裝windows虛擬機器找不到網路卡|kvm安裝windows虛擬機器報錯|kvm安裝widnows2012

sre運維|Linux運維|自動化運維|kvm安裝windows虛擬機器|kvm安裝windows虛擬機器找不到硬碟|kvm安裝windows虛擬機器找不到網路卡|kvm安裝windows虛擬機器報錯|kvm安裝widnows2012

sre運維|Linux運維|自動化運維|kvm安裝windows虛擬機器|kvm安裝windows虛擬機器找不到硬碟|kvm安裝windows虛擬機器找不到網路卡|kvm安裝windows虛擬機器報錯|kvm安裝widnows2012

sre運維|Linux運維|自動化運維|kvm安裝windows虛擬機器|kvm安裝windows虛擬機器找不到硬碟|kvm安裝windows虛擬機器找不到網路卡|kvm安裝windows虛擬機器報錯|kvm安裝widnows2012

sre運維|Linux運維|自動化運維|kvm安裝windows虛擬機器|kvm安裝windows虛擬機器找不到硬碟|kvm安裝windows虛擬機器找不到網路卡|kvm安裝windows虛擬機器報錯|kvm安裝widnows2012

{{< alert theme="warning" dir="ltr" >}}
⚠️ 注意

安裝的時候找不到硬碟

{{< /alert >}}

如果再安裝的時候找不到硬碟,請執行一下操作

掛載win映象

virsh change-media njvm2k8  hdb /usr/share/virtio-win/virtio-win.iso    

sre運維|Linux運維|自動化運維|kvm安裝windows虛擬機器|kvm安裝windows虛擬機器找不到硬碟|kvm安裝windows虛擬機器找不到網路卡|kvm安裝windows虛擬機器報錯|kvm安裝widnows2012

sre運維|Linux運維|自動化運維|kvm安裝windows虛擬機器|kvm安裝windows虛擬機器找不到硬碟|kvm安裝windows虛擬機器找不到網路卡|kvm安裝windows虛擬機器報錯|kvm安裝widnows2012

sre運維|Linux運維|自動化運維|kvm安裝windows虛擬機器|kvm安裝windows虛擬機器找不到硬碟|kvm安裝windows虛擬機器找不到網路卡|kvm安裝windows虛擬機器報錯|kvm安裝widnows2012

sre運維|Linux運維|自動化運維|kvm安裝windows虛擬機器|kvm安裝windows虛擬機器找不到硬碟|kvm安裝windows虛擬機器找不到網路卡|kvm安裝windows虛擬機器報錯|kvm安裝widnows2012

然後取消掛載的映象 把系統映象 從新掛載到系統 進行分割槽 安裝系統

安裝完畢重啟虛擬機器

安裝完會重啟windows虛擬機器

我們檢視狀態 然後啟動虛擬機器

sre運維|Linux運維|自動化運維|kvm安裝windows虛擬機器|kvm安裝windows虛擬機器找不到硬碟|kvm安裝windows虛擬機器找不到網路卡|kvm安裝windows虛擬機器報錯|kvm安裝widnows2012

sre運維|Linux運維|自動化運維|kvm安裝windows虛擬機器|kvm安裝windows虛擬機器找不到硬碟|kvm安裝windows虛擬機器找不到網路卡|kvm安裝windows虛擬機器報錯|kvm安裝widnows2012

等待安裝完成

啟動之後設定密碼 我們就進入了新的windows 作業系統

用vnc連結

sre運維|Linux運維|自動化運維|kvm安裝windows虛擬機器|kvm安裝windows虛擬機器找不到硬碟|kvm安裝windows虛擬機器找不到網路卡|kvm安裝windows虛擬機器報錯|kvm安裝widnows2012

{{< alert theme="warning" dir="ltr" >}}
⚠️ 注意
掛載軟碟機 (硬碟驅動 網路卡驅動等)註釋:網路卡驅動要在系統中裝好之後掛載 不然裝系統的時候會提示找不到光碟映象
{{< /alert >}}

在宿主機中執行命令

virsh change-media njvm2k8  hdb /usr/share/virtio-win/virtio-win.iso 

VMTools工具安裝完成後,使用如下命令解除安裝掉掛載的VMTools工具:

a.如果是Linux虛擬機器,執行如下命令解除安裝VMTools工具:

virsh change-media 【虛擬機器ID】 --eject 【vmtools-linux.iso檔案全路徑】

b.如果是Windows虛擬機器,執行如下命令解除安裝VMTools工具:

virsh change-media 【虛擬機器ID】 --eject 【vmtools-windows.iso檔案全路徑】

掛載驅映象檔案到njvm2k8主機上

用vnc連結

sre運維|Linux運維|自動化運維|kvm安裝windows虛擬機器|kvm安裝windows虛擬機器找不到硬碟|kvm安裝windows虛擬機器找不到網路卡|kvm安裝windows虛擬機器報錯|kvm安裝widnows2012


作者:SRE運維部落格

部落格地址: https://www.cnsre.cn/

文章地址:https://www.cnsre.cn/posts/211108848062/

相關話題:https://www.cnsre.cn/tags/kvm/


相關文章