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.rhkb.cn/news/495779.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Windows11上编译C#的实现Mono的步骤

在Windows11上编译Mono的步骤 1、 在win11打开开发者模式,在更新和安全选项里,如下图: 2、下载并安装64位的cygwin, 下载网站:www.cygwin.com 3、 安装 Visual Studio 2015 or later 的社区版本。 4、 下载Mono的windows最新版本。 5、 在cmd.exe里运行下面的命令来安…

我的创作纪念日(五年)

慕然回首 平平无奇的周一早晨&#xff0c;收到来自csdn的提醒&#xff0c;创作纪念日五周年了&#xff0c;这也意味着我从事开发行业差不多有整整五年了&#xff0c;五年啊&#xff01;你知道这五年我是怎么过的吗&#xff1f;一句Just do IT&#xff0c;我做it整整做了五年&am…

python+reportlab创建PDF文件

目录 字体导入 画布写入 创建画布对象 写入文本内容 写入图片内容 新增页 画线 表格 保存 模板写入 创建模板对象 段落及样式 表格及样式 画框 图片 页眉页脚 添加图形 构建pdf文件 reportlab库支持创建包含文本、图像、图形和表格的复杂PDF文档。 安装&…

人工智能ACA(七)——计算机视觉基础

一、自然语言处理基本介绍 1. 自然语言处理的定义 1-1 自然语言 人类使用的在社会生活中自然形成的语言 1-2 自然语言处理 目标是让计算机能够理解、解析、生成和处理人类的自然语言 包含自然语言理解和自然语言生成两部分组成 2. 自然语言处理的发展趋势 3.自然语言处理…

Ubuntu20.04 交叉编译Qt5.15.15 for rk3588

rk3588编译Qt搞了我大半年了&#xff0c;一直困惑特别鸣谢&#xff1a;qq1033878279的网友远程帮我编译演示了一遍。 一、vmware 安装基础工具 sudo apt install -y build-essential net-tools openssh-server vim openssl libssl-dev 二、vmware 下载 cmake和Qt源码 下载cm…

使用开源在线聊天工具Fiora轻松搭建个性化聊天平台在线交流

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff1a;人工智能教程 文章目录 前言1.关于Fiora2.安装Docker3.本地部署Fiora4.使用Fiora5.cpolar内网穿透工具安装6.创建远程连接公网地址7.固定Uptime …

DDoS防护中的流量清洗与智能调度

DDoS防护中的流量清洗与智能调度有哪些好处 在数字化高度发展的今天&#xff0c;企业依赖于互联网进行业务运营&#xff0c;而网络安全威胁也随之增加。其中&#xff0c;DDoS&#xff08;分布式拒绝服务&#xff09;攻击是一种常见且破坏性极强的网络攻击手段。为了有效应对DDo…

“乡村探索者”:村旅游网站的移动应用开发

3.1 可行性分析 从三个不同的角度来分析&#xff0c;确保开发成功的前提是有可行性分析&#xff0c;只有进行提前分析&#xff0c;符合程序开发流程才不至于开发过程的中断。 3.1.1 技术可行性 在技术实现层次&#xff0c;分析了好几种技术实现方法&#xff0c;并且都有对应的成…

SpringBoot使用Validation校验参数

准备工作 引入相关依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId></dependency> 约束性注解(简单)说明 AssertFalse可以为null,如果不为null的话必…

Websocket客户端从Openai Realtime api Sever只收到部分数据问题分析

目录 背景 分析 解决方案 背景 正常情况下&#xff0c;会从Openai Realtime api Sever收到正常的json数据,但是当返回音频数据时&#xff0c;总会返回非json数据。这是什么问题呢&#xff1f; 分析 期望的完整响应数据如下&#xff1a; {"session": {"inp…

dockerfile文档编写(1):基础命令

目录 Modelscope-agentARGFROMWORKDIRCOPYRUNENVCMD run_loopy Modelscope-agent ARG BASE_IMAGEregistry.cn-beijing.aliyuncs.com/modelscope-repo/modelscope:ubuntu22.04-cuda12.1.0-py310-torch2.1.2-tf2.14.0-1.12.0FROM $BASE_IMAGEWORKDIR /home/workspaceCOPY . /hom…

Redis-十大数据类型

Reids数据类型指的是value的类型&#xff0c;key都是字符串 redis-server:启动redis服务 redis-cli:进入redis交互式终端 常用的key的操作 redis的命令和参数不区分大小写 &#xff0c;key和value区分 查看当前库所有的key keys * 判断某个key是否存在 exists key 查看key是什…

数据结构之栈,队列,树

目录 一.栈 1.栈的概念及结构 2.栈的实现 3.实现讲解 1.初始化栈 2.销毁栈 3.压栈 4.出栈 5.返回栈顶元素 6.返回栈内元素个数 7.判断栈内是否为空 二.队列 1.队列的概念及结构 2.队列的实现 3.实现讲解 1.初始化队列 2.销毁队列 3.单个成员入队列 4.单个成员…

(六)循环神经网络_基本的RNN

一、提出背景 前馈神经网络不考虑数据之间的关联性&#xff0c;网络的输出只和当前时刻网络的输入相关。然而&#xff0c;现实问题中存在着很多序列型的数据&#xff08;文本、语音以及视频等&#xff09;。 例如&#xff1a;室外的温度是随着气候的变化而周期性的变化的&…

React引入Echart水球图

在搭建React项目时候&#xff0c;遇到了Echart官方文档中没有的水球图&#xff0c;此时该如何配置并将它显示到项目中呢&#xff1f; 目录 一、拓展网站 二、安装 三、React中引入 1、在components文件夹下新建一个组件 2、在组件中引入 3、使用水波球组件 一、拓展网站 …

微软edge浏览器 v131.0.2903.99便携版

前言 Microsoft Edge浏览器是个新浏览器&#xff0c;它用起来很简单&#xff0c;界面也很清爽。这个浏览器功能特别多&#xff0c;里面还带了微软的小助手Contana&#xff0c;能帮用户做不少贴心的事儿。它支持安装各种小工具&#xff08;插件&#xff09;&#xff0c;还能在网…

深度学习中batch_size

Batch size调整和epoch/iteration的关系 训练数据集总共有1000个样本。若batch_size10&#xff0c;那么训练完全体样本集需要100次迭代&#xff0c;1次epoch。 训练样本10000条&#xff0c;batchsize设置为20&#xff0c;将所有的训练样本在同一个模型中训练5遍&#xff0c;则…

使用“NodeMCU”、“红外模块”实现空调控制

项目思路 空调遥控器之所以能够实现对空调的控制&#xff0c;是因为它能够向空调发射出特定的红外信号。从理论上来说&#xff0c;任何能够发射出这种相同红外信号的红外发射器&#xff0c;都可以充当空调遥控器&#xff08;这也正是手机能够控制多种不同品牌空调的原因所在&a…

Git--tag标签远程管理

目录 一、git 标签 tag管理 1.创建一个轻量级标签 2.创建一个带有附注的标签 3.删除标签 二、标签推送 1.再创建两个分支 2.把多个标签推送到远程 三、标签拉取 四、删除远程标签 1.命令 2.查看远程仓库&#xff0c;标签被删除 3.远程标签删除后本地标签不会消失&a…

43. Three.js案例-绘制100个立方体

43. Three.js案例-绘制100个立方体 实现效果 知识点 WebGLRenderer&#xff08;WebGL渲染器&#xff09; WebGLRenderer是Three.js中最常用的渲染器之一&#xff0c;用于将3D场景渲染到网页上。 构造器 WebGLRenderer(parameters : Object) 参数类型描述parametersObject…