wsl中的Ubuntu安装远程桌面

wsl Ubuntu默认只能打开命令行,看不到图形化界面,有些操作不方便。这里介绍两种方法来远程连接到wsl里

VNC

因为win10的wsl不支持systemd, 所以这种方式只能是Windows11的系统,Window10只能用xrdp

1、禁用WSLg

c:\users\用户名下新建一个.wslconfig文件,内容如下:

[wsl2]
guiApplications=false
2、安装桌面程序

可以先安装桌面程序的一个管理程序: sudo apt install tasksel -y

然后运行sudo tasksel,选择需要的桌面程序安装(空格是选中,上下键切换,tab切到OK键),我这里选择Ubuntu desktop

3、安装vnc服务端

sudo apt install tigervnc-standalone-server -y

4、设置vnc密码

vncpasswd 为当前用户设置

sudo -H vncpasswd 为root设置

sudo -H -u gdm vncpasswd 为gdm用户设置

建议都设置一遍

5、修改Xorg文件

如果某次执行apt upgrade后,连接不上vnc了,应该就是这个文件被恢复成了默认,你再改回来就可以了。

chatgpt关于这个文件的解释:

sudo mv /usr/bin/Xorg /usr/bin/Xorg_old sudo vim /usr/bin/Xorg_new写入以下内容:

#!/bin/bash
for arg doshiftcase $arg in# Xvnc doesn't support vtxx argument. So we convert to ttyxx insteadvt*)set -- "$@" "${arg//vt/tty}";;# -keeptty is not supported at all by Xvnc-keeptty);;# -novtswitch is not supported at all by Xvnc-novtswitch);;# other arguments are kept intact*)set -- "$@" "$arg";;esac
done# Here you can change or add options to fit your needs
command=("/usr/bin/Xvnc" "-geometry" "1920x1080" "-PasswordFile" "${HOME:-/root}/.vnc/passwd" "$@")systemd-cat -t /usr/bin/Xorg echo "Starting Xvnc:" "${command[@]}"exec "${command[@]}"

这个脚本就是打印一条日志后启动xvnc服务,vnc的分辨率是1920x1080,你可以改成你显示器的分辨率大小,PasswordFile是指定vnc连接时密码文件的路径,因为刚才对当前用户、root和gdm都设置了密码,所以这三个用户的home下都有这个文件

sudo chmod 0755 /usr/bin/Xorg_new sudo ln -sf Xorg_new /usr/bin/Xorg

启用systemd

最新的系统已经默认启用了,你也可以编辑看看。

sudo vim /etc/wsl.conf写入以下内容

[boot]
systemd=true

github上说: 开启systemd之后,wsl就需要执行正常的关机(shutdown now | poweroff)或者在远程桌面里点关机,然后再执行wsl --shutdown。如果直接执行wsl --shutdown可能会造成系统损坏,不过我平时一直都是wsl --shutdown也没啥问题

连接vnc后自动登录

sudo vim /etc/gdm3/custom.conf取消下面的注释,并改成当前用户名

AutomaticLoginEnable=true
AutomaticLogin=用户名

当你连接vnc后,就会默认登录你填写的用户名

重启wsl

wsl --shutdown 关闭再打开

查看是否运行成功

正常来说重新启动wsl,使用ps -ef|grep vnc查看进程时有一个Xvnc的进程,使用lsof -i:5900可以看到Xvnc监听了5900端口

下载vnc客户端

我用的RealVNC Viewer, 下载地址: https://www.realvnc.com/pt/connect/download/viewer/。连接的时候地址填:`127.0.0.1:5900`, 密码就是vncpasswd设置的密码

上面有点花屏不知道是为什么,我每次连接都是这样。可以通过右键改几次背景之后就正常了

xrdp

xrdp的配置很简单,先安装下包sudo apt-get install xrdp -y

安装完就会创建一个自启的服务/etc/systemd/system/multi-user.target.wants/xrdp.service

因为xrdp的端口和Window本身冲突了,需要改下端口: sudo vim /etc/xrdp/xrdp.ini,我改成3399了

然后重启服务: sudo systemctl restart xrdp

这时候你可能会发现127.0.0.1:3399连接不上,但是用localhost:3399又可以连接上。原因可以看https://stackoverflow.com/a/73407304,不过用localhost也是一样的。

session选Xorg或者Xvnc都可以,用户名填wsl的用户名和密码

总结

正常情况下两个都是可以的,但是最近更新后,我发现第一种方法里运行Gparted的时候直接闪退,然后在连上去就不显示任何东西了,第二种方法如果session选的是Xorg也是这种情况,选Xvnc就正常。

