admin 管理员组

文章数量: 887021

文章目录

  • windows10下linux子系统
    • 安装
    • 如何更改安装目录到其他盘
    • 如何重启 Windows 10 子系统(WSL) ubuntu
    • wsl升级为wsl2
    • WSL中启动docker
    • 如何找到wsl子系统对应的本地文件目录
    • 在wsl中如何访问window文件
    • 其他
      • 遇到docker: unrecognized service
    • 参考

windows10下linux子系统

  • windows10可以安装linux子系统,但是就目前个人使用感受来说,作为新手入门和学习linux可以使用,但若是作为开发中的编译环境来使用那就不可了,经常会报出一些出乎意料的错误,慎用
  • 官方说明文档:https://docs.microsoft/zh-cn/windows/wsl/ 适用于 Linux 的 Windows 子系统概述 | Microsoft Docs

安装

  • 在windows10下安装linux子系统可以参考微软的文档https://docs.microsoft/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用户登录,那么windows打开cmd执行以下命令即可

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

    ubuntu2204 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/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中可能仍然无法启动服务

  • 如果还是没有启动,那么可能是ubuntu22.04版使用了iptables-nft而WSL2不支持导致的

  • 需要运行以下命令

    sudo update-alternatives --config iptables //出现选项后选择1即可,然后重启docker:`service docker restart`
    

  • 经本人测试,在WSL2中,使用systemctl反而失败,而 service却能成功,原因暂不详

  • 如图,输入docker version ,看到客户端和服务端信息才算成功

  • 如果想安装docker,可以参考官方说明:https://docs.docker/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 | sh
    

参考

  • Win10 Subsystem Linux : Ubuntu 的root密码_casm 世事如棋 乾坤莫测 笑尽英雄-CSDN博客

  • WSL安装和运行docker服务(Windows Subsystem for Linux - WSL install and run docker daemon) - 简书

  • WSL 中 Docker 使用总结 - 简书

  • (6条消息) win10 wsl2修改默认安装目录到其他盘_w851685279的博客-CSDN博客

  • (74条消息) Windows 10 中WSL 内部目录对应的本地目录_muzizongheng的专栏-CSDN博客_wsl文件目录

  • 踩坑!WSL2报错:docker: unrecognized service_ubuntu docker: unrecognized service_写bug战神的博客-CSDN博客

  • Docker无法在WSL2的Ubuntu启动的问题_stopping event stream following graceful shutdown"-CSDN博客

本文标签: 子系统 Linux WSL