Windows WSL上安装Ubuntu系统安装指南
# Windows WSL上安装Ubuntu系统安装指南
适用于 Linux 的 Windows 子系统可供在 Windows Server 2019(版本 1709)和更高版本上安装。 本指南将指导你完成在计算机上启用 WSL 的步骤。
# WSL安装,WSL上安装Ubuntu系统
官方文档连接:https://docs.microsoft.com/zh-cn/windows/wsl/install-win10
# 首先是在控制面板开启相关功能
先要在设置里面开启开发者选项:
在控制面板->程序里面点击启用或关闭Windows功能:
打开了一个窗口,拖到最后,把这两个打上勾:
点击确定,等它处理完,可能要重启一次。
# 启用WSL2,这一步也可以省略,不过还是建议开启WSL2
下载内核包(WSL2运行的是真正的linux内核): 连接:适用于 x64 计算机的 WSL2 Linux 内核更新包 (opens new window)
下载完点击安装即可。
将 WSL 2 设置为默认版本: cmd或者PowerShell运行命令: wsl --set-default-version 2
# 启用适用于 Linux 的 Windows 子系统
必须启用“适用于 Linux 的 Windows 子系统”可选功能并重启,然后才能在 Windows 上运行 Linux 发行版。
以管理员身份打开 PowerShell 并运行:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
# 下载 Linux 分发版
按照这些说明 (opens new window)下载你最喜爱的 Linux 发行版。
# 提取并安装 Linux 分发版
下载 Linux 分发版后,若要提取其内容并进行手动安装,请执行以下步骤:
# 方式一:使用命令
- 使用 PowerShell 提取
<distro>.appx
包的内容:
Rename-Item .\Ubuntu.appx .\Ubuntu.zip
Expand-Archive .\Ubuntu.zip .\Ubuntu
2
- 在目标文件夹中运行分发版启动器应用程序。 启动器通常命名为
<distro>.exe
(例如,ubuntu.exe
)。
注意
安装失败并出现错误 0x8007007e:如果收到此错误,则表明系统不支持 WSL。 请确保运行的是 Windows 版本 16215 或更高版本。 检查内部版本 (opens new window)。 另外,请进行检查以确认 WSL 已启用 (opens new window),并且在启用此功能后重新启动了计算机。
- 使用 PowerShell 将你的分发版路径添加到 Windows 环境路径(在本例中为
C:\Users\Administrator\Ubuntu
):
$userenv = [System.Environment]::GetEnvironmentVariable("Path", "User")
[System.Environment]::SetEnvironmentVariable("PATH", $userenv + ";C:\Users\Administrator\Ubuntu", "User")
2
现在,可以通过键入 <distro>.exe
从任何路径启动你的分发版。 例如: ubuntu.exe
。
安装了分发版后,必须先初始化新的分发版实例 (opens new window),然后才能使用它。
# 方式二:普通操作方法
直接将下载的的Ubuntu.appx 修改为Ubuntu.zip,然后解压,进入解压后目录运行Ubuntu.exe即可,2004的是ubuntu2004.exe
# 为新的 Linux 分发版创建用户帐户和密码
启用 WSL 并从 Microsoft Store 中安装 Linux 分发版 (opens new window)后,在打开新安装的 Linux 分发版时将会要求你完成的第一步是创建帐户,包括 用户名 和 密码。
此 用户名 和 密码 特定于安装的每个单独的 Linux 分发版,与 Windows 用户名无关。
创建 用户名 和 密码 后,该帐户将是分发版的默认用户,并将在启动时自动登录。
此帐户将被视为 Linux 管理员,能够运行
sudo
(Super User Do) 管理命令。在适用于 Linux 的 Windows 子系统上运行的每个 Linux 分发版都有其自身的 Linux 用户帐户和密码。 每当添加分发版、重新安装或重置时,都必须配置一个 Linux 用户帐户。
# 更新和升级包
大多数分发版随附了一个空的的包目录或最简单的包目录。 我们强烈建议定期更新包目录并使用分发版的首选包管理器升级已安装的包。 对于 Debian/Ubuntu,请使用 apt:
sudo apt update && sudo apt upgrade
1Windows 不会自动更新或升级 Linux 分发版。 大多数 Linux 用户往往倾向于自行控制此任务。
# 重置 Linux 密码
若要更改密码,请打开 Linux 分发版(例如 Ubuntu)并输入以下命令:
passwd
系统会要求你输入当前密码,然后要求输入新密码,之后再确认新密码。
# 忘记密码
如果忘记了 Linux 分发版的密码:
方式一:
请打开 PowerShell,并使用以下命令进入默认 WSL 分发版的根目录:
wsl -u root
如果需要在非默认分发版中更新忘记的密码,请使用命令:
wsl -d Debian -u root
,并将Debian
替换为目标分发版的名称。在 PowerShell 内的根级别打开 WSL 发行版后,可使用此命令更新密码:
passwd <WSLUsername>
,其中<WSLUsername>
是 DISTRO 中帐户的用户名,而你忘记了它的密码。系统将提示你输入新的 UNIX 密码,然后确认该密码。 在被告知密码已成功更新后,请使用以下命令在 PowerShell 内关闭 WSL:
exit
备注
如果运行的是早期版本的 Windows 操作系统,例如 1703(创意者更新)或 1709 (Fall Creators Update),请参阅此用户帐户更新文档的存档版本 (opens new window)。
方式二:
设置 Ubuntu 默认以 root 用户登录,打开 CMD 输入:
ubuntu config --default-user root
1打开 Ubuntu,用 passwd root 命令设置 root 用户密码;
若要设置默认以普通用户身份登录 Ubuntu:
ubuntu config --default-user username
1
# wsl常用命令:
cmd下查看已安装的WSL命令:
wsl -l
#或者
wsl -l -v
2
3
注销(卸载,但是文件需要手动删除)已安装的子系统:
wslconfig /u <安装的分发版的名字>
关闭、启动 WSL,子系统重启,实际上是重启windows上对应的服务:
#关闭
net stop LxssManager
#启动
net start LxssManager
2
3
4
5
6
注意需要管理员权限。
# ssh连接win ubuntu_使用SSH终端连接WSL
- 获得Ubuntu系统的IP:
【开始】中,启动Ubuntu18.04,在wsl窗口中,执行:
ifconfig
eth0:段中的inet后的 172.17.86.219 ,即为本机的IP地址(每次启动wsl,获得新地址,后面建立连接用到)
- 启动SSH 服务
wsl窗口中,执行:
sudo service ssh start
启动ssh server,如果出错或报没有此命令,则需安装SSH server,参考安装SSH。
检查是否成功
sudo service ssh status
安装SSH
1.先更新系统包
sudo apt update sudo apt upgrade
1
2
32.安装SSH服务
sudo apt remove openssh-server
sudo apt install openssh-server
2
3
- 3.修改配置文件
sudo vim /etc/ssh/sshd_config
主要改两项:
Port: 22 把前面的#注释去掉,紧接的几行也可以去掉#
PasswordAuthentication yes 把no改为yes
- 4.重新启动ssh
sudo service ssh restart
# 下载工具
MobaXterm
下载地址: https://mobaxterm.mobatek.net/download-home-edition.html
选择免安装版(Portable Edition)下载。
第一次运行,会自动检测到WSL
MobaXterm会自动检测到WSL环境,直接点击左侧图标,输入用户名、密码,即可快速连接*。但下面介绍更一般的用法,手工建立会话连接,这也适用于连接其他计算机上的Linux系统。
如上图,点击左上角【Session】,打开如下界面
输入IP,wsl用户名
如果出现Network errror:Connection refused,表示ssh设置有问题
出现类似问题,可参考准备工作中的说明,检查一下ssh的启动状态。
连接上,等待输入登录密码
选择【Yes】后,出现加密方式保存Ubuntu用户密码界面,加密密码至少为7位。
加密密码至少长为7位
连接成功
连接成功后,左侧为Ubuntu中的文件列表,可以在其中进行文件、目录操作。右侧为终端,可以在其中执行linux命令。
Ubuntu与本地window间上传下载文件
以后每次启动WSL,可以在建立的连接上,鼠标右键,【Edit session】,修改ip等参数。
# 使用其他工具连接
- Xshell
下载地址: https://www.netsarang.com/en/free-for-home-school/
选择免费的个人版。
下载页面注意选Both
会发送两封邮件到你的邮箱,一个是Xshell的链接,另一个是Xftp的链接。Xftp为内嵌入Xshell中,用于文件传输,依次下载、安装。(因为下载的是个人免费版本,在首次启动Xshell后,会提问是否购买,【关闭】即可)。
去掉启动显示
【新建】会话
输入ip
首次连接,会提问,【接受并保存】
输入wsl的用户名、密码
连接成功
登录成功后,即可在右侧窗口执行linux命令,左侧会话列表中,选中一会话,鼠标右键【属性】中,可修改ip地址。如果要传输文件,可点击下图中图标,启动Xftp。
Xftp界面
左侧为本地文件窗口,右侧为Ubuntu中文件操作窗口。鼠标右键,选择对应操作。
MobaXterm与Xshell对比
MobaXterm可以自动检测WSL,建立连接比较方便。Xshell中的Xftp,相当于一个ftp客户端,文件的操作能力强大。
# Ubuntu设置国内源,提高下载速度
换源需要修改/etc/apt/sources.list文件,最好先备份:
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup
随后进入修改/etc/apt/sources.list:
vim命令往下翻
sudo vim /etc/apt/sources.list
将文件里的内容替换成阿里源:
#阿里源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
2
3
4
5
6
7
8
9
10
11
保存退出后执行以下命令更新源:
sudo apt-get update
sudo apt-get upgrade
2
其它源:
#清华源:
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
2
3
4
5
6
7
8
9
10
11
#中科大源
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
2
3
4
5
6
7
8
9
10
11
12
# VIM命令
在 Linux 中使用 vim 时,输入 vim xxx.file
输入好文件内容之后,怎么保存呢?
按 ESC,左下角就可以进行输入
:w
保存但不退出
:wq
保存并退出
:q
退出
:q!
强制退出,不保存
:e!
放弃所有修改,从上次保存文件开始再编辑命令历史
# WSL启用systemd
WSL默认不是以systemd作为初始化进程,所以无法使用systemctl,使用systemctl时会出现以下提示:
System has not been booted with systemd as init system (PID 1). Can't operate.
先安装下daemonize
sudo apt install daemonize
编辑下/etc/profile
sudo vim /etc/profile
添加如下内容:
SYSTEMD_PID=$(ps -ef | grep '/lib/systemd/systemd --system-unit=basic.target$' | grep -v unshare | awk '{print $2}')
if [ -z "$SYSTEMD_PID" ]; then
sudo 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
2
3
4
5
6
7
8
9
10
编辑/etc/sudoers
sudo vim /etc/sudoers
添加如下内容:
%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]*
2
更新下配置文件,使刚刚编辑的内容生效:
source /etc/profile
运行如下命令验证是否成功:
systemctl --version
# WSL2 Ubuntu图形界面安装与远程桌面
WSL是不支持显示图形界面的,目前只支持命令行。WSL内部使用的是VM,运行真实的linux内核,所以可以运行KDE、Gnome、xfce、lxde等桌面环境的程序包,但是无法直接显示。据说微软会在后续退出WSL的图形界面,在目前,我们可以通过远程连接的方式来访问子系统的图形界面。
# 安装Ubuntu桌面环境
可以根据自己的喜好安装 KDE、Gnome、xfce、lxde 等桌面环境。Gnome是 Ubuntu 的默认桌面上环境,也是多数发行版的默认桌面环境,我对 Gnome 更熟悉一点,所以这里以Gnome
为例进行安装:
WSL Ubuntu命令行输入:
sudo apt install ubuntu-desktop
安装其他桌面:
#KDE
sudo apt install kubuntu-desktop
#Xfce
sudo apt install xubuntu-desktop
2
3
4
5
其他桌面可以去百度,理论上Ubuntu系统可以装的桌面环境都可以在WSL2 Ubuntu上装。
安装完可能需要几分钟,中间按照提示操作就可以了。
# 安装XRDP
sudo apt install -y xrdp
xrdp服务会自动启动,可以通过以下命令查看:
sudo systemctl status xrdp
将xrdp添加到sll-cert
用户组:
sudo adduser xrdp ssl-cert
重启 Xrdp 服务,让刚才的设置生效:
sudo systemctl restart xrdp
# 连接远程桌面
先在子系统上运行以下命令,查看下虚拟机的IP地址
ip addr | grep eth0
上面选中的部分就是子系统虚拟机的 IP 地址,复制下来。
新版本的windows系统已经支持用localhost来访问子系统了,详见:微软官网 (opens new window)
win+R,运行mstsc:
输入刚刚复制的ip地址,端口号默认为3389:
如果你是Windows 18945以后的版本,可以直接输入
localhost:3389
,强烈建议更新下系统,不然每次子系统重启后都得ip addr | grep eth0
重新获取IP地址。
点击连接后如果出现错误提示弹窗,参见文末的问题排查1进行解决。 输入登录的用户名密码:
如果不能正常显示如下桌面,尝试看看文尾的问题排查2。
注意:wsl2暂时还不支持硬件加速绘图,所以你是在用cpu跑gnome图形界面,可能会比较卡。cpu不太给力的机器,甚至有可能进去后一片漆黑。
# 问题排查
就一些常见问题给出相关解决办法:
# 1. 远程桌面点击连接后显示连接失败:
- 如果弹窗说你正在运行一个控制台会话,说明xrdp默认的3389端口已经被其他(控制台)应用占用了,尝试修改xrdp监听的端口
sudo vim /etc/xrdp/xrdp.ini
,修改文件中的port。 - 如果弹窗说无法连接到远程计算机,IP地址不对或者xrdp没有正常运行。使用
ip addr | grep eth0
命令重新看下IP地址,因为每次WSL重启后IP地址都会变(Windows 18945 以上版本直接用localhost就好)。尝试sudo systemctl restart xrdp
重启 xrdp 服务。
# 2. 可以连接,但是进去后桌面一片漆黑:
- 第一次进入桌面会比较卡,稍等一会看看
- 尝试重启wsl(cmd管理员运行:
net stop LxssManager
和net start LxssManager
) - 尝试
sudo apt install ubuntu-desktop
重新安装下桌面
# 3.闪退
- 应该是权限的问题,不要用root登录。
# 关于xrdp
xrdp 配置文件在/etc/xrdp目录。一般不需要对配置文件进行修改。
使用sudo vim /etc/xrdp/xrdp.ini
对配置文件进行修改。
默认的端口号是3389。
xrdp 使用startwm.sh文件启动 X 会话,可以通过编辑 /etc/xrdp/startwm.sh
来使用其他X Window 桌面。