windows server 2022 安装及配置WSL

73 / 100 SEO Score

安装WSL

巨硬官方文档:https://learn.microsoft.com/en-us/windows/wsl/install-on-server

powershell下执行命令。

1、安装wsl

一条命令直接搞定,中间可能提示选择版本

wsl --install

列出所有可安装的版本

wsl -l -o

用wsl –install -d <发行版>选择安装的版本例如

wsl --install -d Ubuntu-22.04

若出现错误代码0x8000ffff

更新wsl

wsl --update

再开始安装

之后设置用户名及密码,安装成功,可能需要重启

2、查看wsl版本及运行状态

wsl --list --verbose
#可简写成
wsl -l -v

VERSION表示为wsl2版本。*号为当前的默认发行版

3、设置默认版本

wsl --set-default <发行版名称>
#例如:
wsl --set-default Ubuntu-22.04

之后默认版会变

4、启动另一个发行版

wsl -d <发行版名称>
#例如
wsl -d kali-linux

5、配置文件信息:

默认配置文件位置在C:\Users\用户名\.wslconfig此配置文件为全局配置。每个linux子系统的配置文件再/etc/wsl.conf

配置文件官方文档https://learn.microsoft.com/en-us/windows/wsl/wsl-config

6、安装文件路径

如果是桌面系统,应用商店安装的wsl,默认安装位置是C:\Users\<用户名>\AppData\Local\Packages\<发行版包名>\LocalState\

例如这样:
C:\Users\<你的用户名>\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu_79rhkp1fndgsc\LocalState\rootfs\

windows server 中使用命令行安装的wsl在这里

C:\Users\Administrator\AppData\Local\wsl\<发行版包名>\

里面会有vhdx虚拟硬盘文件。

基本wsl命令文档https://learn.microsoft.com/en-us/windows/wsl/basic-commands

注意!wsl默认轻量级运行,随用随开,关闭wsl的终端后也会关闭wsl服务。无法后台运行。但可通过其他设置解决此问题。

7、关闭wsl

wsl --terminate <实例名称>
#例如
wsl --terminate ubuntu

#shutdown命令是关闭所有linux子系统
wsl --shutdown

8、嵌套虚拟化

wsl本身依靠Hyper-v的虚拟化支持,如果想在Hyper-v的虚拟机中安装wsl需要启动嵌套虚拟化。属于不太正经的方案。


卸载和删除wsl

删除wsl中已安装的某个linux只需要执行wsl --unregister <名称>即可

wsl --unregister <名称>
#例如
wsl --unregister Ubuntu-24.04

卸载wsl本身也只需一条命令

#这个命令会移除 WSL 核心组件 和 虚拟机平台依赖
wsl --uninstall

配置WSL网络

wsl提供了一个可视化的设置界面,此界修改设置后,会同步修改wsl的配置文件(.wslconfig),所以重点还是配置文件。

网络模式有五种

  • None 没有网络连接。wsl无法连接任何网络
  • Net Net模式,也是默认的模式。wsl有独立的IP地址,使用windows宿主机进行网络地址转换,外网无法直接访问WSL。
  • Mirrored 镜像模式,和宿主机共享相同的网络设置。(windows server不支持此模式)
  • VirtioProxy 代理模式,通过 virtio 通道 + Windows Proxy 来转发网络流量,wsl同样共享宿主机的IP。
  • bridged 桥接模式,图形化设置界面中没有这个模式,需要手动修改配置文件。需要Hyper-v配合使用。

修改设置后需重启wsl服务。

wsl --shutdown
#之后重新打开wsl即可   

配置网络的目的主要有三个

  • 一、让WSL中的linux系统能上网
  • 二、让windows系统宿主机能访问WSL
  • 三、让外网能直接访问WSL

Net模式,能实现一和二,无法直接实现三。需要在windows宿主机中配置端口转发或用IIS、Nginx配置反向代理。过于不方便。

Mirrored模式,当前的windows server 2022 21H2、windows server 2025 24H2均不支持此模式。在此不做讨论。

VirtioProxy模式可以实现一和二,但三依然有问题。仍然需要手动配置端口转发之类的操作。

bridged可同时实现一、二、三,且WSL有着自己的独立IP。

当年更新此功能时的文档https://github.com/microsoft/WSL/releases/tag/2.0.0

打开Hyper-v管理器——虚拟交换机管理器

