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

vnc+wsl2试用

vnc+wsl2试用

一、vnc

VNC(Virtual Network Computing)是一种远程桌面共享技术,允许用户通过网络远程访问和控制另一台计算机的桌面界面。它基于客户端-服务器架构,主要用于在不同操作系统之间进行远程连接。

工作原理

  1. 客户端和服务器

    • VNC 服务器:在目标机器上运行,负责捕获屏幕图像和处理来自客户端的输入(如鼠标和键盘事件)。
    • VNC 客户端:在本地机器上运行,连接到VNC服务器,以查看和控制远程桌面。
  2. 图像传输

    • VNC使用RFB(Remote Frame Buffer)协议来传输图像和输入数据。服务器将屏幕内容编码成图像数据传递给客户端,客户端将用户的输入发送回服务器。
  3. 跨平台支持

    • VNC支持多种操作系统,包括Windows、macOS和Linux,使得不同平台之间的远程访问变得简单。

特点

  • 简单易用:用户只需在两台计算机上安装VNC软件即可进行远程控制。
  • 无须复杂配置:通常情况下,VNC的设置比较简单,适合个人和小型团队使用。
  • 安全性:基础的VNC协议并不加密传输的数据,但可以通过SSH或VPN等方式增强安全性。

使用场景

  • 远程技术支持:IT支持人员可以远程访问用户的计算机进行故障排查。
  • 远程工作:允许员工在家中或外地访问公司计算机。
  • 监控和管理:管理员可以远程管理服务器和工作站。

VNC是一个灵活且广泛使用的工具,适合各种远程访问需求。

二、wsl1和wsl2

WSL(Windows Subsystem for Linux)是Windows 10及更高版本中的一个兼容层,使用户能够在Windows上原生运行Linux二进制文件。它允许开发者使用Linux工具和环境,而无需虚拟机或双启动。

WSL 1 和 WSL 2 的区别

  1. 架构

    • WSL 1:基于翻译层,使用Windows内核与Linux二进制文件之间的翻译。这意味着Linux系统调用在Windows上被模拟。
    • WSL 2:使用完整的Linux内核,运行在轻量级虚拟机中。这提供了更接近原生Linux的体验。
  2. 性能

    • WSL 1:性能相对较低,尤其在文件系统操作和I/O密集型任务中。
    • WSL 2:显著提高了文件系统性能,尤其是在访问Linux文件系统时。其整体性能与真实的Linux环境更为接近。
  3. 兼容性

    • WSL 1:不支持某些Linux功能,如某些系统调用和应用程序。
    • WSL 2:提供更好的兼容性,支持更多的Linux应用程序和工具。
  4. 文件系统

    • WSL 1:通过模拟的文件系统访问Linux文件。
    • WSL 2:使用虚拟机的文件系统,支持更快的文件读写。
  5. 资源使用

    • WSL 1:资源使用较少,因为没有虚拟机的开销。
    • WSL 2:由于使用虚拟机,初始启动时可能会占用更多资源,但可以动态调整资源。

总结

WSL 2 提供了更好的性能和兼容性,适合需要运行复杂Linux应用程序的开发者。而WSL 1 则适合更轻量级的任务和对资源要求不高的情况。选择哪个版本取决于具体的使用需求。

三、win11+WSL+Ubuntu-24.04+tightVNC

官方教程

实践操作

将 VNC 和 WSL 2 结合使用,可以实现在 Windows 上通过 VNC 远程访问和控制 WSL 2 中的 Linux 图形界面应用程序。以下是如何结合使用的步骤:

步骤概述

  1. 安装 WSL 2
  2. 安装 Linux 发行版
  3. 安装 VNC 服务器
  4. 安装图形界面
  5. 配置 VNC 服务器
  6. 连接 VNC 客户端

详细步骤

1. 安装 WSL 2

在 PowerShell 中运行以下命令以启用 WSL 2:

wsl --install

在这里插入图片描述

在这里插入图片描述

重启计算机以完成安装。

