前提條件等曼,cpu要支持xvm或者svm片排,可以用lscpu查看加袋。
更新系統(tǒng)
$sudo pacman -Syy
$sudo pacman -Suy
安裝kvm+noVNC
$sudo pacman -Sy libvirt virt-install qemu python python-numpy libvirt-python git tigervnc wget net-tools bridge-utils ovmf
$cd ~
$git clone https://github.com/novnc/noVNC.git
設(shè)置vnc
$vncpasswd
$vncserver
$vncserver -kill :1
建立放ISO的文件夾盯蝴,比如驅(qū)動(dòng)毅哗,系統(tǒng)等都可以放在里面
$mkdir -p ~/ISO
$cd ~/ISO
$wget -c -t5 https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win.iso
$wget -c -t5 https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win_x86.vfd
$wget -c -t5 https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win_amd64.vfd
然后把windows系統(tǒng)放到里面听怕,建議用安裝版,因?yàn)樾枰猣6加載軟盤驅(qū)動(dòng)虑绵,來驅(qū)動(dòng)硬盤尿瞭。
把你當(dāng)前用戶加到kvm和libvirt組
$sudo usermod -a -G kvm,libvirt xxxxx #注意:xxxxx是指你當(dāng)前使用的用戶名
若不加組,你只能使用root用戶啟動(dòng)虛擬機(jī)翅睛,不建議這樣做声搁。
編輯qemu,讓當(dāng)前用戶能正常創(chuàng)建啟動(dòng)虛擬機(jī)捕发。
$sudo nano /etc/libvirt/qemu.conf
去掉#號(hào)并更改為你當(dāng)前用戶和用戶組
user = "xxxxx"
group="libvirt"
創(chuàng)建一個(gè)橋接網(wǎng)卡
$sudo cp /etc/netctl/examples/bridge /etc/netctl/kvm-bridge
$sudo nano /etc/netctl/kvm-bridge
更改和添加內(nèi)容
Description="Kvm Bridge connection"
Interface=br0
Connection=bridge
BindsToInterfaces=(enp2s0)
# 我的網(wǎng)卡名是enp2s0疏旨,用ip addr查看你的網(wǎng)卡名并更改。
IP=static
# 我使用的是靜態(tài)IP扎酷,如果你使用動(dòng)態(tài)IP,你改成dhcp檐涝,并刪除下面的內(nèi)容。
Address=('192.168.1.6/24')
Gateway='192.168.1.1'
DNS=('211.98.4.1' '211.98.2.4')
MACAddressOf=enp2s0
## Ignore (R)STP and immediately activate the bridge
#SkipForwardingDelay=yes
激活并使用些橋接網(wǎng)卡
$sudo netctl enable kvm-bridge
$sudo netctl start kvm-bridge
創(chuàng)建虛擬機(jī)
先創(chuàng)建一個(gè)事半功倍的運(yùn)行腳本
$cd ~
$nano winkvm.sh
添加內(nèi)容
#!/bin/bash
exec virt-install \
--connect qemu:///system \
--virt-type=kvm \
--name=win10 \
--ram=2048 \
--vcpus=2 \
--hvm \
--arch x86_64 \
--boot loader=/usr/share/ovmf/ovmf_code_x64.bin,loader_ro=yes,loader_type=pflash,nvram_template=/usr/share/ovmf/ovmf_vars_x64.bin,loader_secure=no \
--machine q35 \
--os-variant=win10 \
--cdrom=/home/xxxxx/ISO/win10.iso \
--network bridge=br0,model=virtio \
--graphics vnc,listen=0.0.0.0,password=passwd123,port=5910 \
--disk path=/home/xxxxx/kvm/images/win10.img,size=30,bus=virtio,format=qcow2 \
--disk /home/xxxxx/ISO/virtio-win-0.1.141_amd64.vfd,device=floppy \
--boot=uefi \
--video qxl
解析上面的內(nèi)容:
--virt-type=kvm: 使用KVM作為虛擬機(jī)監(jiān)視器霞玄。
--name=win10: 虛擬機(jī)實(shí)例的名字骤铃,每個(gè)虛擬機(jī)的名字都不能一樣,不能有空格坷剧。
--ram=2048: 指定虛擬機(jī)內(nèi)存大小惰爬,單位是Mb。
--vcpus=2: 為虛擬機(jī)指定分配的虛擬CPU核數(shù)惫企。
--os-variant=win10: 指定虛擬機(jī)系統(tǒng)所屬系列以優(yōu)化虛擬機(jī)參數(shù)撕瞧,可以通過命令osinfo-query os 來顯示所有支持的系統(tǒng)列表。
--hvm: 啟用全虛擬化狞尔,KVM虛擬機(jī)支持全虛擬化丛版,屬于優(yōu)化性參數(shù)。
--cdrom=/home/xxxxx/ISO/win10.iso: 指定作為虛擬機(jī)光驅(qū)內(nèi)容的設(shè)備或文件偏序,可以是主機(jī)的CDROM或者iso文件页畦。
--network network=br0,model=virtio: 將虛擬機(jī)連接到主機(jī)網(wǎng)絡(luò),使用橋接模式研儒,網(wǎng)卡模式設(shè)置為virtio豫缨。
--graphics vnc: 設(shè)置虛擬機(jī)的console并將其輸出到VNC,這樣就可以通過VNC來連接虛擬機(jī)了端朵。同時(shí)可以指定vnc的端口和監(jiān)聽范圍以及密碼: port=5910好芭,listen=0.0.0.0,password=passwd123連接密碼自行更改冲呢。默認(rèn)情況下端口為從5900開始的第一個(gè)空閑端口舍败,監(jiān)聽范圍為本機(jī)127.0.0.1,修改為0.0.0.0以使外網(wǎng)主機(jī)可以連接。后面會(huì)講對(duì)于只支持SSH協(xié)議的情況下邻薯,如何通過SSH隧道連接裙戏,所以是否設(shè)置為0.0.0.0沒有影響,但能設(shè)置為0.0.0.0的話弛说,還是設(shè)置為0.0.0.0挽懦,畢竟直接通過VNC連接更加方便。這些參數(shù)也可以在/etc/libvirt/qemu.conf中修改木人,以使其對(duì)所有虛擬機(jī)生效信柿,VNC默認(rèn)連接沒有密碼。VNC可以理解為linux下的遠(yuǎn)程桌面醒第。
--disk path=/home/xxxxx/kvm/images/win7.img,size=30,bus=virtio,format=qcow2: 指定虛擬機(jī)所使用的存儲(chǔ)路徑渔嚷,大小為30G,bus類型為virtio(當(dāng)然也可以為ide)稠曼,磁盤格式為qcow2形病,如果不指定fortmat,則默認(rèn)格式即為raw霞幅。網(wǎng)絡(luò)和磁盤建議都設(shè)置為virtio漠吻,virtio即啟動(dòng)優(yōu)化的虛擬機(jī)專用IO驅(qū)動(dòng),性能更好司恳。磁盤格式使用qcow2更好途乃,因?yàn)閝cow2格式即QEMU支持的QEMU Copy On Write磁盤格式,是優(yōu)化后的磁盤格式扔傅,支持快照耍共,并且是使用多少占用多少空間。例如你分配了20G大小猎塞,如果是raw格式试读,則立即占用20G,而qcow2則是從很小開始荠耽,用多少钩骇,占用多少。之前有些人說qcow2性能不如raw铝量,這兩種格式可以使用qemu-img進(jìn)行轉(zhuǎn)換伊履。
--disk /home/xxxxx/ISO/virtio-win-0.1.141_amd64.vfd:指定軟盤,添加驅(qū)動(dòng)用款违,類型device=floppy軟驅(qū)。
--boot cdrom,hd --video qxl:--boot是指定boot啟動(dòng)順序群凶,不指定的話插爹,只顯示硬盤。--video是指定顯卡為qxl,你也可以選擇vga,cirrus,vmware,virtio等。
啟動(dòng)虛擬機(jī)
$chmod +x winkvm.sh
$./winkvm.sh //這一步可能不動(dòng)的時(shí)候按Ctr + C谐宙,繼續(xù)下面
$virsh --connect qemu:///system list --all
VNC遠(yuǎn)程連接虛擬機(jī)
$~/noVNC/utils/launch.sh --vnc localhost:5910
在其它電腦上打開http://IP:6080/vnc.html定血,輸入password中設(shè)置的passwd123就可以連接上了舞虱。