一. Windows中WSL2(子系统)安装前提条件
- 版本:win10专业版
- 对于 x64 系统:版本 1903 或更高版本,采用 内部版本 18362 或更高版本。
- 低于 18362 的版本不支持 WSL 2。 使用 Windows Update 助手更新 Windows 版本。
二. Windows中WSL2(子系统)安装步骤(默认安装C盘)
- 以管理员权限运行 powershell
- 启用Windows10子系统功能,再打开的powershell窗口中输入如下命令:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
- 启用虚拟机平台功能,再打开的powershell窗口中输入如下命令:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
- 重启电脑
- - 下载 Linux 内核更新包(适用于 x64 计算机的 WSL2 Linux 内核更新包)
** - 将 WSL 2 设置为默认版本,再打开的powershell窗口中输入如下命令:**
wsl --set-default-version 2
- 打开应用商店安装子系统 (在应用商店搜索 ubuntu)
-- 无法下载则开启代理重新下载
或者自己搜索下载
选择包安装模式(选择到其他盘安装)
**下载地址:**旧版 WSL 的手动安装步骤 | Microsoft Learn
解压目录后找到Ubuntu_2004.2021.825.0_x64.appx
安装
启动子系统并等待安装
配置用户名和密码
切记配置用户名记得使用阿里云git的用户名 要不然权限问题很难解决 手动配置的用户没办法给到权限 可能是wsl的坑吧, 重装中
三. Windows中WSL2(子系统)设置默认root用户登入
进入
C:\Users\xxxx\AppData\Local\Microsoft\WindowsApps\CanonicalGroupLimited.Ubuntu20.04LTS_79rhkp1fndgsc目录下,找到ubuntu2204.exe程序,
ubuntu2204.exe config --default-user root
重启WSL子系统即可看到效果,默认登入的就是root账户了
命令行启动
# 命令行重启。(超级管理员打开cmd)
sc stop LxssManager sc start LxssManager
服务窗口启动
win+r 输入services.msc。找到LxssManger重新启动即可。
四. Windows中WSL2(子系统)无法访问网络的解决办法
打开PowerShell窗口,编辑/etc/wsl.conf文件,添加如下内容
[network] generateResolvConf = false
PowerShell重启WSL
wsl.exe --shutdown
打开PowerShell窗口,编辑/etc/resolv.conf文件,添加如下内容
如果还有问题
要编辑网络DNS配置文件
sudo vim /etc/resolv.conf
如果报错"/etc/resolv.conf" E166: Can’t open linked file for writing,删除文件重写
sudo rm /etc/resolv.conf sudo echo "" > /etc/resolv.conf sudo vim /etc/resolv.conf
然后重启网络
sudo /etc/init.d/networking restart sudo apt-get update sudo apt-get upgrade
五. Windows中的WSL2(子系统)开机启动配置
在子系统中创建脚本
打开PowerShell窗口,编辑/etc/init.wsl
sudo vim /etc/init.wsl
添加如下内容
#! /bin/sh /etc/init.d/ssh start /etc/init.d/mysql start /etc/init.d/php-fpm start /etc/init.d/nginx start
授权
sudo chmod +x /etc/init.wsl
在Windows中创建脚本
按【WIN+R 】打开运行窗口,输入【shell:startup】
打开Windows 启动脚本目录,在该目录下新建 linux-start.vbs,添加如下内容(wsl -d后面的参数是你所安装的子系统的版本 ,可通过wsl -l查看)
Set ws = WScript.CreateObject("WScript.Shell") ws.run "wsl -d Ubuntu-20.04 -u root /etc/init.wsl"
重启Windows即可
六. Windows中WSL2(子系统)安装ssh
卸载同时清除openssh-server软件包和软件的配置文件,(没有安装就不用卸载重装,直接安装)
下载并安装openssh-server服务
sudo apt-get install openssh-server
编辑/etc/ssh/sshd_config配置文件,并修改如下内容
sudo vim /etc/ssh/sshd_config #需要修改的地方 Port 22 #默认即可,如果有端口占用可以自己修改 PubkeyAuthentication yes #默认是Public Key登录,我这里注释掉改为用户名密码登录 PasswordAuthentication yes #允许用户名密码方式登录
启动ssh-server
sudo service ssh start
查看ssh服务状态,是否启动成功
sudo service ssh status
七. window和WSL2(子系统)如何互传文件
将window系统下的D:software/mongodb-linux-x86_64-rhel70-4.4.13.tgz上传到WSL2(子系统)的/usr/local目录下
在WSL2(子系统)中执行如下命令,即可
cp /mnt/d/software/nmongodb-linux-x86_64-rhel70-4.4.13.tgz /usr/local
八.注销和设置默认子系统
PS C:\Users\rd02\Desktop> wslconfig /u Ubuntu-22.04
正在注销。
操作成功完成。
PS C:\Users\rd02\Desktop> wslconfig /l
适用于 Linux 的 Windows 子系统分发:
Distrod (默认)
Ubuntu
#设置默认账户
PS C:\Users\rd02\Desktop> wslconfig /setdefault Ubuntu
操作成功完成。
PS C:\Users\rd02\Desktop> wslconfig /l
适用于 Linux 的 Windows 子系统分发:
Ubuntu (默认)
Distrod
九. 配置代理
终端代理
可以通过以下命令看下终端是否已经代理:
curl cip.cc
会显示当前自己IP挂到哪里;
- 方法一(recommend)改~/.zshrc或 ~/.bashrc
# 打开~/.zshrc
sudo vim ~/.zshrc
在最下面添加:
alias sethttpsproxy="export https_proxy=http://192.168.2.198:7890"
alias unsethttpsproxy="unset https_proxy"
alias sethttproxy="export http_proxy=http://192.168.2.198:7890"
alias unsethttproxy="unset http_proxy"
保存关闭后
source ~/.zshrc
当需要http走代理时,
sethttproxy
当需要关闭http代理时,
unsethttproxy
参考文档:
在 Windows Server 上安装 Linux 子系统 | Microsoft Learn
版权归原作者 可以吧可以吧 所有, 如有侵权,请联系我们删除。