Steins;Lab

  • 项目
  • 折腾
  • 笔记
  • 图册
  • 杂谈
  • 文章索引 - 博主自荐博文
  • 关于/留言
Steins;Lab
某团的自留研究所
  1. 首页
  2. 折腾
  3. 正文

使用 WSL2 + X11 转发 - 在 Windows10 中打造 GNU/Linux 学习生产环境

2021年1月6日 8019点热度 4人点赞 1条评论

在 Windows 10 中使用 Windows Subsystem for Linux 部署 GNU/Linux 的学习或生产环境。同时使用 X11 Forwarding 将软件GUI窗口集成至 Windows 系统中,Windows + Linux 密切集成将带来丝滑体验。

目录

  • 1 动机
  • 2 WSL2
    • 2.1 安装 WSL1 并升级到 WSL2
    • 2.2 运行 Linux 发行版
    • 2.3 (可选) 部署完整桌面环境
  • 3 X11 Forwarding
    • 3.1 X11 Forwaring 原理简述
    • 3.2 Linux - 设置 DISPLAY
    • 3.3 Linux - 设置 GTK 高分辨率缩放
    • 3.4 Windows 10 - 安装 X Server 软件
    • 3.4 牛刀小试 - 尝试运行 GUI 软件
  • 4 实践
    • 4.1 文件管理
    • 4.2 Jetbrains 全家桶 + Docker Desktop
  • 参考资料

1 动机

Linux/GNU 生态让大部分软件开发人员从中受益。而 Windows 10 也支撑着我们常见的游戏娱乐和部分独占软件。部分软件在 Windows 和 macOS 上的体验非常不错,而在 Linux 中却表现糟糕,甚至不提供支持。

通常,我们在PC上使用双系统或虚拟机的方式部署两种操作系统环境。使用者的体验随着环境的切换非常割裂。使用过虚拟机的同学可能发现,因性能限制,虚拟机中的GUI环境常常有一种说不清道不明的卡顿,运行复杂图形程序尤甚。无论是软件应用还是文件管理,非原生的环境需要相互切换,导致体验割裂。

我想打造一种无缝的 Windows + Linux 环境,尤其是 Linux 软件 GUI 能够无缝集成至 Windows 的窗口界面中,同时提供方便的文件管理。实际体验发现 WSL2 + X11 转发能够满足我的要求,也推荐给大家尝试。

值得指出的是,使用 X11 转发在 Windows 中显示 Linux 软件 GUI,并不是 WSL 独占的。你也可以使用虚拟机,通过 SSH 使用 X11 转发,达到相同的效果。

 

 

2 WSL2

WSL 全称为 Windows Subsystem for Linux,为 Windows 提供接近于原生的 GNU/Linux 运行能力。如果你经常使用以下内容[1],你可能会对 WSL 感兴趣。

  • 从Microsoft Store中选择您喜欢的GNU / Linux发行版。
  • 运行常用的命令行工具,如grep,sed,awk,或其他ELF-64的二进制文件。
  • 运行Bash Shell脚本和GNU / Linux命令行应用程序,包括:
    • 工具:vim,emacs,tmux
    • 语言:NodeJS,Javascript,Python,Ruby,C / C ++,C#和F#,Rust,Go等。
    • 服务:SSHD,MySQL,Apache,lighttpd,MongoDB,PostgreSQL。
  • 使用您自己的GNU / Linux分发程序包管理器安装其他软件。
  • 使用类似Unix的命令行外壳调用Windows应用程序。
  • 在Windows上调用GNU / Linux应用程序

WSL2 是 WSL 的新版本,区别于WSL,其提供真实的 linux 内核,使用轻量级的虚拟化运行。

关于 WSL 的完整文档参见 https://docs.microsoft.com/en-us/windows/wsl/ 。

 

2.1 安装 WSL1 并升级到 WSL2

为了方便,在此复述 WSL 的安装方法。如有出入,读者应当以微软的官方文档为准。

https://docs.microsoft.com/en-us/windows/wsl/

预览版本提供了快速安装。对于正式版本,手动安装步骤如下。

注意最低版本要求:对于x64系统,版本1903或更高版本,以及内部版本18362或更高版本。

 

1. 先启用 Windows Subsystem for Linux 子功能

使用管理员身份打开 Powershell

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

 

2.开启虚拟机功能

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

重新启动计算机。

 

