JIKE
    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users

    windows的Lunix子系统 wsl 2全记录

    技术分享
    1
    1
    128
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      Mr.cao 🍌 last edited by

      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 partner

      apt-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全记录/

      1 Reply Last reply Reply Quote 0
      • 1 / 1
      • First post
        Last post