利用WSL2打造Arch全GUI环境
此文记录了本人利用微软wsl2搭建linux工作环境的过程,此过程理论上可用于 nullpo-head / wsl-distrod 上所支持的发行版。
1、先决条件
系统已开启hyper-v虚拟机
Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 。具体请参阅微软[官方手册](旧版 WSL 的手动安装步骤 | Microsoft Learn )。
ps: Windows 10好像仅限专业版
2、安装 WSL2 命令(以windows 10为例)
使用管理员权限打开 powershell 以启用“适用于 Linux 的 Windows 子系统”可选功能
1 | dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart |
启用虚拟机功能
1 | dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart |
之后重启设备以完成系统对wsl2的更新
在官网链接上下载wsl2内核更新包并安装(wsl和wsl2原理不同,所以需要下载内核,具体可自行查找资料)
wsl与wsl2差别的官网资料: 比较 WSL 版本 | Microsoft Learn
将wsl2设为默认运行版本
1 | wsl --set-default-version 2 |
自此,系统对wsl2的支持就已经完成,接下来便是安装发行版。
3、安装带有systemd的linux发行版(以debian为例)
刚好需要一个debian用以学习,写博客顺便搭了…..此步骤什么发行版都一样
打开以下链接下载你所需要的最新release后解压顺带找到 这里 以下载你所需要的发行版
找到 distrod_wsl_launcher.exe 并运行
运行后将出现以下界面
此时选择 [1] 则使用本地文件,选择 [2] 则使用指定连接以下载对应发行版,一般选 [2] 就行,笔者因为网络问题故选 [1] 以下示例为使用本地文件的操作
输入文件路径,摁shift加右键即可选择复制路径,之后删除引号
系统包选择rootfs,内核已经安装所以不需要的完整系统
此时系统wsl2发行版已安装,接着设置此发行版用户名及密码
为了保障开机自启你的wsl2虚拟机,还需要一点工作,在 虚拟机的bash 内输入(此步报错请尝试重启设备后重试)
1 | sudo /opt/distrod/bin/distrod enable --start-on-windows-boot |
接下来输入你的root密码后win10将会弹窗让你输入微软账户密码,照例输上,自此,你的wsl2 distrods with systemd就能开机自启了。
最后一步就是打开虚拟机的端口转发服务,以ssh服务端口22为例,你需要在虚拟机的bash输入(copy的注释我就留着了
1 | echo 22 | sudo tee /opt/distrod/conf/tcp4_ports # update the portproxy.service's configuration |
根据官网的信息,该服务在win11上会有问题,具体表现在该服务不会随着windows开机自启,并表示将来会修复
Updated at 2023-09-28
此时无图形界面的wsl2的发行版已经安装完毕,接下来安装软件和图形界面的步骤就自由发挥了,假设你不想安装完整的图形界面,wsl2自带wslg,能直接开启对应软件的图形服务,如果你想拥有一个完整的图形界面,请自行安装对应软件,一千个人就有一千个不同的图形界面,此步忽略。
4、以 DWM 为图形界面,部署vnc服务
假设到此,你的图形界面已经安装好了,是时候部署你的linux桌面了,理论上来说除了vnc还能用xdrp和xserver,但是xdrp过于卡顿,xserver因为笔者的图形界面原因不便使用,故选择vnc作为图形界面的中转。
安装vnc服务端
1 | sudo pacman -S tigervnc |
安装完成后为当前用户设置密码
1 | vncpasswd |
修改配置文件(此步尤为重要,当时排查了半天问题最后发现自己是傻逼)
首先确认自己的系统有什么桌面环境 ls /usr/share/xsessions
记录下输出结果,例如我的是(自行编辑则参考 Desktop entries )
1 | ➜ ~ ls /usr/share/xsessions |
之后修改本地用户配置文件,路径在 ~/.vnc/config
1 | ## Default settings for VNC servers started by the vncserver service |
这是默认配置,session请参考上一步的结果,我的图形界面为dwm则修改为
1 | ## Default settings for VNC servers started by the vncserver service |
接下来修改系统配置,路径在 /etc/tigervnc/vncserver-config-defaults
,系统配置会和本地用户配置一起读取,不进行配置将导致奇怪问题
1 | ## Default settings for VNC servers started by the vncserver service |
然后在同目录下检查 vncserver-config-mandatory
确保没有localhost参数
接着编辑同目录下 vncserver.users
将用户和端口进行绑定
1 | TigerVNC User assignment |
这个例子表示第八行表示5900+1端口绑定用户为alicemargandroid
最后编辑的文件是 /etc/X11/Xwrapper.config
,修改为
1 | allowed_users=anybody |
自此,vnc配置文件修改完成
接着启动服务即可愉快连接
1 | sudo systemctl enable vncserver@:1 |
直接使用loopback:5900+X连接
这时你就会发现即使正确配置了fcitx输入法也可能在某些场景无法唤出,这时就又要修改配置文件了
5、修改 ~/.xprofile
确保输入法正常运行
在 ~/.xprofile
中添加如下几行
1 | export INPUT_METHOD=fcitx5 |
自此,全gui环境配置完成
结语
这时你会发现俺声音服务呢,这个只需要配置个简单的声音转发,这个坑晚点填。
- 标题: 利用WSL2打造Arch全GUI环境
- 作者: 7cmb
- 创建于 : 2023-09-28 22:50:12
- 更新于 : 2024-10-12 23:07:35
- 链接: https://7cmb.com/使用wsl2打造arch全gui环境/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。