适用于 Linux 的 Windows 子系统(WSL)- CentOS
微软商店安装 CentOS 子系统居然收费,本文通过 LxRunOffline
和 ~~[WSL-Distribution-Switcher](https://github.com/RoliSoft/WSL-Distribution-Switcher/)(报错)~~ 安装 CentOS 子系统
开启功能
方式一:使用管理员权限打开 Powershell 执行,重启电脑完成安装1
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
方式二:控制面板->程序->启用或关闭 Windows 功能->勾选适用于 Linux 的 Windows 子系统,确定;重启电脑完成安装
安装系统
辅助软件
软件下载
- 最新版本: https://github.com/DDoSolitary/LxRunOffline/releases
开发版本:https://ddosolitary-builds.sourceforge.io/LxRunOffline/
右键菜单
右键菜单(msvc)功能要求正确注册 shell 扩展 DLL,使用 Chocolatey 安装此项目会自动完成此操作;如果是直接下载的程序文件,则需要手动运行以注册 DLL 文件
1
2
3choco install lxrunoffline
scoop bucket add extrasscoop install lxrunoffline
regsvr32 LxRunOfflineShellExt.dll系统镜像
直接点击下方链接下载,如:centos-7-docker.tar.xz
- https://buildlogs.centos.org/centos/7/docker/
- https://hub.docker.com/_/centos/ 配合 https://pullimage.passerma.com/
- https://github.com/mishamosher/CentOS-WSL
镜像安装
创建 D:\WSL 文件夹作为安装使用目录(自定义)并将 LxRunOffline.exe 和 rootfs_centos_centos7.tar.xz 复制到 D:\WSL 下,进入 D:\WSL 右键“在 Windwos Terminal 中打开”
想全局使用 LxRunOffline.exe,请加入系统环境变量,则不需要拷贝 LxRunOffline.exe
输入一下相应的命令创建子系统分发版,分发版名称不要有空格1
.\LxRunOffline.exe install -n CentOS -d "D:\WSL\CentOS 7" -f D:\WSL\centos-7-docker.tar.xz
查看镜像
1 | .\LxRunOffline.exe list |
运行镜像
1 | .\LxRunOffline.exe run -n CentOS |
卸载镜像
1 | .\LxRunOffline.exe uninstall -n CentOS |
残留文件需要手动删除
快捷方式
一般命令行创建失败,则使用管理员模式打开命令提示符1
Lxrunoffline s -n CentOS -f 'C:\Users\Administrator\Desktop\CentOS.lnk'
也可以直接 Widnwos Terminal 中找到对应的名字,然后点击启动
常见故障
- 不存在具有提供的名称的分布
[已退出进程,代码为 4294967295 (0xffffffff)]
排除分支版名称带空格的问题,就关闭“适用于 Linux 的 Windows 子系统”再重新打开,然后重启电脑。
关闭“适用于 Linux 的 Windows 子系统”1
2dism.exe /online /disable-feature /featurename:Microsoft-Windows-Subsystem-Linux /norestart
dism.exe /online /disable-feature /featurename:VirtualMachinePlatform /norestart
重新开启“适用于 Linux 的 Windows 子系统”1
2dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
然后重启 Windows 系统