WSL 安装和使用

1,752 阅读3分钟

WSL 安装和使用

0x000FF

对于一个程序,Linux 是难以绕过的技术栈,对于使用 Windows 系统的开发者,通常通过虚拟机来安装 Linux 来学习或使用。

现在 Windows 官方推出了 Windows Subsystem for Linux(后文简称:WSL),可以通过本地的运行 Windows 来安装 Linux 系统,比其虚拟机的方式可以有更快的运行速度和占用更少的资源。

特别对于后端程序员,Docker 的使用率在不断提升,然而 Docker 官方出的 Windows 桌面版的使用效果却不尽人意,因此更加加强了使用 WSL 的意愿。

如果想将 WSL 作为服务器使用,因为是伴随 Windows 的,因此对于作为一个服务器的想法还是不太现实的。

本人安装 WSL 时,遇到了许多问题,希望通过本篇文章,可以使后面安装 WSL 的人可以少遇一些坑。本文将分为以下几个模块:

  • WSL 的安装
  • WSL 的联网
  • Docker 的安装

1.WSL2 的安装

  1. 开启系统支持
  2. 下载 WSL 系统
  3. 设置 Linux 系统 root 用户密码

1.1 开启系统支持

WSL 有系统版本限制,至少本身是在 Windows 10 1903 版本以上。

1.启用适用于 Linux 的 Windows 子系统

以管理员权限运行命令行,执行一下命令:

图中为 Windows 官方新推出的 Windows Terminal,非常好用,强烈推荐。

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

image.png

2.Windows 开启 WSL 支持

控制面板 -> 程序 -> 启动或关闭 Windows 功能,勾选"适用于Linux的Windows子系统"与"虚拟机平台"

image.png

3.升级 X64 的 WSL2 Linux 内核

执行命令

 wsl.exe update

或到官网下载:升级下载

4.设置 WSL 默认版本

执行命名

 wsl --set-default-version 2

image.png

1.2 下载 WSL 系统

执行命令

 wsl.exe install

image.png 如要安装 Ubuntu-18.04,则在命名行继续执行 wsl.exe --install Ubuntu-18.04 即可。

image.png 等待下载完成。

image.png

1.3 设置 root 用户密码

安装完成后,创建新用户,但新安装的系统 root 密码是随机的,我们需要设置为自己的。

在 WSL 中执行命令:

 sudo passwd

image.png

2.WSL 的联网

首先检查当前 WSL 是否成功联网,执行:

 ping www.baidu.com

如果能 ping 通,说明联网正常,如果弹出以下,则需要配置网络设置。

image.png 执行以下命令,解决网络问题,在 WSL 系统中执行:

 # 1.删除本地配置文件
 # 注:一定要先切换到 root 用户后,执行下面的命令
 rm /etc/resolv.conf || true
 rm /etc/wsl.conf || true
 # 2.配置 WSL 网络,解决每次重启 WSL 后恢复初始设置 
 cat <<EOF > /etc/wsl.conf
 [network]
 generateResolvConf = false
 [automount]
 enabled = true
 options = "metadata"
 mountFsTab = false
 EOF
 # 3.配置 DNS 解析问题
 cat <<EOF > /etc/resolv.conf
 nameserver 8.8.8.8
 nameserver 8.8.4.4
 EOF

image.png 退出 WSL 系统,在 Windows 系统中执行:

 cmd as admin:
 wsl --shutdown
 netsh winsock reset
 netsh int ip reset all
 netsh winhttp reset proxy
 ipconfig /flushdns

image.png 重启电脑!!

测试网络是否联通,显示如下则说明网络联通:

image.png

3.Docker 的安装

安装前先更换 WSL 的软件源,换成国内的,提高下载速度。

在 WSL 系统下切换到 root 用户执行命令:

 vim /etc/apt/sources.list

然后添加上:

 # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
 # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
 # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
 # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
 # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse
 ​
 # 预发布软件源,不建议启用
 # deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
 # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse

后面 Docker 的安装直接按照官网执行,这里贴上链接,主要解决和正常 Ubuntu 系统比,systemctl 指令无法使用问题。

执行以下命名开启 systemctl 指令:

 sudo apt-get install daemonize
 sudo daemonize /usr/bin/unshare --fork --pid --mount-proc /lib/systemd/systemd --system-unit=basic.target
 exec sudo nsenter -t $(pidof systemd) -a su - $LOGNAME

至此文章结束。

\