win11开启linux图形子系统wslg
在windows设置中打开【启用或关闭Windwos功能】,勾选【适用于Linux的Windwos子系统】,点击确定后会系统会提示重启,选择确认即可
启用WSL
若是你输入wsl --set-default-version 2
提示你请启用虚拟机平台 Windows 功能并确保在 BIOS 中启用虚拟化。
或者直接在power shell中执行
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart |
你还需要做两件事,第一个开启hyperv,第二个启用虚拟化
启用hyper-v
如果你是家庭版用户,可能找不到hyperv这个选项,可以使用以下方法突破hyperv
新建一个bat文件如下,使用管理员权限运行,可以在windows功能中找到hyperv
pushd "%~dp0" |
重启后在管理员powershell中执行一下命令
bcdedit /set hypervisorlaunchtype auto |
BIOS启用虚拟化
组策略管理
本地计算机策略 > 计算机配置 > 管理模板>系统 > Device Guard 打开 基于虚拟化的安全设置为“已开启”或者“未设置”
安装linux
在CMD中输入命令wsl --set-default-version 2,更改新分发的默认安装版本,wsl版本第一代和第二代区别详情可以官网查看,此处建议使用 2
安装过程若是提示WslRegisterDistribution failed with error: 0x800701bc
,则是老版本wsl需要更新到wsl2内核适用于
x64 计算机的 WSL2 Linux 内核更新包
wsl使用帮助
# 设置默认版本2: |
下载CentOS系统
这里使用是从github制作的 CentOS7 镜像,大小大约350M左右,点击直达,下载解压选择目录存放。也可以从Windwos商店直接安装其他发行版本(不建议直接在商店安装,因为无法选择安装位置,可以访这个地址,下载后改为zip解压后安装)
安装centos
在解压的文件夹中找到.exe文件,双击安装等待片刻会显示安装成功,同时当前文件夹生成一个【ext4.vhdx】的文件,该文件是centos的虚拟硬盘,但这里无法直接访问
同时在资源管理器右侧会多个【Linux】的目录,这个目录中存放的文件就是当前安装系统文件的根目录,Windows10没有这个快捷入口,可以在Win+R运行里输入\wsl.localhost访问目录
验证安装和使用
到这里基本已经安装完成了,在CMD中键入命令bash或者wsl即可进入子系统,使用cat /etc/redhat-release查看版本信息
启用图形化界面
修改源
一键配置镜像源,不配置可能下载会很慢。
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup |
安装xce4
yum install -y sudo |
启动桌面
startxfce4 |
原生wslg图形界面
现在,可在完全集成的桌面体验中预览适用于 Linux 的 Windows 子系统 (WSL) 对在 Windows 上运行 Linux GUI 应用程序(X11 和 Wayland)的支持。
WSL 2 使 Linux GUI 应用程序在 Windows 上使用起来原生且自然。
- 从 Windows 的“开始”菜单启动 Linux 应用
- 将 Linux 应用固定到 Windows 任务栏
- 使用 alt-tab 在 Linux 应用和 Windows 应用之间切换
- 跨 Windows 应用和 Linux 应用剪切并粘贴
直接在appstore里搜索ubuntu,点击下载安装,注意安装界面选择english
OpenGL支持
sudo apt-get install build-essential libgl1-mesa-dev libglu1-mesa-dev libsoil-dev libglm-dev libassimp-dev libglew-dev libglfw3-dev libxinerama-dev libxcursor-dev libxi-dev libfreetype6-dev x11-apps mesa-utils |
4k高分屏
如果使用的是4K高分屏,那么可以考虑安装 gnome-tweaks
第一步是打开命令行终端并确保我们在 Ubuntu 22.04 系统上启用了 Universe 存储库
备就绪后,执行以下命令在 Ubuntu 22.04 系统上安装 Tweak Tool
sudo add-apt-repository universe |
安装后运行 gnome-tweaks 命令,将Fonts的Scaling Factor提高,便可以在高分屏下显示大字体啦~
Windows和wsl相互访问
固定wsl的ip地址
首先关闭wslwsl --shutdown
利用HYPER-V创建虚拟交换机
设置默认不生成配置文件,执行 nano /etc/wsl.config
[network] |
置nameserver,执行nano /etc/resolv.conf
nameserver 192.168.3.1 |
设置WSL2使用的桥接网络,在C:目录下新建.wslconfig文件,编辑内容为:
[wsl2] |
然后重启,此时再去看WSL2的ip地址应该就是与你的宿主机同网络段的ip了,可以通过windows访问WSL2,也可以通过WSL2访问windows
windows访问wsl
在 Windows 使用 localhost 可以直接访问 WSL 2 中运行的网络应用
wsl访问windows
/etc/resolv.conf
中记录的wsl网卡地址,此地址即为windows地址,和windows共享端口
以在 WSL 2 (Ubuntu 18.04) 中使用 Windows 网络代理(此处为 socks5
代理)为例,向 ~/.bashrc
中写入以下内容:
export hostip=$(cat /etc/resolv.conf | grep -oP '(?<=nameserver\ ).*') |
在 bash 中运行 proxy 可设置 bash、apt 走代理,运行 unproxy 则关闭代理。
局域网其他机器访问wsl
要实现从局域网访问 WSL 2 网络,需要在 Windows 上配置 端口转发 和 防火墙允许入站规则。参考以下 PowerShell 命令(需以管理员权限执行):
# 查询 WSL 2 IP 地址 |
配置完后可在局域网用其他设备通过 Windows IP 访问 WSL 2 服务。
对应的删除配置命令:
netsh interface portproxy show v4tov4 |
将上诉命令封装成函数便于调用,向 PowerShell $PROFILE
配置文件写入函数:
# 在 PowerShell 中查看 $PROFILE 文件位置 |
写入以下内容:
function Add-WSLPortProxy ($Port = '8080', $Protocol = 'TCP') { |