当前位置: 首页 > article >正文

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等嵌入式设备

http://www.kler.cn/a/452601.html

相关文章:

  • Java爬虫实战:深度解析VIP商品详情获取技术
  • Docker 镜像加速访问方案
  • React引入Echart水球图
  • JOGL 从入门到精通:开启 Java 3D 图形编程之旅
  • RPA系列-uipath 学习笔记3
  • Unity中LineRenderer使用MeshCollider方法参考
  • 电脑丢失bcrypt.dll文件是什么原因?找不到bcrypt.dll文件修复办法来啦!
  • Java技术专家视角解读:SQL优化与批处理在大数据处理中的应用及原理
  • CSS(一):选择器
  • LeetCode 热题 100_LRU 缓存(35_146_中等_C++)(哈希表 + 双向链表)(构造函数声明+初始化列表=进行变量初始化和赋值)
  • 【贪心】力扣3218. 切蛋糕的最小总开销 I
  • 分布式通信,微服务协调组件,zookeeper
  • C++ OpenCV中读取YAML文件的详解:定义、用途与实用示例
  • 函数式编程Lambda表达式
  • PyTorch model.train() 与 model.eval() 的区别及其源码解析:中英双语
  • PostgreSQL 的历史
  • 医疗平板与普通平板对比:优势尽显
  • 嵌入式学习-QT-Day10
  • 下载 AndroidStudio 旧版本方法
  • Max AI prompt1
  • RK356x bsp 5 - 海华AW-CM358SM Wi-Fi/Bt模组调试记录
  • 云手机群控能用来做什么?
  • 【HarmonyOS应用开发——ArkTS语言】购物商城的实现【合集】
  • 12-C语言单向链表
  • git 项目初始化
  • Linux运维常见命令