发布日期:2023-6-25 更新日期: 2023-7-8文章字数 0阅读时长:0分钟

type
Post
status
Published
date
Jun 25, 2023
slug
windows-subsystem
summary
Windows中安装wsl并更新到wsl2
tags
工具
软件
category
技术分享
icon
password
URL
文章来自实操技术总结

需要开启的服务

 
  • AppX Deployment Service (AppXSVC)
    • 与Microsoft Store有关的基础服务
    • 关闭会导致应用打不开
  • Windows Defender Firewall
    • 不开启会遇到错误0x80070005
    • 将服务设为自动启动
  • Windows更新
    • 用于打开Windows子系统和虚拟机平台等功能
  • LxssManager
    • wsl的基础服务,必须开启,设为自动启动

安装过程

 

安装Linux子系统


  1. 控制面板 > 程序和功能 > 启用或关闭Windows功能 > 适用于Linux的Windows子系统 > 启用
  1. 重启
 

安装Linux分发版


在power shell中下载并安装Ubuntu应用安装包
  1. 以管理员权限启动power shell
  1. 查看分发版,这一步需要科学上网
    1. PS C:\Windows\system32> wsl --list --online 以下是可安装的有效分发的列表。 请使用“wsl --install -d <分发>”安装。 NAME FRIENDLY NAME Ubuntu Ubuntu Debian Debian GNU/Linux kali-linux Kali Linux Rolling Ubuntu-18.04 Ubuntu 18.04 LTS Ubuntu-20.04 Ubuntu 20.04 LTS Ubuntu-22.04 Ubuntu 22.04 LTS OracleLinux_7_9 Oracle Linux 7.9 OracleLinux_8_7 Oracle Linux 8.7 OracleLinux_9_1 Oracle Linux 9.1 SUSE-Linux-Enterprise-Server-15-SP4 SUSE Linux Enterprise Server 15 SP4 openSUSE-Leap-15.4 openSUSE Leap 15.4 openSUSE-Tumbleweed openSUSE Tumbleweed
  1. 执行以下命令
Invoke-WebRequest -Uri https://aka.ms/wslubuntu2004 -OutFile Ubuntu.appx -UseBasicParsing Add-AppxPackage .\Ubuntu.appx
  1. 查看分发版
    1. 由于未安装成功,wsl会提示需要安装分发版子系统
    2. 适用于 Linux 的 Windows 子系统没有已安装的分发版
 
注意事项
  1. 在第一步中,下载Ubuntu没有问题,但是安装会报错,这里会提示wsl的内核版本过低,可以继续往下做
  1. 这里是通过power shell中命令行来下载安装分发版的子系统,你也可以通过Microsoft Store来搜索并安装,或者使用wsl命令来安装
 

更新wsl


下载链接:
下载完成后直接安装就可以了
注意事项
更新到wsl2以后,继续安装Ubuntu分发版,这里会提示要求安装“虚拟机平台”,我们继续往下做
 

安装虚拟机平台


  1. 控制面板 > 程序和功能 > 启用或关闭Windows功能 > 虚拟机平台 > 启用
  1. 重启
 
到这里,依赖的软件环境已经全部配置完成,重新安装Ubuntu分发版,此时应该安装完成
查看Ubuntu分发版
PS C:\Windows\system32> wsl -l -v NAME STATE VERSION * Ubuntu Stopped 2
子系统的用户名是leif,密码是xing
 

导出子系统


默认子系统会安装在C盘中,我们需要导出子系统并重新导入到其他盘中
wsl --export Ubuntu Ubuntu.tar wsl --unregister Ubuntu wsl --import Ubuntu D:/workspace/subsystem/Ubuntu Ubuntu.tar --version 2
 

遇到的问题

 
  1. WindowsApps目录权限问题,获取管理员权限
    1. 通过everything找到WindowsApps,通过右键“管理员取得所有权”
  1. 分发版所在盘必须大于20GB以上
    1. 通过wsl导出包并重新导入即可,导出后注销原来的分发版
 

报错分析

 

App installation failed with error message: AppxManifest.xml(33,14): 错误 0x80070005: 无法注册 CanonicalGroupLimited.UbuntuonWindows_2004.2021.825.0_x64__79rhkp1fndgsc 程序包,因为在注册 windows.appExecutionAlias 扩展时遇到以下错误: 拒绝访问。 。请重试,如果问题仍然存在,请联系程序包发布者。 (0x80070005)
这个错误是权限问题,获取WindowsApps的管理员权限可以解决
 

Add-AppxPackage Ubuntu.appx Add-AppxPackage : 部署失败,原因是 HRESULT: 0x80073CF6, 无法注册包。 错误 0x800706D9: 在处理请求时,由于以下错误,系统无法注册 windows.firewall 扩展: 终结点映射器中没有更多的终结点可用。
解决这个问题,只需要启动Windows防火墙服务就可以了
 

Docker的配置与应用


 

配置

  1. /etc/docker/daemon.json
    1. docker后台服务配置文件
  1. ~/.docker/config.json
    1. docker的用户配置文件
  1. /var/lib/docker
    1. docker的数据目录,存放镜像和容器等数据
 
windows链接ubuntu子系统的docker目录,在windows中执行以下命令
cd d:/workspace/data mklink /D docker "\\wsl$\Ubuntu\var\lib\docker"
用户登录,不指定镜像源时默认是docker hub
docker login docker logout docker login --username=zdcy2012 registry.cn-hangzhou.aliyuncs.com docker logout registry.cn-hangzhou.aliyuncs.com
设置加速器,不指定默认使用docker hub源
{ "registry-mirrors": ["https://qyps2ser.mirror.aliyuncs.com"] }
#!/bin/bash if [ -z "$1" ]; then echo "No parameter provided. Exiting..." exit 0 fi if [ "$1" = "aliyun" ]; then cp /etc/docker/daemon.json.bak2 /etc/docker/daemon.json elif [ "$1" = "dockerhub" ]; then rm /etc/docker/daemon.json fi service docker restart
使用以上脚本可以切换镜像源
 

应用

 
 

释放空间

docker在使用过程中,镜像、容器和数据会占用大量空间,具体目录是/var/lib/docker/overlay2,本节介绍一种方法如何释放空间,并将vhdx格式的磁盘映像文件瘦身,具体方法如下:
 
  1. 停用并删除容器
    1. docker stop <container> docker rm <container>
  1. 删除映像
    1. docker rmi <image>
  1. 释放overlay2空间
    1. docker system prune
      - all stopped containers - all networks not used by at least one container - all dangling images - all dangling build cache
  1. 停止docker服务并退出Ubuntu子系统
    1. service docker stop exit wsl --shutdown
  1. 为vhdx文件瘦身
    1. @set "script_dir=%~dp0" @echo 当前的工作目录是: %script_dir% @cd /d "%script_dir%" @echo select vdisk file="%script_dir%ext4.vhdx" > compact_disk.txt @echo attach vdisk readonly >> compact_disk.txt @echo compact vdisk >> compact_disk.txt @echo detach vdisk >> compact_disk.txt @diskpart /s .\compact_disk.txt @rm -f compact_disk.txt @pause
      • 将该文件命名为compact.cmd
      • 与vhdx文件同一个目录
      • 以管理员权限来执行
 

学习使用Notion快捷键 学习使用Notion快捷键
Windows系统的安装与升级 Windows系统的安装与升级

系统安装与升级,开机后的系统配置与备份