文章目录
windows10下linux子系统
- windows10可以安装linux子系统,但是就目前个人使用感受来说,作为新手入门和学习linux可以使用,但若是作为开发中的编译环境来使用那就不可了,经常会报出一些出乎意料的错误,慎用
- 官方说明文档:https://docs.microsoft.com/zh-cn/windows/wsl/ 适用于 Linux 的 Windows 子系统概述 | Microsoft Docs
安装
-
在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用户登录,那么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.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中可能仍然无法启动服务
-
如果还是没有启动,那么可能是ubuntu22.04版使用了iptables-nft而WSL2不支持导致的
-
需要运行以下命令
sudo update-alternatives --config iptables //出现选项后选择1即可,然后重启docker:`service docker restart`
-
经本人测试,在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
参考
-
Win10 Subsystem Linux : Ubuntu 的root密码_casm 世事如棋 乾坤莫测 笑尽英雄-CSDN博客
-
WSL安装和运行docker服务(Windows Subsystem for Linux - WSL install and run docker daemon) - 简书
-
(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博客