1.wsl+ubuntu配置
1.1 安装wsl2
# 安装wsl,默认为Ubuntu,位置为wsl2
wsl --install
# 查看可用发行版
wsl --list --online
# 指定安装某发行版
wsl --install -d <DistroName>
# 设置安装位置为wsl1/wsl2
wsl --set-version Ubuntu-20.04 2
1.2 启动和退出 Linux 子系统
进入 Linux 子系统有以下几种方式:
- 和正常软件一样启动,如在开始菜单中点击其图标、双击桌面快捷方式
- 在 Windows 中打开一个终端,如 PowerShell,输入命令
wsl
- 在终端中输入命令
Linux 发行版名称.exe
,如ubuntu20.04.exe
退出 Linux 子系统的方式:
- 直接关闭终端
- 在终端中输入命令
exit
,此时退出了 WSL,然后输入命令wsl -t Ubuntu-20.04
,关闭 ubuntu 子系统。
常用的 wsl 命令:
# 列出所有分发的名称、运行状态、对应的 WSL 版本
wsl -l -v
# 终止指定的 Linux 分发
wsl -t `<distro>``
# 注销分发
wsl --unregister `<distro>`
# 终止所有正在运行的分发和 WSL2 轻型工具虚拟机
wsl --shutdown
1.3 文件系统
如何在 Linux 应用中使用 Windows 文件?
WSL 的优势之一是可以通过 Windows 和 Linux 应用或工具访问文件。
WSL 将计算机的固定驱动器装载到 Linux 分发版中的 /mnt/<drive>
文件夹下。 例如,你的 C:
驱动器装载在/mnt/c/
下
不要使用 Windows 应用和工具更改 Linux 文件!
C:\Users\windows-login-name\AppData\Local\Packages\
目录下有一个以CanonicalGroupLimited
开头的文件夹,Linux 子系统相关的文件都存储在该文件夹里面。需要特别注意的是:任何情况下都不要使用 Windows 应用和工具更改该目录里面的 Linux 文件!
正确的做法:
将工作文件存放在 Windows 文件系统中,这样不仅能够在 Windows 中直接进行访问,还能在 Linux 中通过 /mnt/<drive>/<path>
(例如 /mnt/c/dev/project/...
) 进行访问,从而避免了在 Windows 和 Linux 系统中来回拷贝文件。
总之,为了避免丢失文件或污染文件数据,需要遵循下面三条准则:
- 如果想要使用 Windows 和 Linux 工具访问、创建、修改文件,请将文件存储在Windows 文件系统中。
- 通过 Windows 应用、工具、脚本、终端来访问、创建、修改 Linux 子系统中的文件时,请使用
\\wsl$\<DistroName>\
。 - 千万不要使用寻找
AppData
目录中的文件的方式,通过 Windows 应用、工具、脚本、终端来访问、创建、修改 Linux 子系统中的文件。
计算机的存储设备上存储了与每个文件、目录相关的文件元数据(例如:权限、拥有者、时间戳等),Windows 和 Linux 中文件元数据的表示方式是不同的。因此,通过 Windows 应用、工具、脚本、终端来访问、创建、修改位于
AppData
目录中的 Linux 子系统中的文件时,会造成数据污染或损坏 Linux 环境,导致需要卸载和重新安装 Linux 子系统。
1. 4运行GUI应用
WSL2可以支持GUI了。
使用 WSL 运行 Linux GUI 应用docs.microsoft.com/zh-cn/windows/wsl/tutorials/gui-apps
安装命令:
# 全新安装, 然后重启
wsl --install -d Ubuntu
# 现有WSL升级
wsl --update
wsl --shutdown
常用软件安装:
# gedit/gnome 文本编辑器
sudo apt install gedit -y
sudo apt install gnome-text-editor -y
# Nautilus 文件管理器
sudo apt install nautilus -y
2. 图形化桌面
只是图个新鲜,并不能提高多少效率。
2.1 X server
聊聊Linux操作系统中的显示管理器及如何更换 - linux-123 - 博客园www.cnblogs.com/cainiaoyige1/p/13992681.html
linux的图形界面程序是典型的C/S结构,需要一个X server和X client(程序本身)才能正常运行、正常显示结果。
-
如果本地的操作系统是linux,且有图形界面,就表示本地已经运行了X server,则远程的图形界面X client会连接到本地的X server,即可运行。
-
如果本地的操作系统是windows,则需另外运行一个X server程序,然后远程的linux图形X client会连接本地的xserver,windows环境下推荐VcXsrv,如下。
FreeXer - free X-serversourceforge.net/projects/freexer/
下载后,安装默认选项安装即可。
2.2 ubuntu-desktop
GNOME 桌面,是 Ubuntu 默认的桌面,美观度和功能性都不错,安装也很简单。
# 首先,更新ubuntu
sudo apt update && sudo apt upgrade
# 通过tasksel安装
sudo apt install tasksel
sudo tasksel install ubuntu-desktop
# 通过apt安装
sudo apt install ubuntu-desktop
配置环境变量,这样后面可以通过 gnome-session
命令启动桌面。
# 配置环境变量,打开配置文件
sudo vi ~/.bashrc
# 在末尾添加如下两行后保存退出
export DISPLAY=$(grep -m 1 nameserver /etc/resolv.conf | awk '{print $2}'):0.0
export XDG_SESSION_TYPE=x11
# 应用修改
source ~/.bashrc
gnome桌面是基于 systemd
,而WSL不支持systemd,所以需要先安装systemd,这里用到github上的库,操作也很简单。
# 安装
git clone <https://github.com/DamionGans/ubuntu-wsl2-systemd-script.git>
cd ubuntu-wsl2-systemd-script/
bash ubuntu-wsl2-systemd-script.sh
# 测试,重启linux后执行,若无报错则成功
systemctl
这样安装好以后,windows开始菜单会出现好多应用,如果wsl2已更新到最新版本,是可以运行这些GUI应用的,所以如果是为了运行这些GUI应用,其实没必要安装图形化桌面。
2.3 显示管理器
这个工具的功能是在管理用户对话和鉴权时启动显示服务器并加载桌面。
GNOME 桌面默认使用 GDM3 作为显示管理器,从资源角度考虑它有点重;lightdm 是一个较为轻量级和资源友好且平台无关的显示管理器。
# 可选,非必须
sudo apt install lightdm
安装后系统会提示选择默认的显示管理器,因为多个只能选择一个。
2.4 具体流程
上述三个软件前者安装在windows下,后两个安装在linux下。
启动步骤如下:
- windows下启动Ubuntu终端
- windows下启动VcXsrv,按如下配置打开,后出现一个黑色窗口
之后在Ubuntu中执行如下命令:
# 若采用默认显示管理器
sudo service dbus restart
gnome-session
# 若采用lightdm显示管理器
sudo service lightdm start
gnome-session
此时可以在VcXsrv窗口看到Ubuntu桌面。
3.问题
1.nautilus与gnome冲突
# 安装gnome时会修改DISPLAY,而nautilus要求DISPLAY=0.0
# 安装gnome后,nautilus只能在xland里打开
# DISPLAY=172.22.208.1:0.0
打开nautilus只能用临时修改变量打开
DISPLAY=:0 nautilus