Windows配置WSL2+Ubuntu20.04
前言
WSL 是一个允许用户在 Windows 上运行 Linux 环境的功能,安装 WSL 之后,可以安装 Linux 发行版,并且直接在 Windows 上使用 Linux 应用程序、实用程序和 Bash 命令行工具,也无需承担传统虚拟机或双启动设置的费用
基础配置
配置查看
进入 PowerShell 中,终端中输入
1 | winver |
查看 windows 的配置信息,如果是 windows11 的话是默认支持 WSL2 的,否则需要查看 OS 内部版本号,WSL2 需要内部版本号不低于 18362,否则只能安装 WSL。另外如果在 Windows Server 2019 (版本 1709+) 上安装 WSL的话,需要手动安装
启用虚拟机平台
在 PowerShell 中输入指令
1 | dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart |
这条指令用于启用 Windows 的虚拟机平台组件,是 WSL2 和 Hyper-V 虚拟化技术的依赖项。启用之后可以支持更高效的 WSL2 子系统和其他虚拟化相关的功能
dism
是部署映像服务和管理工具/online
是对当前运行的操作系统进行操作/enable-feature
:启用指定的功能/featurename:VirtualMachinePlatform
要启用的功能名称,这里就是虚拟机平台/all
启用所有父功能/norestart
操作完成后不自动重启
虚拟化
进入 PowerShell 中,在终端中输入
1 | systeminfo |
之后可以在输出的信息中查找 Hyper-V 的信息,如果在输出中出现以下两种输出之一,则说明电脑已经支持虚拟化了
1 | Hyper-V 要求: 虚拟机监视器模式扩展: 是 |
否则需要在BIOS中开启虚拟化技术,进入BIOS的方法不同电脑有不同方式。进入到BIOS中之后,在配置中找到虚拟化技术或者Inter Virtual Technology,启用即可
开发者模式
在设置-系统-开发者选项中,打开开发人员模式即可
开启适用于Linux的Windows子系统
打开控制面板-程序-程序和功能-启用或关闭Windows功能,在下面找到适用于Linux的Windows子系统,勾选上即可。选上之后需要电脑重启才能完成请求的更改
安装 WSL2
命令行安装 WSL2
在 PowerShell 中输入下面指令进行安装
1 | wsl --install |
之后系统会自动开始安装 WSL2,安装完成之后系统会提示重新启动。重启之后进入 PowerShell 中,可以输入如下指令查看子系统的状态,也可以查看版本是 WSL1 还是 WSL2
1 | wsl --status |
安装完成之后设置 WSL 的默认版本,最后一个参数为 2 表示 WSL2,为 1 则表示 WSL1
1 | wsl --set-default-version 2 |
手动安装 WSL2
安装 Linux 内核更新包
下载链接由微软提供:WSL2 Linux 内核更新包适用于 x64 计算机
下载完成之后,双击运行,即可安装完成,此时的默认版本为 WSL1,使用如下指令将 WSL 设置为 WSL2 版本即可
1 | wsl --set-default-version 2 |
安装 Ubuntu
安装完 WSL2 之后进入微软应用商店中,搜索对应的 Ubuntu 的版本,安装即可
安装完成 Ubuntu 之后,在开始菜单中可以看到该 Ubuntu,进入之后需要设置用户名和密码,这个就按照喜好设置即可
网络设置
设置完成之后即可进入系统,第一件事可以查看网络连接是否有效,即输入更新源的指令,如下
1 | sudo apt-get update |
如果出现正常的 Get ...
则说明网络没问题,否则需要打开 WSL setting 软件,进入网络选项中,将网络模式配置为 Mirrored 模式。之后即可正常使用了
安装桌面环境
换源
由于 Ubuntu 的默认软件源在国外,下载软件时经常会卡顿,除非有梯子。还可以直接换源,将国外的源换成国内的即可
进入 Ubuntu 中,通过修改 /etc/apt/source.list
来更换源,可以将原来的内容替换为
1 | # 阿里云 |
当然也可以不进入 Ubuntu 中,进入到 Windows 中的文件管理器中,在右侧可以看到 Linux 图标,这个就是这个 Ubuntu 的文件系统,进入之后找到对应的文件进行修改即可。换源之后需要运行 sudo apt-get update
来更新一下源
更新软件
在 Ubuntu 中执行如下指令,即可更新升级软件
1 | sudo apt-get upgrade |
安装 gnome 桌面环境
由于上述安装的 Ubuntu 是不带桌面环境的,所以要想使用桌面环境的话,需要自己手动安装,常用的桌面环境有 xfce4、gnome 等,这里使用 gnome 桌面
1 | # 安装 gnome 桌面环境 |
安装 xfce4 桌面环境
除了可以安装 gnome 桌面环境以外,还可以安装 xfce4
桌面环境
1 | sudo apt install xfce4 xfce4-session -y |
安装 xfce4
桌面环境之后需要比 gnome
多几个小步骤
安装管理服务工具
可以先查看一下是否支持 systemctl
指令,在终端输入如下指令
1 | systemctl list-unit-files --type=service |
如果出现正常的输出,则说明支持 systemctl
命令,否则需要手动设置,有两种方法来实现,建议使用第一种
- 微软官方支持方法
-
在 Ubuntu 中新建文件
/etc/wsl.conf
文件,在其中写入如下指令1
2[boot]
systemed=true -
然后退出当前窗口,之后打开 Windows 的 Powershell,重启 WSL
1
wsl --shutdown
-
重新打开
Ubuntu
之后,可以再次使用上述指令测试
-
- 安装
daemonize
方法-
安装
daemonize
和fontconfig
1
sudo apt install fontconfig daemonize
-
之后修改
/etc/profile
文件,在文件末尾添加如下指令1
2
3
4
5
6
7
8
9
10SYSTEMD_PID=$(ps -ef | grep '/lib/systemd/systemd --system-unit=basic.target$' | grep -v unshare | awk '{print $2}')
if [ -z "$SYSTEMD_PID" ]; then
sudo /usr/bin/daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
SYSTEMD_PID=$(ps -ef | grep '/lib/systemd/systemd --system-unit=basic.target$' | grep -v unshare | awk '{print $2}')
fi
if [ -n "$SYSTEMD_PID" ] && [ "$SYSTEMD_PID" != "1" ]; then
exec sudo /usr/bin/nsenter -t $SYSTEMD_PID -a su - $LOGNAME
fi -
在
/etc/sudoer
中添加如下内容1
2%sudo ALL=(ALL) NOPASSWD: /usr/sbin/daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
%sudo ALL=(ALL) NOPASSWD: /usr/bin/nsenter -t [0-9]* -a su - [a-zA-Z0-9]* -
需要刷新一下
/etc/profile
文件,使配置生效1
source /etc/profile
-
安装远程控制软件
实际上上述安装之后,每次打开 Ubuntu 依旧是命令行,没有桌面环境,所以需要在 Ubuntu 中安装远程控制软件,并且使用 Windows 自带的 mstsc
工具来实现可视化操作 Ubuntu
1 | # 安装 xrdp 远程控制服务 |
由于默认端口为 3389,且这个默认端口已经被保留用于 Ubuntu 的终端了,所以将远程控制服务的端口更改为 3390
1 | sudo sed -i 's/3389/3390/g' /etc/xrdp/xrdp.ini |
配置 session
,否则远程桌面登录时输入密码后会闪退
1 | # 如果安装的是 gnome |
如果安装的是 xfce4
的话,需要在 /etc/xrdp/startwm.sh
的末尾添加如下的指令
1 | unset DBUS_SESSION_BUS_ADDRESS |
之后重新启动 xrdp
服务
1 | sudo systemctl restart xrdp |
重启之后,查看 xrdp
服务状态
1 | sudo systemctl status xrdp |
如果在 Active 处显示为绿色的 running
状态即表示服务运行成功
在 Windows 中启动 Ubuntu 桌面
在 Window 中按下 win+R
之后,输入 mstsc
之后回车,然后在弹出的远程桌面连接框中输入 localhost:3390
之后点击连接即可进入
进入之后,第一项 session
选择 Xorg
,在下面输入你的 Ubuntu 中设置的账号和密码,即可进入桌面环境
启动时遇到的问题
输入用户密码进入闪退
使用 gnome 桌面的话,有可能在进入桌面时闪退,网上有一种办法:在 Ubuntu 中重新添加一个新用户,并且设置密码
1 | sudo adduser a |
然后在登陆时使用新的用户名和密码
文献参考
Windows子系统WSL_适用于 linux 的 windows 子系统没有已安装的分发版。-CSDN博客