windows的Lunix子系统 wsl 2全记录
-
windows的Lunix子系统wsl 1与wsl 2的区别
WSL1 和 WSL2 都可以实现在 windows 中带来 linux 操作体验;
启动速度都不慢;
内存消耗都比较小;
WSL 1 没有使用的 VM,WSL 2 使用了一个自动维护的 VM;
WSL 1 不支持,WSL2 支持可以运行例如 Docker 等程序;
WSL 2 支持完整的 linux 内核调用,而 WSL 1 不行;
由于 WSL 2 使用了 Hyper-V,由于兼容性原不用同时运行 WSL 2 与 VMWare或VirtualBox,WSL 1 不存在此问题;
WSL 2 不能与 windows 跨操作系统文件操作(Windows 访问 WSL2 的方法为进行 WSL2 环境键入 “cd ~” 进入主目录后,再键入"explorer.exe ."可在windows 文件管理器中访问 WSL 2 文件,此外还可以通过虚拟机的方法互通文件,如网络,文件共享等),而 WSL 1 则与 windows 在同一文件系统中。
说白了,如果是需要一个像购买了的独立的服务器的话 wsl 2 更为接近
是这个这个服务器跑在你的windows里,首先我们需要安装WSL并且切换为2
windows里需要开启几个功能
这3项目是必须的,没有的话就不适用本教程了
重启windows
下载更新适用于 x64 计算机的 WSL2 Linux 内核更新包
传送门:https://docs.microsoft.com/zh-cn/windows/wsl/wsl2-kernel,下载 wsl_update_x64.msi 程序并安装
(https://www.aliyundrive.com/s/zHTPQNR8oPd 提取码: 06fp)
使用管理员权限打开CMD,输入下面命令切换为WSL2
wsl --set-default-version 2
下面是将 Ubuntu20.04 安装在任何盘的任何位置,如果你想安装在D盘的一个文件夹,那就再D盘新建如D:\Linux
然后下载镜像https://learn.microsoft.com/zh-cn/windows/wsl/install-manual#downloading-distributions
(https://www.123pan.com/s/fZxlVv-BZ9Uv提取码:kL8E)
放在D:\Linux解压安装
最后可以在CMD里面 , 验证安装的版本
wsl -l -v
设置root密码,WSL2换源
sudo -i
passwd这里贴一个国外源,如果有要用国内源的可以自行查找一下,WSL2下
vim /etc/apt/sources.list
deb http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ focal main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
deb http://archive.canonical.com/ubuntu focal partnerapt-get update
apt-get update局域网内SSH连接电脑上的 wsl2 ubuntu
这里就到了核心内容了,其他的内容都可以在网上找到很多,局域网连接这里就涉及到了内网网段,网关,防火墙等设置,还有很多不同的实现方式,我这里教一个最简单的,可以固定IP,并且可以简单实现的方法
首先我们需要关闭宿主机的防火墙,或者你有能力可以根据自己的情况写具体的规则,我这里选择直接关闭
WIN+R
wf.msc
操作-属性
域配置文件,专用配置文件,公用配置文件三个防火墙状态都改为“关闭”,应用-确定
重装ssh,WSL2下
apt-get remove openssh-server
apt-get install openssh-server编辑sshd_config文件,WSL2下
vim /etc/ssh/sshd_config
Port 2222
PermitRootLogin yes
PasswordAuthentication yes编辑/etc/hosts.allow,加一行,WSL2下
vim /etc/hosts.allow
重启ssh服务,WSL2下
service ssh --full-restart
端口转发,把ssh请求从宿主机转发到WSL2,CMD下
netsh interface portproxy add v4tov4 listenport=2222 listenaddress=0.0.0.0 connectport=2222 connectaddress=192.168.51.2
验证,CMD下
netsh interface portproxy show all
WSL2关机,如果提示无法完成这里建议直接重启windows,CMD下
net stop LxssManager
固定WSL2的IP,WSL2未启动的情况下,将下面代码保存在txt里,然后改为.bat使用管理员身份运行,CMD下
wsl -d Ubuntu -u root ip addr del $(ip addr show eth0 ^| grep 'inet\b' ^| awk '{print $2}' ^| head -n 1) dev eth0
wsl -d Ubuntu -u root ip addr add 192.168.51.2/24 broadcast 192.168.51.255 dev eth0
wsl -d Ubuntu -u root ip route add 0.0.0.0/0 via 192.168.51.1 dev eth0
wsl -d Ubuntu -u root echo nameserver 192.168.51.1 ^> /etc/resolv.conf
powershell -c "Get-NetAdapter 'vEthernet (WSL)' | Get-NetIPAddress | Remove-NetIPAddress -Confirm:$False; New-NetIPAddress -IPAddress 192.168.51.1 -PrefixLength 24 -InterfaceAlias 'vEthernet (WSL)'; Get-NetNat | ? Name -Eq WSLNat | Remove-NetNat -Confirm:$False; New-NetNat -Name WSLNat -InternalIPInterfaceAddressPrefix 192.168.51.0/24;"验证,CMD下
ipconfig
宿主机CMD连接验证
ssh root@192.168.51.2 -p 2222
如果这里都没问题的话,那就可以过局域网的其他设备来连接试试看了
因为我宿主机在局域网里是192.168.50.109,可以看到已经连接成功了
现在在WSL2上跑什么服务的话,只要在宿主机上设置转发端口即可
有兴趣的小伙伴赶快试试把
原帖地址
https://cbrblog.eu.org/2023/01/18/windows的lunix子系统-wsl-2全记录/