wsl(windows子系统)简要介绍和安装步骤

wsl(windows子系统)简要介绍和安装步骤

author:onceday date:2022年6月2日

文章目录

        • wsl(windows子系统)简要介绍和安装步骤
        • 1.简要介绍
        • 2.WSL安装
          • 2.1 自动安装命令
          • 2.2 手动安装步骤
          • 2.3 设置WSL的默认版本
          • 2.4 安装linux分发
          • 2.5 在windows server上安装
        • 3. WSL安装实践教程
          • 3.1 从WSL1切换到WSL2
        • 4.WSL基本操作命令
        • 5.限制WSL2的内存使用
        • 6.迁移备份WSL2的子系统
          • 6.1 查看全部子系统
          • 6.2 关闭子系统
          • 6.3 导出(备份)子系统
          • 6.4 注销原有的`ubuntu-20.04`子系统
          • 6.5 导入备份的`ubuntu-20.04`子系统
          • 6.6 设置默认用户名
          • 6.7 docker connect failed问题
        • 注:本内容收集整理于互联网,仅供学习交流之用!

1.简要介绍

详情参考官方文档:适用于 Linux 的 Windows 子系统文档 | Microsoft Docs

安装详细可参考:升级Windows中Linux子系统WSL1到WSL2 | Knner.Wang’s Blog

提供linux系统环境,减少传统虚拟机或者双启动的设置开销。

可用功能如下:

  • 在 Microsoft Store 中选择你偏好的 GNU/Linux 分发版。
  • 运行常用的命令行软件工具(例如 grepsedawk)或其他 ELF-64 二进制文件。
  • 运行 Bash shell 脚本和 GNU/Linux 命令行应用程序,包括:
    • 工具:vim、emacs、tmux
    • 语言:NodeJS、Javascript、Python、Ruby、C/C++、C# 与 F#、Rust、Go 等
    • 服务:SSHD、MySQL、Apache、lighttpd、MongoDB、PostgreSQL。
  • 使用自己的 GNU/Linux 分发包管理器安装其他软件。
  • 使用类似于 Unix 的命令行 shell 调用 Windows 应用程序。
  • 在 Windows 上调用 GNU/Linux 应用程序。

wsl1和wsl2的性能比对:

功能 WSL 1 WSL 2
Windows 和 Linux 之间的集成
启动时间短
与传统虚拟机相比,占用的资源量少
可以与当前版本的 VMware 和 VirtualBox 一起运行
托管 VM
完整的 Linux 内核
完全的系统调用兼容性
跨 OS 文件系统的性能

WSL 2 仅适用于 Windows 10 版本 1903、内部版本 18362 或更高版本。

通过按 Windows 徽标键 + R,检查 Windows 版本,然后键入 winver,选择“确定”。

WSL 2 也适用于 VMware 15.5.5+ 和 VirtualBox 6+。

WSL 2 Linux 内核是开源的。 可查看由构建该内核的团队撰写的博客文章随 Windows 一起提供 Linux 内核。

但目前存在以下问题:

  • WSL 2 不支持访问串行端口。
  • WSL 2 的跨os文件性能较弱
  • WSL 2 的内存使用量会随使用而缩放。 如果有长时间运行的 WSL 会话或访问非常大量的文件,此缓存可能会耗尽 Windows 内存。

2.WSL安装

参考官方文档:安装 WSL | Microsoft Docs

2.1 自动安装命令
wsl --install

请注意,如果已安装wsl,那么上述命令将弹出一个帮助文档:

PS C:\WINDOWS\system32> wsl --install
版权所有(c) Microsoft Corporation。保留所有权利。

用法: wsl.exe [Argument] [Options...] [CommandLine]

运行 Linux 二进制文件的参数:

    如果未提供命令行,wsl.exe 将启动默认 shell。

    --exec, -e 
        在不使用默认 Linux Shell 的情况下执行指定的命令。

    --
        按原样传递其余命令行。
.............省略很多行.............

此时需要使用旧版本的WSL安装步骤(直接跳到下文—手动安装WSL):安装 WSL | Microsoft Docs

在未安装WSL的机器上,该命令可完成自动安装的全部过程:

  • 启动所需的windows组件和功能
  • 下载最新的linux内核
  • 将WSL2设置为默认值
  • 安装LIunx发行版-----Ubuntu。

