基于WSL2的Windows下Ubuntu图形化系统
前言
WSL是微软推出的windows的linux子系统,目的就是为了在windows平台上更方便的运行 linux。相比于VMware这样的虚拟机产品,WSL有许多优势:
- 方便。WSL操作Linux系统像windows上的cmd、PowerShell一样,直接操作其 Terminal终端 。只需要在开始菜单,单击其图标就可以打开一个窗口运行linux命令行工具,这是VMware这样的虚拟机产品想都不敢想的。
- 启动速度快。基本保持在5秒内就启动了。而VMware虚拟机,要先启动虚拟机产品,然后在虚拟机产品里面选择 Linux 分发版系统,点击启动按钮,等待系统自动,这时间相比,浪费太多了。
- 占用少。虽然WSL2还是在虚拟机上运行的Linux内核,但是在资源占用和性能这方面,无论是在内存占用还是在CPU消耗,都甩一般虚拟机产品几条街。用微软的话说就是:
WSL 2 使用最新、最强大的虚拟化技术在轻量级实用工具虚拟机 (VM) 中运行 Linux 内核。 但是,WSL 2 不是传统的 VM 体验。 - 文件互通。WSL上的Linux与宿主Windows文件系统互通,WSL可以直接访问Window系统上的文件,而Windows系统也可以直接对Linux系统进行各种文件操作。
WSL的问题
WSL在使用上的问题大致有以下几个:
- 没有图形界面。WSL运行Linux命令行很方便,但是目前还不能直接打开Linux图形界面。目前可以通过远程桌面的方式访问图形界面。
- C盘占用。按照一般的安装方法,默认是将子系统安装在C盘,C盘占用太大,可以通过官网上介绍的方法将子系统安装在其他盘。
- 不支持systemd。wsl默认是没有systemd服务,需要自行安装并配置,后面会介绍如何安装。
- 跨OS文件操作慢。这个文件操作慢是相对于WSL1来说的,WSL由于是用了VM,操作宿主系统上的文件难免会慢。解决办法
开始安装
微软官方文档:适用于 Linux 的 Windows 子系统安装指南 (Windows 10)
Windows开启功能支持
需要先启用“适用于 Linux 的 Windows 子系统”可选功能,然后才能在 Windows 上安装 Linux 分发。
打开 PowerShell 命令行并输入以下命令:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
安装 WSL 2 之前,必须启用“虚拟机平台”可选功能。 计算机需要[BIOS虚拟化功能](bios虚拟化 - 国内版 Bing)才能使用此功能。
打开 PowerShell 命令行并输入以下命令:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
安装Ubuntu
在 Microsoft Store 中搜索 Ubuntu
点击并安装第一个 Ubuntu
安装GWSL
在 Microsoft Store 中搜索 GWSL
点击并安装第一个 GWSL
启动 GWSL ,在右下角通知图标栏中找到 GWSL ,对其右键,点击设置 GWSL:
使用WSL2
-
下载Linux 内核更新包
-
运行更新包
-
设置 WSL 2 为默认体系结构,打开 PowerShell 命令行并输入以下命令
wsl --set-default-version 2
-
可先检查分配给每个已安装的 Linux 分发版的 WSL 版本,打开 PowerShell 命令行并输入以下命令:
wsl --list --verbose
-
如果 Ubuntu 的WSL版本为1,则将其设置为受 WSL2 版本支持,打开 PowerShell 命令行并输入以下命令:
wsl --set-version Ubuntu 2
安装Windows Terminal(可选)
在 Microsoft Store 中搜索并安装 Windows Terminal 。
点击并安装第一个 Windows Terminal
打开并使用 Ubuntu
到目前为止就可以正常使用 Ubuntu 命令行系统了,按下 Win 键,找到刚刚安装的 Ubuntu 打开,第一次启动,稍等片刻,以后都是5秒内就可以用了。接下来,设置 Linux 用户信息。
输入用户名,然后输入并确认两遍密码。
对于 Ubuntu,请使用 命令 sudo apt update && sudo apt upgrade
,对 Ubuntu 进行初次更新。
为 Ubuntu 安装图形化界面
为WSL2上的 Ubuntu 启用systemd支持
参考该教程
-
需要安装
git
才能进行接下来的操作。所以先按下 Win 键,找到刚刚安装的 Ubuntu 打开sudo apt install -y git
-
运行脚本和命令
sudo git clone https://github.com/DamionGans/ubuntu-wsl2-systemd-script.git cd ubuntu-wsl2-systemd-script/ bash ubuntu-wsl2-systemd-script.sh
-
然后在 PowerShell 命令行并输入
wsl --shutdown
重新启动 Ubuntu应用 并尝试运行systemctl
如果没有得到错误并看到单元列表,那么脚本就起作用了,就可以使用
systemctl
。
安装Gnome图形界面
-
在 Ubuntu 中,输入以下命令安装 Ubuntu Desktop :
sudo apt install -y ubuntu-desktop
-
安装完后,输入
sudo vi ~/.bashrc
,在文件末尾按 “i” 键添加:
export DISPLAY=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'):0.0
export XDG_SESSION_TYPE=x11
按 “Esc” 后输入:wq
保存并退出,并使用source ~/.bashrc
命令应用修改。
试运行图形化界面
之后每次启动图形化桌面的步骤为:
- 在 Windows 中启动 GWSL
- 在 Windows 中启动 Ubuntu
在Ubuntu中输入
gnome-session
稍等片刻就可以在 GWSL 打开的窗口中看到图形化界面
使用
图形界面汉化
网上有很多,我就不单独再做了,可以参考这个方法
基本 WSL 命令
查看linux版本
wsl -l
停止linux系统
wsl -t Ubuntu
导出系统
wsl --export Ubuntu C:\Ubuntu.tar
删除系统
wsl --unregister Ubuntu
导入系统
wsl --import Ubuntu C:\\WSL C:\\Ubuntu.tar
通过 WSL 安装的 Linux 分发版最好使用 PowerShell 或 Windows 命令提示符 (CMD) 。 一些基本命令包括:
- 列出已安装的分发:
wsl -l -v
- 取消注册并重新安装分发:
wsl --unregister <DistributionName>
- 以特定用户运行:
wsl -u <Username>
- 装载磁盘:若要查看中可用的磁盘
wmic diskdrive list brief
;若要使用通过上一命令发现的路径装载磁盘wsl --mount <DiskPath>
- 卸载磁盘 :
wsl --unmount <DiskPath>
系统之间文件系统的相互访问
https://docs.microsoft.com/zh-cn/windows/wsl/wsl2-mount-disk#mount-a-vhd-in-wsl
父windows系统访问子linux系统的文件:
直接在文件资源管理器输入\\wsl$
就可以访问到wsl子系统的文件系统:
WIN+R输入\\wsl$
此外,还可以将其映射为网络驱动器,这样就可以像访问C盘、D盘一样访问 Ubuntu 的文件系统了
linux子系统访问父windows系统的文件:
直接cd /mnt
就可以看到c/、d/两个文件夹,对应的就是电脑上的C盘、D盘,cd进去就可以访问对应windows上的文件
跨文件系统工作
建议不要跨操作系统使用文件,除非有这么做的特定原因。 若想获得最快的性能速度,请将文件存储在 WSL 文件系统中,前提是在 Linux 命令行(Ubuntu、OpenSUSE 等)中工作。 如果使用 Windows 命令行(PowerShell、命令提示符)工作,请将文件存储在 Windows 文件系统中。
此外,许多命令在 Windows Linux 之间可互操作。 下面是几个示例:
-
从 Windows 命令行(如 PowerShell)运行 Linux 工具(如 grep ):
打开 PowerShell// 在 C:\temp> 目录下 wsl ls -la // 显示 C:\temp 目录的内容
-
混合使用 Linux和 Windows 命令:
若要使用 Linux 命令ls -la
列出文件,并使用 PowerShell 命令findstr
来筛选包含“git”的单词的结果,请组合这些命令:wsl ls -la | findstr "git"
若要使用 PowerShell 命令
dir
列出文件,并使用 Linux 命令grep
来筛选包含“git”的单词的结果,请组合这些命令:dir | wsl grep git
若要使用 Linux 命令
ls -la
列出文件,并使用 PowerShell 命令> out.txt
将该列表输出到名为“out.txt”的文本文件,请组合这些命令:wsl ls -la > out.txt