WSL
概述
Windows Subsystem for Linux,即windows下的Linux子系统,可在Windows 10和Windows Server 2019上原生运行Linux二进制可执行文件。
WSL提供了一个由微软开发的Linux兼容的内核接口(不包含Linux内核代码),然后可以在其上运行GNU用户空间,例如Ubuntu、openSUSE、SUSE Linux Enterprise Server、Debian和Kali Linux。这样的用户空间可能包含Bash shell和命令语言,使用本机GNU/Linux命令行工具(sed,awk等),编程语言解释器(Ruby,Python等),甚至是图形应用程序(使用主机端的X窗口系统)。
文件系统
Windows Subsystem for Linuxt提供与真实Linux内核类似的虚拟文件系统(VolFs
和DriveFs
),需要满足了两个目标:
- 提供一个完全支持Linux文件系统的环境
- 能够与Windows上的设备和文件互通
VolFs
VolFs提供了完整的Linux文件系统特性的支持,包括:
- Linux权限管理,访问权限可以通过如chmod和chroot来改变
- 文件的符号链接
- 文件名可以包含一些Windows上不合法的符号
- 大小写敏感
- 包含Linux系统的目录,应用程序文件(
/etc
,/bin
,/usr
等)和/root
、/home
目录都使用的是VolFs。 - 与Windows应用和文件的互用在VolFs里并不支持。
DriveFs
DriveFs是为了和windows互用的文件系统。它需要所有的文件名是合法的windows文件名,使用Windows安全策略,并不完整地支持所有的Linux文件系统特性。文件名是大小写敏感的,用户不允许创建仅仅是大小写不同的两个文件。
所有的Windows磁盘使用DriveFs被挂在到/mnt/
,/mnt/d
等等下面。用户从这里可以访问所有Window下的文件。这允许用户用他们喜欢的Windows编辑器比如Visual StudioCode来编辑文件的同时,通过Bash里的一些开源工具来修改文件。
启用WSL
可以通过以下任一方式启用WSL:
- “程序和功能”->“启用或关闭Windows功能”选中“适用于Linux的Windows子系统”,点击确定并重启系统。
- 管理员权限打开 powershell,执行
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
安装Linux
打开MicrosoftStore,搜索可用的Linux发行版本(Debian、Ubuntu、SUSE、openSUSE等),点击获取安装即可。
安装自定义Linux
某些需要的Linux发行版不在MicrosoftStore中,需要通过power shell安装。
下载Centos7的docker镜像
(可以参考WSL-Distribution-Switcher下载)。
- 访问 CentOS 的官方 Docker 镜像网站:CentOS Cloud SIG image repository.;
- 切换到自己想要的分支,比如:CentOS-7.8.2003-x86_64;
- 进入 docker 目录,下载centos-*-docker.tar.xz文件,比如:CentOS-7.8.2003-x86_64-docker.tar.xz
安装chocolatey
(参考Installing Chocolatey) 使用管理员权限打开 powershell,执行:
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
安装LxRunOffline
执行:
choco install lxrunoffline
部署Centos到WSL
执行:
LxRunOffline.exe install -n centos7 -d D:\Documents\WindowsSubsystemLinux\centos7 -f E:\0.Server\temp\centos\centos-7.8.2003-x86_64-docker.tar.xz
其中-d
后面是要安装到的目录,-f
是前面下载的镜像,-n
用来指定名称。
启动Centos
执行:
LxRunOffline run -n centos
或者:
wsl -d centos
或者(只安装了这一个WSL):
bash
注意
- 错误:LxRunOffline.exe : 无法将“LxRunOffline.exe”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
- 解决:
cd C:\tools\lxrunoffline
,再执行LxRunOffline
命令。
- 解决:
- 错误:Suggestion [3,General]: 找不到命令 LxRunOffline.exe,但它确实存在于当前位置。默认情况下,Windows PowerShell 不会从当前位置加载命令。如果信任此命令,请改为键入“.\LxRunOffline.exe”。有关详细信息,请参阅 "get-help about_Command_Precedence"。
- 解决:在LxRunOffline路径下,用
.\LxRunOffline.exe
替换LxRunOffline.exe
命令。
- 解决:在LxRunOffline路径下,用