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的防火墙接管了。
- WSL就是让win支持ELF可执行文件。直接让linux的程序在win下运行。
- WSL2
- WSL2和 hyper-v 一样。是个虚拟机。
win中的设备,WSL2中看不到。 - WSL2 使用的是单独分配的 IP,和虚拟机的 nat 模式一样,因为底层就是 hyper-v。外网访问Linux要用
netsh interface portproxy add ...
- WSL2中的客户机的IP每次启动都不同,老变。
- WSL2和 hyper-v 一样。是个虚拟机。
文件系统
- 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: 盘符。
- 在win中访问Linux文件夹。在资源管理器中输入
- 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
, nginxuwsgi_pass unix:///tmp/myuwsgi.sock;
很正常,没有问题。 - uwsgi
socket=127.0.0.1:8888
, nginxuwsgi_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防火墙的干扰),最终导致超时。
- uwsgi
参考:
windows 10 WSL 安装 Centos
win10 wsl和wsl2使用总结