Content:


windows有个功能叫Subsystem for Linux(简称WSL),可以实现在windows系统中直接安装Linux系统,包括:

  • 在Microsoft商店中选择喜欢的系统和版本
  • 可以使用像是grep, sed, awk, or other ELF-64 binaries的命令行工具
  • 可以运行Bash shell和Linux命令行程序:
  • 在你的GNU/Linux distribution package manager中可以安装其他软件
  • 使用Unix-like command-line shell可以唤醒windows应用
  • 在windows中可以唤醒GNU/Linux applications


WSL 1 和 WSL 2 区别

Feature WSL 1 WSL 2
Integration between Windows and Linux
Fast boot times
Small resource foot print
Runs with current versions of VMware and VirtualBox
Managed VM
Full Linux Kernel
Full system call compatibility
Performance across OS file systems

WSL2是windows可运行Linux内核的最新的虚拟化技术,而且兼容了绝大多数的WSL1用户体验。

  • 系统均可以运行在WSL1和WSL2的架构。
  • 系统均可以随时在WSL1和WSL2中升级或降级

从对比表可见,WSL2支持所有的Linux内核,可以使用最新的系统镜像。建议使用WSL2


要求

系统要求:

windows 10

安装要求:

分为简单安装和手动安装两种:

简单安装要求:

手动安装要求:


步骤

1. 简单安装:

只要符合上述要求,在命令行管理员模式下执行wsl.exe --install即可

默认安装Ubuntu系统。如果要安装其他系统,则执行

wsl --install -d <Distribution Name>

查看可安装的系统

wsl --list --online


2. 手动安装:

2.1 激活Windows Subsystem for Linux功能

在管理员模式的PowerShell,执行:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

2.2 升级至WSL2(可选)

建议升级

  1. 检查运行WSL2的要求

    • For x64 systems: Version 1903 or higher, with Build 18362 or higher.
    • For ARM64 systems: Version 2004 or higher, with Build 19041 or higher.
  2. 激活虚拟机功能

    在管理员模式的PowerShell,执行:

    dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
    

    完成后重启电脑

  3. 下载升级包并运行

    WSL2 Linux kernel update package for x64 machines

    如果是使用ARM64 machine, please download the ARM64 package instead.

    如果不确定系统类型,在PowerShell输入systeminfo | find "System Type"获取。

  4. 设置WSL2为默认版本

    在管理员模式的PowerShell,执行:

    wsl --set-default-version 2
    
    • 当安装新Linux系统时,就会使用默认版本

2.3 安装Linux系统

在Microsoft商店中搜索想安装的系统,并获取安装即可。

image-20210129173922515

2.4 安装Windows Terminal终端(可选)

功能:可以打开多个标签,可运行Linux命令行,Windows命令行,PowerShell, Azure CLI等等

同样,也是在Microsoft商店搜索安装。

image-20210129181636010


相关命令

检查WSL版本

wsl --list --verbose

设置系统的WSL版本

wsl --set-version <distribution name> <versionNumber>
  • 是系统名称
  • 是WSL版本,可选1或2

停止所有正在运行的Linux系统

wsl --shutdown


其他

1. 获取Linux系统的IP地址

在Linux系统命令行中输入以下命令,获取该系统运行在WSL上的IP:

$ ip addr | grep eth0

得到的结果可能是:

4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    inet 172.18.114.37/28 brd 172.18.114.47 scope global eth0

其中,172.18.114.37就是该Linux系统的动态IP

  • 该Linux系统与所运行的Windows组建了一个子局域网,原本windows所在局域网中的其他机器是无法直接通过该IP访问到Linux(除非在windows中设置规则:监听某个端口且该端口是绑定Linux系统的IP和端口,作为Linux和其他其他的媒介)
  • 动态IP,每次重新启动Linux系统都会变。

image-20210129174245668


2. Linux如何访问Windows磁盘中的文件

windows磁盘下的文件都被挂载到/mnt目录路径下。

如果想跳转至C盘

$ cd /mnt/c

如果想查看F盘下github目录下的test.py脚本

cat /mnt/f/github/test.py


3. Windows如何访问WSL中的文件

启动PowerShell,输入

$ wsl

然后输入以下命令跳至Linux目录中(其他目录都可以,只要在Linux系统中即可)

$ cd ~

最后输入

$ explorer.exe .

此时windows系统会弹出资源文件管理器


4. Windows如何连接WSL的docker容器——MySQL镜像

在WSL中,在docker启动MySQL实例时要映射端口,譬如

$ docker run -p 3307:3306 --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql

在windows下可以通过localhost:3307这个就能访问到容器的MySQL

image-20210131181805702

同理,其他容器只要暴露了端口,而该端口没有被其他windows程序占用,理论上就能访问。

  • 在宿主机windows访问时,要使用localhost的方式,不要直接使用WSL的IP。

参考文章

  1. windows关于WSL的文档
  2. 比较WSL1和WSL2
  3. 关于windows10安装WSL的安装指南

There are 0 comments