可通过以下命令安装指定的linux发行版:

  1. 先获取可用的linux发行版列表

    wsl --list --online
    以下是可安装的有效分发的列表。
    请使用“wsl --install -d <分发>”安装。
    
    NAME            FRIENDLY NAME
    Ubuntu          Ubuntu
    Debian          Debian GNU/Linux
    kali-linux      Kali Linux Rolling
    openSUSE-42     openSUSE Leap 42
    SLES-12         SUSE Linux Enterprise Server v12
    Ubuntu-16.04    Ubuntu 16.04 LTS
    Ubuntu-18.04    Ubuntu 18.04 LTS
    Ubuntu-20.04    Ubuntu 20.04 LTS
    
  2. 指定安装的linux发行版名称

    wsl --install -d  #是发行版的名称
    wsl --install -d Ubuntu-20.04
    
2.2 手动安装步骤

参阅官方文档:旧版 WSL 的手动安装步骤 | Microsoft Docs

1.首先启动适用于Linux的Windows子系统(管理员启动powershell)

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

2.检查版本号

  • 对于 x64 系统:版本 1903 或更高版本,采用内部版本 18362 或更高版本。
  • 对于 ARM64 系统:版本 2004 或更高版本,采用内部版本 19041 或更高版本。
  • 低于 18362 的版本不支持 WSL 2。 使用 Windows Update 助手更新 Windows 版本。

3.启动虚拟机功能

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

之后重启计算机,以完成更新安装! 这些也可以图形化操作完成:

控制面板,找到程序,点击进去,选择启用或者关闭Windows功能,里面即可打开上述两种功能。

5.下载Linux内核更新包

  • 适用于 x64 计算机的 WSL2 Linux 内核更新包

可使用systeminfo命令查看处理器信息:

系统类型:         x64-based PC
处理器:           安装了 1 个处理器。
                  [01]: Intel64 Family 6 Model 158 Stepping 10 GenuineIntel ~3696 Mhz

如果使用的是 ARM64 计算机,请下载 ARM64 包。

下载完这些更新包,直接安装即可!

2.3 设置WSL的默认版本
wsl --set-default-version 2
2.4 安装linux分发

可以直接打开Microsoft Store,pc上都预安装了这个软件。

2.5 在windows server上安装

参考文档:在 Windows Server 上安装 Linux 子系统 | Microsoft Docs

3. WSL安装实践教程

官方文档地址:设置 WSL 开发环境 | Microsoft Docs

VS code配套开发入门教程:开始通过 WSL 使用 VS Code | Microsoft Docs

3.1 从WSL1切换到WSL2

如果已安装了windows子系统,那么可以在powershell里面输入以下命令观察当前的版本情况。

PS C:\WINDOWS\system32> wsl -l -v
  NAME                   STATE           VERSION
* Ubuntu-22.04           Running         2
  docker-desktop         Running         2
  docker-desktop-data    Running         2

如果显示的版本号是1,那么需要按一下步骤来升级:

  1. 首先安装内核,即本文2.2节里提到的下载内核步骤

    参阅官方文档:旧版 WSL 的手动安装步骤 | Microsoft Docs

    参阅博客文档:升级Windows中Linux子系统WSL1到WSL2 | Knner.Wang’s Blog

  2. 设置默认版本

    C:\Users\admin>wsl --set-default-version 2
    WSL 2 需要更新其内核组件。有关信息,请访问 https://aka.ms/wsl2kernel
    
  3. 设置当前linux分发版的版本

    wsl --set-version Ubuntu 2
    正在进行转换,这可能需要几分钟时间...
    有关与 WSL 2 的主要区别的信息,请访问 https://aka.ms/wsl2
    转换完成。
    

    这里需要注意:如果这里直接跳过几分钟的过程,直接弹出下一行命令行,并且 “转换完成” 变成 “提示要更新linux的内核”,那么需要执行步骤1安装内核。

    Ubuntu 是安装的linux分发版的名称,可使用wsl -l -v列出当前可用linux版本,然后填入它们的名字。

  4. 完成以上步骤,输入以下指令观察是否成功:

    C:\Users\admin>wsl -l -v
      NAME      STATE           VERSION
    * Ubuntu    Stopped         2
    

    如果成功了,则版本号会显示2,如果还是为1,则可能是内核未更新!

4.WSL基本操作命令

参阅官方文档:WSL 的基本命令 | Microsoft Docs

5.限制WSL2的内存使用

