WSL2相关

背景

WSL:

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

在逛OpenHarmony开发者论坛的时候,看到使用WSL2编译OpenHarmony,突起想起自己之前在自己的Windows的电脑上也捣鼓了一下WSL2,装了个Ubuntu20.04,然后一直就扔在那没用,今天正好再继续弄弄

安装WSL

配置 WSL 环境

使用 win+s 搜索 启用或关闭windows功能,并打开:

  • 适用于Linux的Windows子系统
  • 虚拟机平台

下载 Linux 内核更新包:

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

运行并安装

将 WSL 2 设置为默认版本

wsl --set-default-version 2

安装Linux分发版

Microsoft Store搜索Ubuntu对应版本,这里选的是20.04,安装
默认情况下会安装到C盘。

配置Linux

为新的 Linux 分发版创建用户帐户

切换源

sudo vim /etc/apt/sources.list

更新

sudo apt update
sudo apt upgrade

查看已安装的 linux 发行版本

C:\Users\xxx> wsl -l -v

配置vscode

在vscode里面下载好 WSLRemote - SSH拓展。
就可以愉快地玩耍了~

准备将之前在 VirtualBox 里面的东西弄进去

转移安装目录

wsl2安装的发行版默认是安装在C盘的,像我的C盘就不是很大,所以需要转移下目录。

  1. 关闭所有的Linux发行版

    C:\Users\xxx> wsl --shutdown
  2. wsl查看已安装的linux发行版本

    C:\Users\xxx> wsl -l -v
      NAME              STATE           VERSION
    * Ubuntu-20.04      Stopped         2
  3. 导出已安装的发行版本

    C:\Users\xxx> wsl --export Ubuntu-20.04 D:\wsl\Ubuntu20.04.tar

    将已经安装的Ubuntu-20.04打包成Ubuntu20.04.tar,注意磁盘分区空间应充足

  4. 注销已导出的发行版本

    C:\Users\xxx> wsl --unregister Ubuntu-20.04
  5. 重新安装已导出的发行版本

    C:\Users\xxx> wsl --import Ubuntu-20.04 D:\wsl\ubuntu20.04 D:\wsl\ubuntu20.04.tar

    wsl –import <安装发行版本名称> <安装发行版本路径> <已导出的发行版本>

  6. 删除已导出的发行版本

    删除 D:\wsl\ubuntu20.04.tar

压缩WSL2的磁盘

WSL2采用类似于虚拟机的虚拟磁盘作为存储,从上面转移导出来的文件(ext4.vhdx)就可看到,所以它和虚拟机的磁盘一样,可以自动扩容,但不会自动缩容,一旦把它“撑大”,即使把里面的文件删除也不会自动“缩小”,因此只能手动地进行压缩来释放磁盘空间

步骤如下:

  1. 关闭所有的Linux发行版

    wsl --shutdown
  2. 备份,就是和前面说的导出一样(可选)

    C:\Users\xxx> wsl --export Ubuntu-20.04 D:\wsl\Ubuntu20.04.tar
  3. 压缩虚拟磁盘文件

    # 运行管理计算机的驱动器的 DiskPart 命令
    C:\Users\xxx> diskpart

    在新打开的DiskPart命令工具中执行:

    # 选择虚拟磁盘文件
    DISKPART> select vdisk file="D:\xxx\ext4.vhdx(ext4.vhdx文件路径)"
    # 压缩文件
    DISKPART> compact vdisk
    # 压缩完毕后卸载磁盘
    DISKPART> detach vdisk