WSL 是 Windows 操作系统的一项功能,使你能够直接在 Windows 上运行 Linux 文件系统以及 Linux 命令行工具 和 GUI 应用,以及传统的 Windows 桌面和应用。WSL 2 仅适用于 Windows 10 版本 1903、内部版本 18362 或更高版本,或 Windows 11。

    在 VirtualBox、Vagrant Box、VMware Workstation、Docker 等软件虚拟环境中运行 Linux系统,会占用相当多的 CPU、内存、硬盘空间 等资源,再开个浏览器、PhpStorm、QQ、微信,不过分吧,然而这样 CPU 利用率曲线图马上会飙升 像珠穆朗玛峰,16GB内存的用量也是直接登顶。实在受不鸟了!

    最近系统卡得不行,心一横 去下载了一个微软官方的 Win10 ISO 重装了下系统,安装时选择了专业版,重装过程出乎意料的快速,居然比 Ghost 系统安装 更快、更稳、更简单!装好后开机几秒钟就直接进去了,桌面只有一个回收站!没有别的图标!这是从未体验过的真正的纯净版系统啊!于是果断把以前收藏的 Ghost 系统、以及“系统之家”之类的网站收藏夹 统统删除,接下来一顿操作猛如虎,把微软自带的好多软件都 通通卸载掉,进入系统高级设置,设置系统环境变量,把 TEMP 目录都改为 D:\Temp\xxx,把 C 盘的虚拟内存取消 设到 D 盘,安装纯净版 微PE,重启,进入 PE,删除 C 盘的虚拟内存文件、以及用户目录下的各种 缓存文件,然后 把 C盘 Ghost 打包备份,轻车熟路。接下来就可以 使劲的捣鼓系统了,毕竟 有备无患嘛!

    重启系统,秒进,用 DiskGenius 把以前的虚拟机磁盘里面的文件复制出来,删除掉虚拟磁盘,硬盘瞬间释放掉十几个 GB,“红盘” 终于变成 “蓝盘” 了。心里一下子也变得宽敞了。下一步是要直奔主题了!有点小激动啊!下面 动作太快,有掉链子(省略步骤) 的地方,请担待些!

    进入 “控制面板\程序\程序和功能”,对,就是那个 “卸载或更改程序” 界面,点击左侧的 “启用或关闭 Windows 功能”,弹出个小小窗口,里面有好多选项,拉长一点吧。我勾选了 “适用于 Linux 的 Windows 子系统” > 点确定按钮 >重启系统。

 下载 Linux 发行版:

你可以直接下载 可执行文件 来安装,跟安装 普通应用一样的,很简单。

旧版 WSL 的手动安装步骤 | Microsoft Docs

https://wsldownload.azureedge.net/Ubuntu_2004.2020.424.0_x64.appx

下面直接玩 命令行吧:

在 PowerShell 或 Windows命令提示符(CMD)或 Windows Terminal、或 Git Bash 中 使用 "wsl" 命令 就可以转玩 Linux 子系统了。

  

##查看可用的 Linux 发行版列表:

wsl --list --online

wsl -l -o

##安装 默认的 Linux 发行版 (Ubuntu):

wsl --install

##安装指定的 Linux 发行版:

wsl --install -d <DistroName>

<DistroName> 是发行版名称,如:

wsl --install -d Ubuntu-20.04

我的 Ubuntu-20.04 的默认安装目录是:

%LocalAppData%\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState

另外还有两个文件:

%LocalAppData%\Microsoft\WindowsApps\ubuntu2004.exe

%LocalAppData%\Microsoft\WindowsApps\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\ubuntu2004.exe

稍后会提示输入 系统用户和密码,然后 正常的话 就 登录 Ubuntu 系统了:

……
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 4.4.0-19041-Microsoft x86_64)

##列出已安装的 Linux 发行版:

wsl -l

wsl -l -v

初始安装的子系统,列出的是 “Ubuntu-20.04 (默认)” 我的为什么是 “Ubuntu_20 (默认)” 呢?
因为我把默认的子系统 (在 C 盘) 做好个性化配置后,导出系统,然后删除它,然后再导入 并重命名了,后面会讲的。

##运行默认的 Linux 发行版:

wsl

bash

 0.1 秒进入 Ubuntu !毫不拖泥带水!根本不要开机过程!丝滑得 不要不要的。

 ##直接进入 Linux 家目录:

wsl ~

##用 Win 命令行 执行 Linux 子系统内部命令:

wsl -- <命令>

如:

wsl -- ifconfig

wsl -- sudo apt update

wsl -- sudo apt upgrade

##运行指定的 Linux 发行版:

wsl -d <DistroName>

wsl -d <DistroName> -u <UserName>

如:

wsl -d Ubuntu-20.04

wsl -d Ubuntu-20.04 -u root

##设置默认 Linux 发行版:

wsl --set-default <DistroName>

##更新 Linux 发行版 内核版本:

wsl --update

##关闭所有正在运行的发行版:

wsl --shutdown

##关闭指定的发行版

wsl -t <DistroName>

如:

wsl -t Ubuntu-20.04

##检查 WSL 状态:

wsl --status

显示结果:

默认分发:Ubuntu-20.04

默认版本:2

请启用虚拟机平台 Windows 功能并确保在 BIOS 中启用虚拟化。