C:\Users\54041里面新建文本文件.wslconfig54041是用户名,然后里面填入以下内容,更多内容参阅官方文档:Advanced settings configuration in WSL | Microsoft Docs

[wsl2]
processors=8
memory=8GB
swap=8GB
localhostForwarding=true

修改完成之后需要重启wsl2才能生效,关闭正在运行的实例

wsl --shutdown

然后重新打开即可!

6.迁移备份WSL2的子系统

默认的wsl2会把Linux子系统虚拟磁盘文件放在C盘下 ,如果在wsl2里面安装了太多的程序,可能空间占用会很大。

有一种简单的方法是使用LxRunOffline工具迁移。但是这里不介绍,直接用wsl命令来实现。

参考文档:

  • Windows WSL2 移动 适用于 Linux 的 Windows 子系统_深色風信子的博客-CSDN博客_移动 windows子系统
6.1 查看全部子系统

需要以管理员权限运行powershell

PS C:\Users\cg> wsl --list --all --v
* Ubuntu-20.04           Running         2
  docker-desktop         Stopped         2
  docker-desktop-data    Stopped         2

如果子系统正在运行,需要关闭它。

6.2 关闭子系统

如下两个命令皆可:

PS C:\Users\cg> wsl --terminate Ubuntu-20.04
PS C:\Users\cg> wsl --shutdown

然后再确认一遍是否关闭准备迁移的子系统

PS C:\Users\cg> wsl --list --all --v
  NAME                   STATE           VERSION
* docker-desktop         Stopped         2
  Ubuntu-20.04           Stopped         2
  docker-desktop-data    Stopped         2
6.3 导出(备份)子系统

这里准备备份的子系统是ubuntu-20.04,使用下面命令即可。

备份的目的路径是E:\Ubuntu-20.04.tar,路径和名字取自己希望值即可。

PS C:\Users\cg> wsl --export Ubuntu-20.04 E:\Ubuntu-20.04.tar

这个过程需要等待一段时间,如果原有的子系统内容很多,那么可能要等待10+分钟

6.4 注销原有的ubuntu-20.04子系统
PS C:\Users\cg> wsl --unregister Ubuntu-20.04
PS C:\Users\cg> wsl --list --all --v
  NAME                   STATE           VERSION
  docker-desktop         Stopped         2
  docker-desktop-data    Stopped         2

注销完之后,再看列表中的子系统,已经没有ubuntu-20.04了。

6.5 导入备份的ubuntu-20.04子系统

上面的导出过程本质上也是给ubuntu-20.04做了一个备份,里面存储了全部内容。

因此这里实际上在导入一个备份。

首先确定目的文件夹,如果目录不存在,需要手动创建。这里目的目录为E:\ubuntu\。然后该子系统的虚拟磁盘文件就会放在此目录下。

PS C:\Users\cg> wsl --import Ubuntu-20.04 E:\ubuntu\ E:\Ubuntu-20.04.tar --version 2
PS C:\Users\cg> wsl --list --all --v
  NAME                   STATE           VERSION
* docker-desktop         Stopped         2
  Ubuntu-20.04           Stopped         2
  docker-desktop-data    Stopped         2

导入过程比较快,然后便可以看到刚刚导入的子系统了。

如果版本号不对,可以使用下面命令重设版本号。

PS C:\Users\cg> wsl --set-version Ubuntu-20.04 2
正在进行转换,这可能需要几分钟时间...
有关与 WSL 2 的主要区别的信息,请访问 https://aka.ms/wsl2
该分发已是请求的版本。
6.6 设置默认用户名

如果不设置默认用户名,那么登入wsl2的ubuntu-22.04时,默认以root用户登入。

一般之间都是默认都不是由root用户登入,所以可以使用下面命令设置默认登入用户。

ubuntu.exe config --default-user 

对于ubuntu-22.04,上面命令改写为:

ubuntu2004.exe config --default-user "onceday"

其中“onceday"也要用你自己的username代替

6.7 docker connect failed问题

迁移子系统后,要重启docker desktop应用,此时可能会出现下面问题。

onceday@ubuntu:~$ docker ps
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

docker确实启动了,但是此时无法连接上docker-server

这个时候需要在docker-desktop->setting->Resources->WSL INTEGRATION-里面Enable integration with additional distros:中使能Ubuntu-20.04.

wsl(windows子系统)简要介绍和安装步骤_第1张图片

注:本内容收集整理于互联网,仅供学习交流之用!

你可能感兴趣的:(计算机基础知识,windows,linux)