2. 安装 Linux 发行版

从 Microsoft Store 下载并安装你喜欢的 Linux 发行版(例如 Ubuntu)。

重启后如下:

在这里插入图片描述

如果要更改默认安装的linux发行版,参考下面教程:

默认情况下,安装的 Linux 分发版为 Ubuntu。 可以使用 -d 标志进行更改。

  • 若要更改安装的发行版,请输入:wsl --install -d <Distribution Name>。 将 <Distribution Name> 替换为要安装的发行版的名称。
  • 若要查看可通过在线商店下载的可用 Linux 发行版列表,请输入:wsl --list --onlinewsl -l -o
  • 若要在初始安装后安装其他 Linux 发行版,还可使用命令:wsl --install -d <Distribution Name>
  1. 查看已安装的linux发行版和对应的wsl版本

    • 在这里插入图片描述
  2. 进入powershell,在 PowerShell 中运行以下命令以查看可用的 Linux 发行版:

    • 	wsl --list --online
      
    • 在这里插入图片描述

  3. 双击Ubuntu,进入命令行安装,成功如下:

    • 在这里插入图片描述
  4. 考虑到c盘空间有限,我选择迁移ubuntu到e盘,具体迁移步骤见附录

3. 安装 VNC 服务器

在 WSL 2 中打开终端(或者powershell输入wsl即可),运行以下命令安装 VNC 服务器(以 TigerVNC 为例):

  1. 首先更新Ubuntu

    • sudo apt update
      sudo apt upgrade
      
    • 在这里插入图片描述

  2. 安装VNC服务器

    • sudo apt install tigervnc-standalone-server tigervnc-common
      
    • 在这里插入图片描述

4. 安装图形界面

安装一个轻量级的桌面环境,例如 XFCE:

sudo apt install xfce4 xfce4-goodies

在这里插入图片描述

5. 配置 VNC 服务器
  1. 设置 VNC 密码

    vncpasswd
    
  2. 启动 VNC 服务器

    运行以下命令以启动 VNC 服务器并设置显示屏号(例如 :1):

    vncserver :1
    

    遇到问题如下:

    root@GarfieldPro:/mnt/c/WINDOWS/system32# vncserver :1
    /usr/bin/xauth:  file /root/.Xauthority does not exist
    

    搜索发现是因为在 WSL 中,通常不建议以 root 用户身份运行图形应用程序。应该创建一个普通用户并以其身份运行 VNC 服务器。

    • 创建普通用户,如果已经创建了可以直接切换,

      • #创建用户
        adduser yourusername
        #切换用户 
        su name
        
    • 重新启动vnc服务器

      • 在这里插入图片描述

      • 启动失败,尝试修复

        • #设置XDG_RUNTIME_DIR 环境变量
          mkdir -p $HOME/.X11-unix
          export XDG_RUNTIME_DIR=$HOME/.X11-unix#检查依赖
          sudo apt install xorg openbox xfce4
          #失败
          
        • sudo apt xserver-xorg-input-mouse xserver-xorg-input-kbd
          #没用
          
        • 问题是_XSERVTransmkdir: Mode of /tmp/.X11-unix should be set to 1777,但是修改权限会显示

          •  chmod 777 /tmp/.X11-unix
            chmod: changing permissions of '/tmp/.X11-unix': Read-only file system
            
          • 无法修改权限,找了好几个帖子都没用。。。。更换vnc吧

      • 换成使用tightVNC

        • #安装
          sudo apt update
          sudo apt install tightvncserver
          
  3. 配置桌面环境

    编辑 ~/.vnc/xstartup 文件,添加以下内容:

    #!/bin/sh
    xrdb $HOME/.Xresources
    startxfce4 &#或者下面的
    #!/bin/sh
    unset SESSION_MANAGER
    unset DBUS_SESSION_BUS_ADDRESS
    exec startxfce4
    

    确保该文件可执行:

    chmod +x ~/.vnc/xstartup
    chmod +x /jfm/.vnc/xstartup
    
