启用 Windows10 下的 Linux 子系统

WSL 介绍

Windows Subsystem for Linux(简称 WSL)是一个在 Windows 10 上能够运行原生 Linux 二进制可执行文件(ELF 格式)的兼容层。

官网:https://docs.microsoft.com/zh-cn/windows/wsl/

启用 WSL

需要先启用 “适用于 Linux 的 Windows 子系统” 可选功能,然后才能在 Windows 上安装 Linux 分发。

以管理员身份打开 PowerShell 并运行:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

如下图所示:

image-20201022164416572

然后,重新启动计算机

安装 Linux

打开 Microsoft Store,并选择你偏好的 Linux 分发版。

单击以下链接会打开每个分发版的 Microsoft Store 页面:

  • Ubuntu 16.04 LTS
  • Ubuntu 18.04 LTS
  • Ubuntu 20.04 LTS
  • openSUSE Leap 15.1
  • SUSE Linux Enterprise Server 12 SP5
  • SUSE Linux Enterprise Server 15 SP1
  • Kali Linux
  • Debian GNU/Linux
  • Fedora Remix for WSL
  • Pengwin
  • Pengwin Enterprise
  • Alpine WSL

在分发版的页面中,选择 “获取”。

设置新分发

首次启动新安装的 Linux 分发版时,将打开一个控制台窗口,系统会要求你等待一分钟或两分钟,以便文件解压缩并存储到电脑上。

未来的所有启动时间应不到一秒。

然后,需要为新的 Linux 分发版创建用户帐户和密码

image-20201022171700195

  • 用户名密码特定于安装的每个单独的 Linux 分发版,与 Windows 用户名无关。
  • 创建用户名密码后,该帐户将是分发版的默认用户,并将在启动时自动登录。
  • 此帐户将被视为 Linux 管理员,能够运行 sudo (Super User Do) 管理命令。
  • 在适用于 Linux 的 Windows 子系统上运行的每个 Linux 分发版都有其自身的 Linux 用户帐户和密码。 每当添加分发版、重新安装或重置时,都必须配置一个 Linux 用户帐户。

查看版本信息

Debian 查看版本当前操作系统发行版信息:

$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

Debian 查看当前操作系统版本信息

$ cat /proc/version
Linux version 4.4.0-19041-Microsoft (Microsoft@Microsoft.com) (gcc version 5.4.0 (GCC) ) #1-Microsoft Fri Dec 06 14:06:00 PST 2019

Debian 查看版本当前操作系统内核信息

$ uname -r
4.4.0-19041-Microsoft

重启系统

WSL 子系统是基于 LxssManager 服务运行的。
只需要将 LxssManager 重启即可。(注意:必须在管理员权限下运行。)

net stop LxssManager
net start LxssManager

卸载 WSL

方法一

在 powershell 中输入下面的代码

wslconfig /l  #显示出你安装的列表。
wslconfig /u debian #debian为上述列表中的名字   注销子系统

方法二

打开开始菜单,右键卸载掉。

image-20201023142313438

更新和升级包

大多数分发版随附了一个空的的包目录或最简单的包目录。

强烈建议定期更新包目录并使用分发版的首选包管理器升级已安装的包。

对于 Debian/Ubuntu,请使用 apt,修改 /etc/apt/sources.list

buster 系统:

deb http://mirrors.163.com/debian/ buster main contrib non-free
# deb-src http://mirrors.163.com/debian/ buster main contrib non-free
deb http://mirrors.163.com/debian/ buster-updates main contrib non-free
# deb-src http://mirrors.163.com/debian/ buster-updates main contrib non-free
deb http://mirrors.163.com/debian/ buster-backports main contrib non-free
# deb-src http://mirrors.163.com/debian/ buster-backports main contrib non-free
deb http://mirrors.163.com/debian-security buster/updates main contrib non-free
# deb-src http://mirrors.163.com/debian-security buster/updates main contrib non-free

bullseye 系统:

deb https://mirrors.163.com/debian/ bullseye main non-free contrib
deb-src https://mirrors.163.com/debian/ bullseye main non-free contrib
deb https://mirrors.163.com/debian-security/ bullseye-security main
deb-src https://mirrors.163.com/debian-security/ bullseye-security main
deb https://mirrors.163.com/debian/ bullseye-updates main non-free contrib
deb-src https://mirrors.163.com/debian/ bullseye-updates main non-free contrib
deb https://mirrors.163.com/debian/ bullseye-backports main non-free contrib
deb-src https://mirrors.163.com/debian/ bullseye-backports main non-free contrib

更新

sudo apt update && sudo apt upgrade

开启 ssh 连接

  1. 卸载 ssh server

    sudo apt-get remove openssh-server
  2. 安装 ssh server

    sudo apt-get install openssh-server
  3. 按需修改 ssh server 配置

    sudo vim /etc/ssh/sshd_config

    可能需要修改以下几项:

    Port 2222  #默认的是22,但是windows有自己的ssh服务,也是监听的22端口,所以这里要改一下
    UsePrivilegeSeparation no
    PasswordAuthentication yes
    AllowUsers youusername # 这里改成你登陆WSL用的
  4. 启动 ssh server

    sudo service ssh --full-restart

现在就可以用 xshell 等软件登陆 Debian on windows 了,IP 是 127.0.0.1。

但是要注意,cmd 的窗口还不能关掉。关掉后 sshd 服务也会关掉,连接就断开了。

WSL 文件访问传输

打开 WSL 子系统的 shell 终端,输入:

explorer.exe .

问题解决

报错异常

如果提示下面报错,很可能是进行设置后,没有重启电脑。

image-20201022170346394

WSL 无法打开

WSL 无法打开或者卡死后,使用管理员权限打开终端 (比如 cmd),然后输入:

netsh winsock reset

最后,重启 windows 即可。

参考资料

  • https://docs.microsoft.com/zh-cn/windows/wsl/install-win10
  • https://docs.microsoft.com/zh-cn/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package