有关信息,请访问 https://aka.ms/wsl2-install

可以从 Linux Bash shell 中访问本地计算机的文件系统,例如,你的 C盘 装载在 /mnt/c 下。

cd /mnt/c

cd /mnt/d

##卸载本地磁盘:

sudo umount /mnt/e

##导出 WSL 映像

wsl --export <DistroName> <FileName>

如:

wsl --export Ubuntu-20.04 E:\WSL\WSL_Ubuntu_20.04_LTS.tar

导出、导入 功能,太赞了!配置好开发环境之后,导出一个包,随身带!比小姐姐的 LV 包包 还要香!我有包我怕谁?

##导入 WSL 映像

wsl --import <DistroName> <InstallLocation> <FileName>

<InstallLocation> 是安装路径,<FileName> 是之前导出的 xxx.tar 文件路径,如:

wsl --import Ubuntu_20 D:\WSL\Ubuntu_20 E:\WSL\WSL_Ubuntu_20.04_LTS.tar

意思是把之前 配置好的 Ubuntu 系统包,导入到 D:\WSL\Ubuntu_20 目录 下,记得先手动创建一下这个目录啊,不然导入会失败的。

我这里还建立了一个 启动脚本  start.bat 和 一个关机脚本 shutdown.bat,毕竟 懒嘛,点点鼠标总比输入命令快。

##卸载 WSL 分发版:

wsl --unregister <distroName>

如:

wsl --unregister Ubuntu-20.04

毕竟 我已经把 配置好的 Ubuntu 系统 导入到 D:\WSL 去了,C 盘中的那个 默认的子系统 占我心爱的空间,是时候卸载它了! ^_^   ^_^   ^_^

卸载后 可以删除默认的安装目录:

rmdir /s/q "%LocalAppData%\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc"

你的目录可不一定是上面这个啊,请自行研究,像这样的:

rmdir /s/q "%LocalAppData%\Packages\***Ubuntu***_***"

------------------------------------------------------------------------------------------------

##在 WSL Ubuntu 18.04 中设置 免密码 sudo:

sudo bash -c "echo '$USER ALL=(ALL) NOPASSWD: ALL' >/etc/sudoers.d/$USER"

##Win10 Linux WSL 子系统添加开机启动任务:

WSL 中不支持通过 rc.local 来实现开机启动,无法通过 systemctl 设置自启动服务。

解决方法是 通过添加 windows 开机启动项 来启动 WSL 子系统中的服务。

网上好多教程 都是互相抄袭,根本没有亲自验证,以讹传讹,太气人了,下面是 九阴真经:

1、进入目录:

%AppData%\Microsoft\Windows\Start Menu\Programs\Startup

2、新建文件:

wsl_start.bat

内容如下(可能需要把相关命令改为适合你的机器的命令):

wsl -- sudo service ssh start

wsl -- sudo service bt start

wsl -- sudo service nginx start

wsl -- sudo service redis start

wsl -- sudo service php-fpm-80 start

#......

如果不需要开机启动,就把它放到 D:\WSL\start.bat 文件里,发个快捷方式到桌面!

3、打完,收工!

------------------------------------------------------------------------------------------------

那么,怎样访问 子系统里面的服务呢?

太简单了。事实胜于雄辩,看看我的 就知道了。我在 Linux 子系统里安装了 宝塔面板,端口默认是 8888,也不用改了,直接在 Windows 浏览器里输入 127.0.0.1:8888/xxxxxx,就进入 BT 了,根本不需要做 端口映射,不需要设置网络、IP。就这么简单粗暴,这是登录后的样子: 

新建一个站点:

修改 Windows hosts:

  Windows 浏览器里输入  www.test.com 就能访问 站点了!

根本不需要做 端口映射,不需要设置网络、IP。就这么简单粗暴。

在  Linux 子系统里安装 Swoole,安装 Hyperf 框架,开发一个 WebSocket 服务,端口为 8180.

运行命令:

wsl
cd /mnt/e/www/swoole/hyperf
php bin/start.php start

 编写一个 WebSocket 客户端页面,连接上面的 WebSocket 服务:

看来,杠杠的啊 !!!

怎么编写程序呢?程序在 E:\www\swoole\hyperf 下啊!Linux 子系统 可以直接访问 Windows 系统下的磁盘文件,不需要做复杂的 挂载磁盘、共享映射 等等操作。

 

 至于怎么安装 PhpStorm,怎么绿化,怎么安装 Swoole,过程和画面太过真实,这里就不展示了,打下马赛克!

附件:

WSL_Ubuntu_20.04_LTS (纯净版 Ubuntu,做了一些优化设置)

WSL_Ubuntu_20.04_BT_Nginx (纯净版 Ubuntu,装了 BT 控制面板 和 Nginx)

提取码:wsl2

附件中的 子系统账号: 
SSH 连接:127.0.0.1:2222 [root 123] [abc 123]
BT控制面板地址 http://127.0.0.1:8888/6f8c3bfc
username:admin88 password:admin123

下期预告:

《在 WSL 中安装 Erlang 、RabbitMQ》

最后,希望 结识一些 Linux 高手、PHP 高手,前端高手,共同学习交流,开发个开源项目出来玩玩,顺便接一些外单,来安慰 (AV) 一下  ^_^

...

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