windows10下linux子系统(wsl)

windows10下linux子系统

安装

  • 在windows10下安装linux子系统可以参考微软的文档https://docs.microsoft.com/en-us/windows/wsl/install-win10,其实主要也就三步

  • step1.管理员打开PowerShell,运行如下命令后会提示重启

    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
    
  • step2.在微软商店搜索ubuntu进行下载安装

  • 在这里插入图片描述

  • step3.安装完成后进入ubuntu会提示创建用户和密码,按提示做就行了


  • 安装完Ubuntu后忽然意识到没有设置root密码,我们可以在终端输入命令 sudo passwd,然后输入当前用户的密码,enter,终端会提示我们输入新的密码并确认,此时的密码就是root新密码。修改成功后,输入命令 su root,再输入新的密码就ok了

  • 如果你想默认root用户登录,那么打开cmd执行以下命令即可

    <ubuntu版本> config --default-user root
    
  • ‪其中的 <ubuntu版本> 并不是固定的,你可以到此路径下查看:C:\Users\<用户名>\AppData\Local\Microsoft\WindowsApps,比如我的查到为ubuntu2004.exe ,那么我就执行

    ubuntu2004 config --default-user root
    

如何更改安装目录到其他盘

  • 默认情况下wsl是安装在c盘的,如果我们的c盘比较吃紧的话,那么就需要考虑迁移到其他盘,命令示例如下
    wsl -l --all -v  #  查看已安装的linux发行版本
    wsl --export Ubuntu d:\wsl2-ubuntu.tar  # 导出分发版为tar文件到d盘
    wsl --unregister Ubuntu # 注销当前分发版
    wsl --import Ubuntu d:\wsl2-ubuntu d:\wsl2-ubuntu.tar --version 2 # 重新导入并安装WSL在D盘
    del d:\wsl2-ubuntu.tar # 删除tar
    
  • 上述命令的Ubuntu是根据第一个命令得到的

如何重启 Windows 10 子系统(WSL) ubuntu

  • WSL 子系统是基于 LxssManager 服务运行的,只需要将 LxssManager 重启即可,可以做成一个 bat 文件
net stop LxssManager
net start LxssManager

wsl升级为wsl2

  • 旧版 WSL 的手动安装步骤 | Microsoft Docs
  • 以上文档里有详细说明升级到wsl2的过程,直接从步骤2开始看起即可,注意不要颠倒顺序,比如先安装了ubuntu的话那么要先卸载掉
  • 安装完linux发行版(比如ubuntu)后可以用以下命令检查是否升级到了wsl2
wsl --list --verbose

在这里插入图片描述

WSL中启动docker

  • 如果是WSL1,那么docker可能无法正常运行

  • 需要升级到WSL2的可以参考这篇文章将win10升级到2004:win10怎么更新到2004版本_windows10升级2004图文步骤-系统城

  • 如果执行wsl --set-default-version 2报错,如下

  • 那么请安装WSL 2 Linux 内核:https://docs.microsoft.com/zh-cn/windows/wsl/wsl2-kernel

  • 如果出现

  • 在这里插入图片描述

  • 那么则需要将此项打开,并检查bios是否开启了虚拟化

  • 在这里插入图片描述
    在这里插入图片描述

  • 如果在WSL中安装了docker,运行docker version却只能看到client的信息,说明docker服务没跑起来

    root@DESKTOP-NSKUJCE:/home/hwj# docker version
    Client: Docker Engine - Community
     Version:           19.03.5
     API version:       1.40
     Go version:        go1.12.12
     Git commit:        633a0ea838
     Built:             Wed Nov 13 07:29:52 2019
     OS/Arch:           linux/amd64
     Experimental:      false
    Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
    
  • 这时需要关闭wsl后右键以管理员身份运行,并执行以下命令然后再看看服务是否启动了

    sudo cgroupfs-mount
    sudo service docker start
    sudo docker version
    

    以上命令在WSL1中可能仍然无法启动服务

  • 经本人测试,在WSL2中,使用systemctl反而失败,而 service却能成功,原因暂不详
    在这里插入图片描述在这里插入图片描述

  • 如图,输入docker version ,看到客户端和服务端信息才算成功
    在这里插入图片描述

  • 如果想安装docker,可以参考官方说明:https://docs.docker.com/engine/install/ubuntu/

如何找到wsl子系统对应的本地文件目录

  • 按住win+R,在运行中输入“\\wsl$”,之后就可以看到子系统的目录了
    在这里插入图片描述

在wsl中如何访问window文件

  • windows文件在wsl中为/mnt/ ,如C:\Users\xxx.txt文件想要在wsl中访问,则只需要改为 /mnt/c/Users/xxx.txt 即可

其他

遇到docker: unrecognized service

  • 假如你是使用apt的方式安装docker(sudo apt -y install docker.io),那么你可能就会遇到这个问题

  • 建议卸载(sudo apt --purge remove docker.io)后按照官网的方式进行重新安装

  • 或者直接使用如下命令下载脚本后进行安装

    curl https://get.docker.com | sh
    

参考