3.安装 wsl2 功能包组件

直链

https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

如果此直链失效,可参考

https://docs.microsoft.com/en-us/windows/wsl/install-win10

 

4. 设置 WSL 版本为 WSL2

wsl --set-default-version 2

 

5. 在 windows 商店中选择合适的发行版本

https://aka.ms/wslstore

 

Tips:

使用 Clash 等代理软件可能导致 windows 商店无法连接,可尝试关闭全局代理使用。

 

2.2 运行 Linux 发行版

直接在开始菜单中运行安装的 Linux 发行版。

作为延伸,可以继续使用 Windows Terminal 替换终端,获得更好的体验。

 

2.3 (可选) 部署完整桌面环境

我以 Ubuntu 18 为例,部署了完整的 desktop 环境。

毕竟是要使用 Linux 中的 GUI 程序。部署完整桌面环境的目的是为了:使用完整的GTK支持、Ubuntu 图标和皮肤等。例如下面开启的 HiDPI缩放设置需要 GDK 的支持。

如果你不是磁盘空间敏感用户,推荐部署完整的 desktop 环境。

sudo apt update
sudo apt install ubuntu-desktop

 

 


 

3 X11 Forwarding

安装完成的 WSL2 发行版系统,除非进行扩展,可以看做一个新的服务器版本,没有GUI显示。

 

3.1 X11 Forwaring 原理简述

UNIX/Linux的图形界面建立在 X Window 系统上。得益于其主从架构(Client/Server Architecture),图形界面可以网络的形式分为 X 服务器、X 客户端,通过 X 协议链接。

X Window 具有网络透明性,服务器和客户端可分别在本地或远程机器上运行。虽然本篇文章没有使用 SSH 作为通道,但是下图很好地展示了 X Window 的网络透明性。

简单理解,就是让 Linux 的图形界面转发到 Windows 10 中显示。

图:以 SSH 为通道 X11 Forwarding 原理[2]

 

3.2 Linux - 设置 DISPLAY

我们在 Linux 端加入环境变量。你可以在 bash 中直接运行,或者加入 ~/.bashrc 中每次开启终端自动添加。

使用你喜欢的编辑工具打开 ~/.bashrc。在末尾添加

export DISPLAY=$(awk '/nameserver / {print $2; exit}' /etc/resolv.conf 2>/dev/null):0
export LIBGL_ALWAYS_INDIRECT=1

从而将 DISPLAY 转发到 Windows 主机[3]。

 

3.3 Linux - 设置 GTK 高分辨率缩放

我是用的是 4K 分辨率屏幕,为了让缩放正常,使用 GTK HiDPI 设置缩放。

使用你喜欢的编辑工具打开 ~/.bashrc。在末尾添加

export GDK_SCALE=2
export GDK_DPI_SCALE=1

 

3.4 Windows 10 - 安装 X Server 软件

我是用的 Xming,直接下载安装即可。

https://sourceforge.net/projects/xming/

注意,使用 X Launch 进行设置。 考虑到尽在本地使用 X Server,关闭 Access Control 选项。开启 X Server。

 

3.4 牛刀小试 - 尝试运行 GUI 软件

我尝试运行了 gnome-mahjongg ,可以看到 Linux 中运行的 GUI 能无缝地和 Windows 窗口融合,复杂图形也较为流畅。

 

4 实践

4.1 文件管理

文件管理是重要操作之一。对于 Windows 和 WSL 之间的跨系统操作,可用映射网络文件的方式。在资源管理器中输入 wsl$即可进入映射目录。

在 WSL 内部的文件操作,推荐使用系统内管理器。如我使用 Ubuntu Desktop 提供的 nautilus。

4.2 Jetbrains 全家桶 + Docker Desktop

常规的生产开发环境,不再赘述

 

 

参考资料

[1] WSL官方文档 - https://docs.microsoft.com/en-us/windows/wsl/

[2] 傲笑紅塵路: 簡介X Window 系統 - https://www.lijyyh.com/2015/12/x-window-introduction-to-x-window-system_17.html

[3] https://stackoverflow.com/questions/61110603/how-to-set-up-working-x11-forwarding-on-wsl2

[4] https://superuser.com/questions/1370361/blurry-fonts-on-using-windows-default-scaling-with-wsl-gui-applications-hidpi

 

相关

标签: 暂无
最后更新:2021年1月6日

SPtuan

