ubuntu22.04上安装win10虚拟机,并采用noVNC+frp,让远程通过web访问桌面
ubuntu22.04上安装win10虚拟机,并采用noVNC+frp,让远程通过web访问桌面
- 一.相关知识
- 二.操作步骤
- 1.准备工作
- A.安装ubuntu22.04
- B.安装必须的软件包
- C.为root用户设置密码[jack],并允许ssh登录
- D.打开MobaXterm[支持X11Forwarding],通过ssh用root帐号登录ubuntu22.04,确认是否支持KVM,配置pci passthrough
- 2.安装KVM
- 3.准备依赖
- 4.创建虚机
- 5.将ubuntu22.04物理机上的目录映射进虚机
- A.物理机上的配置过程
- B.在虚机中安装virtiofs驱动,并启动服务,将物理机上的目录映射进虚机
- 6.虚机中安装UltraVNC Server
- 7.远程控制
- A.方式一
- B.方式二
演示视频:
ubuntu22.04上安装win10虚拟机
一.相关知识
- ubuntu22如何安装kvm
- kvm如何创建win10虚机
- 如何通过noVNC连接虚机
- ubuntu22如何实现端口转发
- 如何在虚机与宿主机之间共享存储
二.操作步骤
1.准备工作
A.安装ubuntu22.04
- 镜像下载
- 在BIOS中开启VT-d
- 默认安装
B.安装必须的软件包
sudo apt update
sudo apt install net-tools -y
sudo apt install openssh-server -y
sudo apt install vim -y
ifconfig # 获取IP
C.为root用户设置密码[jack],并允许ssh登录
export passwd=jack && printf "${passwd}\n${passwd}\n" | sudo passwd root
sudo sed -i "s/#PermitRootLogin.*/PermitRootLogin=yes/g" /etc/ssh/sshd_config
sudo systemctl restart sshd
D.打开MobaXterm[支持X11Forwarding],通过ssh用root帐号登录ubuntu22.04,确认是否支持KVM,配置pci passthrough
- 运行xclock,确认可能显示界面
- 确认是否支持KVM
输出sudo apt install cpu-checker -y kvm-ok
INFO: /dev/kvm exists KVM acceleration can be used
- 开启pci passthrough
输出sudo sed -i "s/GRUB_CMDLINE_LINUX=.*/GRUB_CMDLINE_LINUX=\"intel_iommu=on iommu=pt\"/g" /etc/default/grub sudo cat /etc/default/grub | grep -w "GRUB_CMDLINE_LINUX"
GRUB_CMDLINE_LINUX="intel_iommu=on iommu=pt"
- 重新创建引导
sudo apt install grub-common -y #EFI模式 sudo grub-mkconfig -o /boot/efi/EFI/ubuntu/grub.cfg #BIOS模式 grub-mkconfig -o /boot/grub/grub.cfg #确认是否添加增加成功 sudo cat /boot/efi/EFI/ubuntu/grub.cfg | grep "intel_iommu"
- 重启系统:
sudo reboot
- 再次确认kernel启动参数是否添加成功
sudo cat /proc/cmdline | grep "intel_iommu"
2.安装KVM
sudo apt update
sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients \
bridge-utils virt-manager libvirt-daemon-config-network
sudo systemctl enable --now libvirtd
sudo systemctl start libvirtd
sudo virsh net-autostart default
sudo ifconfig virbr0
3.准备依赖
- A.创建相关目录
# 磁盘镜像存储位置
sudo mkdir -p /var/lib/libvirt/images
# ISO镜像存储位置
sudo mkdir -p /var/lib/libvirt/boot/
# 创建虚机与宿主机之间的共享目录
sudo mkdir -p /home/kvm_share_data
sudo chmod 777 -R /home/kvm_share_data
- B.下载KVM/QEMU Windows guest drivers[virtio-win]
wget -O /var/lib/libvirt/boot/virtio-win-0.1.266.iso \
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.266-1/virtio-win-0.1.266.iso
-
C.准备win10系统镜像
- 在PC机上下载MediaCreationTool
- 运行MediaCreationTool,下载Windows.iso安装镜像
- 将Windows.iso拷贝到ubuntu22.04的
/var/lib/libvirt/boot/
目录下
-
D.下载UltraVNC Server
wget -O /home/kvm_share_data/UltraVNC_1_3_81_X64_Setup.exe \
https://www.uvnc.eu/download/1381/UltraVNC_1_3_81_X64_Setup.exe
4.创建虚机
- A.创建虚机
# 删除旧的虚机和镜像
virsh destroy win10
virsh undefine win10
sudo rm -f /var/lib/libvirt/images/win10.qcow2
virt-install \
--virt-type=kvm \
--name win10 \
--ram 10240 \
--vcpus=4 \
--check path_in_use=off \
--console pty,target_type=serial\
--connect qemu:///system \
--os-variant=win10 \
--cdrom=/var/lib/libvirt/boot/Windows.iso \
--disk path=/var/lib/libvirt/boot/virtio-win-0.1.266.iso,device=cdrom \
--network=bridge=virbr0,model=virtio \
--graphics vnc \
--disk path=/var/lib/libvirt/images/win10.qcow2,size=20,bus=virtio,format=qcow2
- B.系统安装
- 选择Windows 10专业版本
- 选择自定义安装
- 点击加载驱动->浏览
- 展开CD驱动器 virtio-win-0.1.266
- 选择amd64/w10 目录,点击确定,之后点击下一步,安装Red Hat VirtIO SCSI controller驱动
- 驱动安装成功后,可以显示磁盘,点击新建,应用,创建主分区,点击下一步,开始安装
- C.安装virtio-win-gt-x64.exe
- D.安装virtio-win-guest-tools.exe
5.将ubuntu22.04物理机上的目录映射进虚机
A.物理机上的配置过程
- 关闭虚机
virsh shutdown win10
- 编辑虚机
virsh edit win10
- 分别在"domain"和"devices"部分添加以下代码:
<memoryBacking>
<source type="memfd"/>
<access mode="shared"/>
</memoryBacking>
<filesystem type="mount" accessmode="passthrough">
<driver type="virtiofs"/> <source dir="/home/kvm_share_data"/>
<target dir="kvm_share"/>
<address type="pci" domain="0x0000" bus="0x07" slot="0x00" function="0x0"/>
</filesystem>
/home/kvm_share_data
kvm_share:共享名
- 启动虚拟
virsh start win10
- 显示控制台
virt-viewer
B.在虚机中安装virtiofs驱动,并启动服务,将物理机上的目录映射进虚机
- 下载链接
- 安装winfsp
- 打开任务管理器,选择服务Tab,找到VirtioFsSvc服务,开启该服务
- 打开"我的电脑",可以看到名为kvm_share的磁盘
6.虚机中安装UltraVNC Server
- 下载链接
- 或使用共享目录中下载好的文件
- 只选择UltraVNC Server
- Select Additional Tasks界面中,全部选中
- 右击任务栏上的图标,点击Admin Property,配置VNC Password
- 点击Apply,完成配置
- 获取虚机的IP,并记录
7.远程控制
A.方式一
-
开启端口转发,将宿主机上的5901端口转发到虚机里的UltraVNC Server端口【5900】
sudo apt install ncat -y sudo ncat --sh-exec "ncat 192.168.122.220 5900" -l 5901 --keep-open
-
在windows PC机上,下载UltraVNC_1_3_81_X64_Setup.exe,安装UltraVNC Viewer
-
通过UltraVNC Viewer,连接到ubuntu22.04的5901端口,远程控制win10虚机
B.方式二
- 在ubuntu22.04宿主机上搭建noVNC,通过WEB控制虚机
apt install -y git python3-pip pip3 install websockify git clone https://github.com/novnc/noVNC.git ./noVNC/utils/novnc_proxy --listen 10.22.4.111:6080 --vnc 192.168.122.220:5900
- 在windows PC机上,打开浏览器,输入以下URL,即可通过WEB控制win10虚机
http://10.22.4.111:6080/vnc.html?host=10.22.4.111&port=6080
- 内网穿透参考 [可选] 如何通过frp内网穿透工具访问内网里的NVR、IPC等嵌入式设备