不清楚是什么原因,目前先用着xrdp的Xvnc,后面看看更新会不会解决这个bug

参考

  • https://gist.github.com/tdcosta100/385636cbae39fc8cd0937139e87b1c74

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/311452.html

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

相关文章

12.31_黑马数据结构与算法笔记Java

目录 345 设计跳表 Leetcode 1206 346 设计最小栈 Leetcode 155 347 设计端网址 Leetcode 355 348 设计推特 Leetcode 355 349 股票系列问题 Leetcode 121 350 股票系列问题 Leetcode 122 351 股票系列问题 Leetcode 714 352 股票系列问题 Leetcode 309 353 股票系列问…

【Redis-10】Redis集群的实现原理和实践

Redis集群是Redis提供的分布式数据库方案,通过分片来进行数据共享,实现复制和故障转移的功能。 1. Redis集群节点 一个Redis集群由多个节点组成,多个节点可以通过命令实现连接,由独立状态转为集群状态,命令是cluster …

LabVIEW开发智能火灾自动报警系统

LabVIEW开发智能火灾自动报警系统 系统基于LabVIEW虚拟仪器开发,由火灾报警控制器、感温感烟探测器、手动报警器、声光报警器、ZigBee无线通讯节点以及上位机电脑等组成,展示了LabVIEW在智能化火灾预警与控制方面的应用。该系统通过结合二总线协议和Zig…

动态规划10-多重背包

题目描述 有N种物品和一个容量为V 的背包。第i种物品最多有Mi件可用,每件耗费的空间是Ci ,价值是Wi 。求解将哪些物品装入背包可使这些物品的耗费的空间 总和不超过背包容量,且价值总和最大。 思路分析 区别于完全背包和简单的01背包问题&…

天擎离线升级工具使用说明

免责声明 本文旨在提供信息和解决问题的建议,观点和建议可能不适用于个人情况,仅供参考!!! 文章中所有敏感信息已经修改,对于因本文中提供的信息而导致的任何直接或间接损失或损害不承担责任。 使用本文中的…

【C++】STL 容器 - multiset 容器 ( std::multiset 容器简介 | std::multiset 容器 常用操作 api 简介 )

文章目录 一、mulset 容器1、std::multiset 容器简介2、代码示例 - multiset 容器 二、std::multiset 容器 常用操作 api 简介1、常用 api 简介2、代码示例 - multiset 容器常用操作 一、mulset 容器 1、std::multiset 容器简介 在 C 语言 的 标准模板库 ( STL , Standard Temp…

街道洗扫车VR虚拟仿真展示创新了培训方式

吸污车用于收集处理城市中的污水、污泥,起到疏通管道的作用,特别是洪涝灾害时是重要的清理工具。吸污车由于内部结构复杂、工艺原理繁琐且造价成本高,因此传统的吸污车作业培训难以达到满意效果。VR虚拟仿真技术的出现,给企业提供…

多线程编程设计模式(单例,阻塞队列,定时器,线程池)

💕"只有首先看到事情的可能性,才会有发生的机会。"💕 作者:Mylvzi 文章主要内容:多线程编程设计模式(单例,阻塞队列,定时器,线程池) 本文主要讲解多线程编程中常用到的设计模式,包括单例模式,阻塞队列,定时…

2023年度总结——我关注的技术界大事回顾

2023年发生了那么多新闻事件,作为程序员更关注哪些事件呢,这些事件又能引起什么人生感触呢,在这篇文章中你将看到我的想法,那你有什么想法呢 2023技术大事回顾 跟你说话的不一定是人——ChatGPT4开启人工智能新篇章 2023年3月15…

AI产品经理-借力

AI产品经理-借力:学会善用供应商改造自有产品 1.整个项目的工作方法 2.项目启动-行业调研 3.项目启动-供应商选型

Spring Boot快速搭建一个简易商城项目【一展示商城首页篇】

前言:今天我来使用Spring Boot快速搭建一个简易商城项目以下是相关的思路流程,如果有更好的思路,欢迎大佬评论留言!!! 一,实现思路: 创建 Spring Boot 项目: 使用 Spring…

是时候将javax替换为Jakarta了

开始 相信很多朋友在使用新版本的Spring的时候,发现了一些叫jakarta的包,看起来有点陌生。 很多时候,比较纠结不知道该导入哪一个包。 jakarta其实就是之前的javax。 主要JavaEE相关的,从之前javax名字也可以看出来&#xff0…