Steins;Lab

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

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

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

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

Table of Contents

  • 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 是一名普通的工程师,最大的愿望是度过平静的时光。 当前从事网络/CDN/对象存储研发。

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

guest

3 评论
最新
最旧 得票最多
Inline Feedbacks
View all comments
aaaa
aaaa
1 年 之前

clash可以代理window上的应用商店, 软件主页面配置选项'UWP Loopback'打开后,选择相应的app就行.

-1
回复
SPtuan
SPtuan
作者
Reply to  aaaa
1 年 之前

@aaaa 谢谢反馈~学习了

1
回复
不是yuge
不是yuge
4 年 之前

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

0
回复

SPtuan

SPtuan 是一名普通的工程师,最大的愿望是度过平静的时光。
当前从事网络/CDN/对象存储研发。

  • 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
  • 图册
  • 学习笔记
  • 库
  • 折腾
  • 杂谈
  • 瞎**扯
  • 碎碎念
  • 项目跟踪
最近评论
SPtuan 发布于 2 个月前(03月22日) 书签: 关于 disk-io 的经验, 异步/同步 io 系统设计的经验 https://you...
SPtuan 发布于 2 个月前(03月21日) 如果公司不是对外提供这些服务的,这种岗位都是 infra 部门,平均年龄确实会大一些。尤其构建和维护...
HUA 发布于 2 个月前(03月19日) 想请问博主对于国内CDN行业,以及CDN调度、DNS托管类服务相关岗位的看法,以及是否还推荐校招新人...
SPtuan 发布于 3 个月前(02月03日) 2025 注: 长辈对于只身去深圳的担忧,更多地来自于 80s/90s 治安情况。近几年了解了严打...
SPtuan 发布于 4 个月前(01月16日) 哈哈,100就100吧,新年快乐!
热门主题 & 页面
  • 分布式存储漫游指南 1: 2025 年了,存储硬件啥样了?
  • [实验]VPS搭建ss服务中转实现纯ipv6访问网络-校园网免流量
  • iowait 到底是什么?
  • HTTP Header Name 大小写敏感问题
  • 使用 WSL2 + X11 转发 - 在 Windows10 中打造 GNU/Linux 学习生产环境
归档
  • 2025 年 5 月
  • 2025 年 3 月
  • 2024 年 12 月
  • 2024 年 9 月
  • 2024 年 8 月
  • 2024 年 5 月
  • 2024 年 3 月
  • 2024 年 2 月
  • 2023 年 12 月
  • 2023 年 11 月
  • 2023 年 9 月
  • 2023 年 8 月
  • 2023 年 4 月
  • 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-2025.

Theme Kratos Made By Seaton Jiang

wpDiscuz