6. 连接 VNC 客户端
  1. 获取 WSL 2 的 IP 地址

    在 WSL 终端中运行:

    :/root$ hostname -I
    172.24.134.38
    

    这个 IP 地址是 WSL 实例在网络中的地址,通常用于在同一网络上的其他设备(包括 Windows 主机)与 WSL 实例之间进行通信。

    如果要使用 VNC 客户端连接到 WSL 实例上的 VNC 服务器,应该在 VNC 客户端中输入:

    172.24.134.38:1
    

    这里的 1 是 VNC 显示号,对应于端口号 59015900 + 1)。如果为 VNC 服务器指定了不同的显示号,比如 2,那么应该连接到 172.24.134.38:2,这对应于端口号 5902

  2. 在 VNC 客户端中连接

    在win11中使用 TightVNC 客户端,输入 WSL_IP:1(例如 192.168.1.100:1)进行连接。

    这里使用的直接是

    127.0.0.1:5901
    

    成功启动如下:

    在这里插入图片描述

注意事项

  • 防火墙设置:确保 Windows 防火墙允许 VNC 连接。
  • 网络配置:WSL 2 的 IP 地址可能会在每次重启后变化,确保在连接前检查 IP。

附:

1.ubuntu迁移到e盘

要将整个 WSL 移动到 E 盘,虽然没有直接的命令来更改 WSL 的安装路径,但可以通过导出和导入所有已安装的 Linux 发行版来实现。以下是详细步骤:

步骤概述
  1. 关闭所有 WSL 实例
  2. 导出所有 Linux 发行版
  3. 卸载所有 Linux 发行版
  4. 在 E 盘创建新目录
  5. 导入所有 Linux 发行版到 E 盘
详细步骤
  1. 关闭所有 WSL 实例

首先,打开 PowerShell,确保没有任何 WSL 实例在运行:

wsl --shutdown
2. 导出所有 Linux 发行版

运行以下命令列出已安装的发行版:

PS C:\WINDOWS\system32> wsl -l -vNAME      STATE           VERSION
* Ubuntu    Stopped         2

然后,逐个导出每个发行版。假设有多个发行版(如 Ubuntu、Debian),可以使用以下命令导出:

wsl --export <DistroName> E:\wsl\<DistroName>.tar#运行:
wsl --export Ubuntu E:\wsl\Ubuntu.tar

例如:

wsl --export Ubuntu E:\wsl\Ubuntu.tar
wsl --export Debian E:\WSL\Debian.tar

在这里插入图片描述

3. 卸载所有 Linux 发行版

导出完成后,使用以下命令卸载每个发行版:

wsl --unregister <DistroName>

例如:

#运行
wsl --unregister Ubuntu
wsl --unregister Debian
4. 在 E 盘创建新目录

确保在 E 盘上创建一个新目录来存放 WSL 发行版:

 E:\wsl
5. 导入所有 Linux 发行版到 E 盘

使用以下命令将导出的发行版导入到 E 盘:

wsl --import <DistroName> E:\WSL\<DistroName> E:\WSL\<DistroName>.tar --version 2

例如:

#运行
wsl --import Ubuntu E:\wsl\Ubuntu E:\wsl\Ubuntu.tar --version 2
wsl --import Debian E:\WSL\Debian E:\WSL\Debian.tar --version 2
6. 验证安装

导入完成后,使用以下命令确认所有发行版已成功导入:

wsl -l -v
注意事项
  • 备份数据:在进行这些操作之前,确保备份重要数据。
  • E 盘空间:确保 E 盘有足够的空间来存储所有导出的发行版。
  • 更新设置:如果有特定的配置或用户设置,可能需要在新安装的发行版中重新进行配置。

通过这些步骤,可以将整个 WSL 移动到 E 盘。

成功,结果如下:
在这里插入图片描述

2. vnc server无法启动报错log