SPtuan 是一名普通的工程师,最大的愿望是度过平静的时光。 研究生时做过一点自动驾驶算法,当前对网络/后端技术比较感兴趣。

点赞
< 上一篇
下一篇 >
0 0 votes
文章评分
Subscribe
Login
提醒
guest

guest

1 评论
最新
最旧 得票最多
Inline Feedbacks
View all comments
不是yuge
不是yuge
1 年 之前

这确实是最丝滑的,但是我懒

0
回复

SPtuan

SPtuan 是一名普通的工程师,最大的愿望是度过平静的时光。
研究生时做过一点自动驾驶算法,当前对网络/后端技术比较感兴趣。

  • 1 动机
  • 2 WSL2
    • 2.1 安装 WSL1 并升级到 WSL2
    • 2.2 运行 Linux 发行版
    • 2.3 (可选) 部署完整桌面环境
  • 3 X11 Forwarding
    • 3.1 X11 Forwaring 原理简述
    • 3.2 Linux - 设置 DISPLAY
    • 3.3 Linux - 设置 GTK 高分辨率缩放
    • 3.4 Windows 10 - 安装 X Server 软件
    • 3.4 牛刀小试 - 尝试运行 GUI 软件
  • 4 实践
    • 4.1 文件管理
    • 4.2 Jetbrains 全家桶 + Docker Desktop
  • 参考资料
分类
  • Uncategorized
  • 图册
  • 学习笔记
  • 库
  • 折腾
  • 杂谈
  • 瞎**扯
  • 碎碎念
  • 项目跟踪
最近评论
三五笑话 发布于 2 个月前(01月23日) 不知道说啥,开心快乐每一天吧!
rantrism 发布于 2 个月前(01月13日) 您好~我是腾讯云开发者社区运营,关注了您分享的技术文章,觉得内容很棒,我们诚挚邀请您加入腾讯云自媒体...
qw23123 发布于 4 个月前(11月22日) 你好,我也是这个问题,怎么确认板子有没有正常联网呢?板子用网线和电脑连了,可以正常使用pynq的ju...
luckf 发布于 5 个月前(11月12日) 谢谢博主的回复,的确是pynq-z2开发板的时间有问题,后来自己发现pynq板没有联网,连上网以后便...
luckf 发布于 5 个月前(11月11日) pip安装时报错信息“ERROR: Command errored out with exit st...
热门主题 & 页面
  • 在Nvidia Jetson Xavier开发者套件上启用CAN总线
  • PYNQ上手体验:以目标检测应用为例
  • 基于openvpn的校园网ipv6免流量方案 |ipv6|校园网|免流量
  • 全球互联网拓扑探索 (2) : 自治系统 AS 与 BGP 协议
  • [实验]VPS搭建ss服务中转实现纯ipv6访问网络-校园网免流量
归档
  • 2023年1月
  • 2022年12月
  • 2022年10月
  • 2022年9月
  • 2022年7月
  • 2022年6月
  • 2022年2月
  • 2021年12月
  • 2021年11月
  • 2021年2月
  • 2021年1月
  • 2020年9月
  • 2020年4月
  • 2020年3月
  • 2020年1月
  • 2019年8月
  • 2019年7月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2018年12月
  • 2018年10月
  • 2018年9月
  • 2018年8月
  • 2018年5月
  • 2018年2月
  • 2018年1月
  • 2017年11月
  • 2017年9月
  • 2017年7月
  • 2017年6月
  • 2017年5月
  • 2017年4月
  • 2017年3月
  • 2017年2月
  • 2017年1月
  • 2016年12月
  • 2016年11月
  • 2016年10月
  • 2016年9月
  • 2016年8月
  • 2016年7月
  • 2016年6月
  • 2016年5月
  • 2016年4月
  • 2016年3月
  • 2016年2月
  • 2016年1月
  • 2015年12月
  • 2015年11月
  • 2015年9月

友情链接:

Blessing Studio hahaschool 绘枫和畅 魔法少女Fandy monsterx Clarke的博客 Luminous’ Home Shintaku's Blog
蓝黑的博客 haruhi.club Yida的博客 Bo2SS 涛叔 TangBao 同和君Hocassian

Steins;Lab 团子神社 zdfmc.net

steinslab.io built with ❤. Thanks for all 2015-2022.

Theme Kratos Made By Seaton Jiang

wpDiscuz