ubuntu22.04上安装win10虚拟机,并采用noVNC+frp,让远程通过web访问桌面

ubuntu22.04上安装win10虚拟机,并采用noVNC+frp,让远程通过web访问桌面

演示视频:

ubuntu22.04上安装win10虚拟机

一.相关知识

  • ubuntu22如何安装kvm
  • kvm如何创建win10虚机
  • 如何通过noVNC连接虚机
  • ubuntu22如何实现端口转发
  • 如何在虚机与宿主机之间共享存储

二.操作步骤

1.准备工作

A.安装ubuntu22.04
B.安装必须的软件包
bash 复制代码
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登录
bash 复制代码
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

    bash 复制代码
    sudo apt install cpu-checker -y
    kvm-ok

    输出

    bash 复制代码
    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"
  • 重新创建引导

    bash 复制代码
    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启动参数是否添加成功

    bash 复制代码
    sudo cat /proc/cmdline  | grep "intel_iommu"

2.安装KVM

bash 复制代码
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.创建相关目录
bash 复制代码
# 磁盘镜像存储位置
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]
bash 复制代码
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

bash 复制代码
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.创建虚机
bash 复制代码
# 删除旧的虚机和镜像
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.物理机上的配置过程
  • 关闭虚机
bash 复制代码
virsh shutdown win10
  • 编辑虚机
bash 复制代码
virsh edit win10
  • 分别在"domain"和"devices"部分添加以下代码:
xml 复制代码
<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:共享名

  • 启动虚拟
bash 复制代码
virsh start win10
  • 显示控制台
bash 复制代码
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】

    bash 复制代码
    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控制虚机

    bash 复制代码
    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虚机

    bash 复制代码
    http://10.22.4.111:6080/vnc.html?host=10.22.4.111&port=6080
  • 内网穿透参考 [可选 ] 如何通过frp内网穿透工具访问内网里的NVR、IPC等嵌入式设备

相关推荐
Y_Hungry5 小时前
Linux 怎么使用局域网内电脑的网络访问外部
linux·运维·服务器
网硕互联的小客服6 小时前
如何解决服务器文件丢失或损坏的问题
运维·服务器
Shanxun Liao6 小时前
如何在 PowerEdge 服务器上设置 NIC 分组
运维·服务器
开开心心就好6 小时前
提升办公效率的PDF转图片实用工具
运维·服务器·网络·python·智能手机·pdf·ocr
茅坑的小石头7 小时前
linux tar命令详解。压缩格式对比
linux·运维·服务器
球求了7 小时前
Linux 入门:操作系统&&进程详解
linux·运维·服务器·开发语言·学习
李匠20247 小时前
C++负载均衡远程调用学习之负载均衡算法与实现
运维·c++·学习·负载均衡
JAVA学习通7 小时前
[javaEE]网络编程
运维·服务器·网络
偶尔微微一笑9 小时前
postgresql数据库基本操作
运维·数据库·postgresql·oracle
会飞的涂涂10 小时前
Linux中的粘滞位和开发工具和文本编辑器vim
linux·运维·服务器