名称可以随便起名,英文名字。此处命名为netowrk,选择外部网络,下拉箭头中选择你电脑的网卡。勾选“允许管理操作系统共享此网络适配器”。之后点确定。

注意,此操作会使网络断开。

打开wsl配置文件C:\Users\Administrator\.wslconfig添加以下内容并保存。

[wsl2]
networkingMode=bridged
vmSwitch=netowrk  # 之前设置的虚拟交换机
ipv6=true  #启动IPv6

之后重启wsl wsl --shutdown

重启之后,wsl的窗口设置界面网络模式中多了个Bridged。

同时wsl中的linux获得了独立的IP地址。成为了传统意义上的虚拟机。

之后需要修改ubuntu的网络配置即可。参阅Netplan网络配置介绍。至少Ubuntu 24.04.2 LTS支持Netplan和systemd-networkd。

但是wsl重启后,Ubuntu 24.04.2会多出一个IPv4地址。这是因为WSL2 的网络接口eth0由 Windows Hyper-V 桥接或 NAT 管理,ubuntu系统中的网络管理无法覆盖宿主机的设置。

但只要再运行下sudo netplan apply命令,那条多余的IPv4地址就会消失。

采用systemd服务,设置开机执行netplan apply命令。

#创建netplan-apply.service文件
vi /etc/systemd/system/netplan-apply.service
#添加以下命令
[Unit]
Description=Apply Netplan automatically at boot
After=network.target
Wants=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/sbin/netplan apply
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target
#保存退出
#启动服务
sudo systemctl daemon-reload
sudo systemctl enable netplan-apply.service
sudo systemctl start netplan-apply.service
#这样子每次启动后那条多余的IP地址就会消失。


#若想删除这个服务需要以下操作
#停止服务
sudo systemctl stop netplan-apply.service
#禁用开机启动项
sudo systemctl disable netplan-apply.service
#删除服务文件
sudo rm /etc/systemd/system/netplan-apply.service
重载systemd
sudo systemctl daemon-reload
sudo systemctl reset-failed

WSL文件共享

windows访问WSL文件。

windows server打开资源管理器,或者直接在资源管理器右侧选择linux。注意,windows访问wsl时是以默认用户的权限进行访问。默认情况下没有root权限。

\\wsl$

WSL访问windows文件

WSL中打开mnt目录,其中c、d均为windows系统中的盘符。

cd /mnt

WSL开机启动

首先保证wsl是最新版,老版本不支持此功能。

通过windows计划任务实现wsl开机启动。

通过任务计划启动的wsl也具备后台运行的功能,也就是说当关闭wsl的终端界面后,wsl不会退出。

如果想退出wsl需要powershell中运行wsl --shutdownwsl --terminate <实例名称> 但退出后再启动的wsl便没有后台常驻功能了。

打开任务计划程序,创建新任务,名称可以随便起(此处起名为wsl)。勾选“不管用户是否登录都要运行”

触发器选项卡,新建,开始任务下拉菜单中选择启动时。之后确定。

操作选项卡,新建,操作下拉菜单中选择启动程序。程序或脚本中输入"C:\Program Files\WSL\wsl.exe",之后确定。

如果想要指定启动版本,只需要在添加参数中写上即可。例如:-d Debian。但这样会导致默认发行版和指定的版本同时启动。

条件选项卡中所有选项取消勾选

设置选项卡中勾选“允许按需执行任务”其余的全部取消勾选。

设置完成后点击确定。会要求你输入密码。之后可以重启计算机,测试wsl是否运行。


WSL后台运行

最简单的方法,打开wsl的终端,不要关闭,最小化即可。

另一种方法是找一个后台常驻的轻量级进程再wsl中运行,以达到后台运行的目的。例如dbus命令

#最简单的方法,使用如下命令启动wsl即可保证后台运行。
wsl --exec dbus-launch true
#搭配-d可以指定发行版,但前提是发行版中必须支持dbus命令,否则会报错
wsl -d kali-linux --exec dbus-launch true

#错误信息
PS C:\Users\Administrator> wsl -d kali-linux --exec dbus-launch true
<3>WSL (253 - Relay) ERROR: CreateProcessCommon:735: execvpe(dbus-launch) failed: No such file or directory
#解决方法很简单,在linux子系统中安装dbus-x11即可。
sudo apt update
sudo apt install dbus-x11

使用nohup、screen 或 tmux同理

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