Tue Oct 22 14:21:17 2024ComparingUpdateTracker: 0 pixels in / 0 pixels outComparingUpdateTracker: (1:-nan ratio)
_XSERVTransmkdir: Mode of /tmp/.X11-unix should be set to 1777
_XSERVTransSocketCreateListener: failed to bind listener
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: failed to create listener for unixXvnc TigerVNC 1.13.1 - built 2024-04-01 08:26
Copyright (C) 1999-2022 TigerVNC Team and many others (see README.rst)
See https://www.tigervnc.org for information on TigerVNC.
Underlying X server release 12101011Tue Oct 22 14:25:09 2024vncext:      VNC extension running!vncext:      Listening for VNC connections on local interface(s), port 5901vncext:      created VNC server for screen 0
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Could not resolve keysym XF86CameraAccessEnable
> Warning:          Could not resolve keysym XF86CameraAccessDisable
> Warning:          Could not resolve keysym XF86CameraAccessToggle
> Warning:          Could not resolve keysym XF86NextElement
> Warning:          Could not resolve keysym XF86PreviousElement
> Warning:          Could not resolve keysym XF86AutopilotEngageToggle
> Warning:          Could not resolve keysym XF86MarkWaypoint
> Warning:          Could not resolve keysym XF86Sos
> Warning:          Could not resolve keysym XF86NavChart
> Warning:          Could not resolve keysym XF86FishingChart
> Warning:          Could not resolve keysym XF86SingleRangeRadar
> Warning:          Could not resolve keysym XF86DualRangeRadar
> Warning:          Could not resolve keysym XF86RadarOverlay
> Warning:          Could not resolve keysym XF86TraditionalSonar
> Warning:          Could not resolve keysym XF86ClearvuSonar
> Warning:          Could not resolve keysym XF86SidevuSonar
> Warning:          Could not resolve keysym XF86NavInfo
Errors from xkbcomp are not fatal to the X server
[mi] mieq: warning: overriding existing handler (nil) with 0x55812e9d6580 for event 2
[mi] mieq: warning: overriding existing handler (nil) with 0x55812e9d6580 for event 3Tue Oct 22 14:25:39 2024ComparingUpdateTracker: 0 pixels in / 0 pixels outComparingUpdateTracker: (1:-nan ratio)

3.参考

github 无法改变/tmp/X11-unix权限

Linux下出现Read-only file system的解决办法

tigervnc-server 无法启动问题


http://www.mrgr.cn/news/56259.html

相关文章:

  • WSL2 Linux子系统调整存储位置
  • 速盾:cdn能加速游戏吗?
  • 【Flutter】iOS上使用 UIPasteboard.detectPatterns 优化剪切板权限弹窗逻辑
  • 炒股VS炒游戏装备,哪个更好做
  • SP00S12浪涌保护模块,给你的工业总线上道“保险”
  • React是如何工作的?
  • 深入浅出剖析重量级文生图模型Flux.1
  • 数据结构图的应用最小生成树-普里姆算法(C语言代码+无向网+有向网+邻接矩阵存储结构)-最低附带图片+终端输入内容方便理解
  • 【Python爬虫系列】_031.Scrapy_模拟登陆中间件
  • 让你的 IDEA 使用更流畅 | IDEA内存修改
  • 常见的加密算法的分类及其原理
  • 利用自定义 ref 实现函数防抖
  • 批量合并同名Labelme标注文件内容
  • freeRTOS中互斥锁与信号量使用?
  • vue3学习记录-v-model
  • Numpy基础02
  • 浏览器控制的无线开关
  • 【03】RabbitMQ核心功能扩展
  • LeetCode718:最长重复子数组
  • [DB] NSM
  • 在线教育(培训+考试)/企业培训-企业培训平台-企业培训平台系统-企业内部培训系统-在线教育-Java语言开发
  • 「AIGC」n8n AI Agent开源的工作流自动化工具
  • php基础:数据类型、常量、字符串
  • 【内信互联】私有化安全性企业远程运维办公解决方案
  • Redis-04 Redis管道
  • 《黑神话:悟空》:又是这只跨界的猴子,诠释了传承与创新的关系