前面我们提到过如何用linux运用windows程序,那么windows下运行linux程序是否可行呢?答案时肯定的,不但可行而且方法多样,比如说:cywin、docker、虚拟机(VM,V-box等),另外也可以用编译器编译适配的windows程序。这些方法要么是借助容器技术或者虚拟机技术实现,要么是修改版的程序,可能会有些许的bug。从windows 10开始(Windows 10 版本 2004 及更高版本),微软添加了Windows Subsystem for Linux(简称WSL)是一个在Windows 10上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层,可以让你按原样运行 GNU/Linux 环境 – 包括大多数命令行工具、实用工具和应用程序 – 且不会产生传统虚拟机或双启动设置开销。

我们可以:

  • 运行常用的命令行软件工具(例如 grep、sed、awk)或其他 ELF-64 二进制文件。
  • 运行 Bash shell 脚本和 GNU/Linux 命令行应用程序,包括:
    • 工具:vim、emacs、tmux
    • 语言:NodeJS、Javascript、Python、Ruby、C/C++、C# 与 F#、Rust、Go 等
    • 服务:SSHD、MySQL、Apache、lighttpd、MongoDB、PostgreSQL。
  • 使用自己的 GNU/Linux 分发包管理器安装其他软件。
  • 使用类似于 Unix 的命令行 shell 调用 Windows 应用程序。
  • 在 Windows 上调用 GNU/Linux 应用程序。

1)安装

可以在管理员 PowerShell 或 Windows 命令提示符中输入此命令,然后重启计算机来安装运行适用于 Linux 的 Windows 子系统 (WSL) 所需的全部内容

# 此命令将启用所需的可选组件,下载最新的 Linux 内核,将 WSL 2 设置为默认值,并安装 Linux 发行版(默认安装 Ubuntu)
wsl --install

如果你需要安装其他版本的linux,可以使用

# 或者wsl -l -o
wsl --list --online

然后用过如下命令安装你所需的linux

wsl --install -d <DistroName>

然后我们直接输入wsl即可进入子系统,后续的所有操作和linux下操作一样。更多可以参考:https://docs.microsoft.com/zh-cn/windows/wsl/

2)挂载磁盘

目前支持只能将整个磁盘附加到 WSL 2,wsl --mount 只能装载内核中原生支持的文件系统。

# 挂载
mount -f drvfs F: /mnt/f
# 卸载
umount /mnt/f

如此我们也可以调用各种linux下的小工具了。

参考资料:

1.https://docs.microsoft.com/zh-cn/windows/wsl/setup/environment

2.https://www.linux.com/training-tutorials/how-use-wsl-linux-pro/