win10_linux子系统_WSL_WSL2_debian10

win10_linux子系统_WSL_WSL2_debian10

转载注明来源: 本文链接 来自osnosn的博客,写于 2020-07-23.

WSL(WSL1), WSL2 的网络

  • WSL
    • WSL就是让win支持ELF可执行文件。直接让linux的程序在win下运行。
      win中的设备(如usb,串口...),WSL中也都能看到。
    • WSL 中的linux,因为直接在win下运行,所见到的网络,和win中见到的一样。 iptables之类的不能用,被win的防火墙接管了。
  • WSL2
    • WSL2和 hyper-v 一样。是个虚拟机。
      win中的设备,WSL2中看不到。
    • WSL2 使用的是单独分配的 IP,和虚拟机的 nat 模式一样,因为底层就是 hyper-v。外网访问Linux要用netsh interface portproxy add ...
    • WSL2中的客户机的IP每次启动都不同,老变。

文件系统

  • WSL
    • 在win中访问Linux文件夹。在资源管理器中输入 \\wsl$ 即可读写。
    • Linux子系统的文件系统一般放在 C:\Users\..你的用户名..\AppData\Local\Packages\...DebianGNULinux_...\LocalState\rootfs
      但不能在win中写入rootfs, 会导致Linux访问错误。要用 \\wsl$ 的方式访问。
    • Linux访问win的文件系统,cd /mnt 就能见到 c d e 几个目录,对于win中的 c: d: e: 盘符。
  • WSL2 (没用过,具体不知道)
    • Linux文件系统放在一个hyper-v映像文件中。win中似乎不能直接访问,只能通过win-linux的网络访问。

WSL 中第一次启动网络服务

  • 比如 service ssh start 第一次启动时,win的桌面上,会跳出"Internet防火墙"的警告/设置。

WSL, linux中的服务

  • win系统重启后,WSL中的服务不会自己启动。
    如果要启动,要写脚本:
rem linux_start.vbs , 保存到win系统的"启动"目录. (win+R输入"shell:startup"回车)
rem 启动debian子系统的服务
Set ws = CreateObject("Wscript.Shell")
ws.run "wsl -d debian -u root /etc/rc.start.local", vbhide
#!/bin/bash
# file "/etc/rc.start.local"
/usr/sbin/service ssh   restart
/usr/sbin/service cron  restart
/usr/sbin/service nginx restart

WSL, uwsgi loop/socket

  • 以下 uwsgi 和 nginx 的两种配置
    • uwsgi socket=/tmp/myuwsgi.sock , nginx uwsgi_pass unix:///tmp/myuwsgi.sock;
      很正常,没有问题。
    • uwsgi socket=127.0.0.1:8888 , nginx uwsgi_pass 127.0.0.1:8888;
      网页访问非常慢,要等很久。nginx error.log中经常出现 upstream timed out (110: Connection timed out) while reading upstream, ... upstream: "uwsgi://127.0.0.1:8888",
      检查发现uwsgi返回页面数据后,tcp连接并没有断开(可能是受到win防火墙的干扰),最终导致超时。

参考:

windows 10 WSL 安装 Centos
win10 wsl和wsl2使用总结


转载注明来源: 本文链接 来自osnosn的博客.

猜你喜欢

转载自www.cnblogs.com/osnosn/p/13370207.html
今日推荐