Windows Subsystem for Linux(WSL)适用于Linux的Windows子系统,是微软在Windows10上提供的一项供用户快速运行Linux命令和工具的功能。简单来说,以前想在windows中使⽤linux,需要安装vmware虚拟机,现在则不⽐这么⿇烦了,直接安装linux⼦系统,秒开。
WSL: 并不是一个真正的 Linux 操作系统,仅仅是 Linux 应用程序与 Windows 操作系统之间的一个适配层。在这个适配层之上,可以运行 Linux 应用程序,有点类似于以前的 cygwin 的方式。
WSL2:它就是一个虚拟机,类似于 Vitual Box,在这个虚拟机之上,运行一个完整的 Linux 操作系统。相对于 Virtual Box、VMWare 来说,WSL2提供更全面的兼容性、与Windows 系统的互操作性更好、运行速度更快、占用系统资源更少。
zevon的社区例会视频中演示了如何使用wsl进行skyeye的开发,但没有讲如何搭建这个环境,我折腾了几天搭建好了wsl2的开发环境,给大家分享一下具体的步骤和遇到的问题。
在win11的设置对话框中搜索 启用或关闭windows功能,进入后开启以下两个选项:
提示重启后,命令行输入更新wsl,并设置版本为2,安装wsl的Ubuntu:
wsl --update
wsl --set-default-version 2
wsl --install -d Ubuntu
安装完后,我碰到了一个坑,报了个错,网上搜了很多解决方法都搞不定。
错误代码: 0x87E10BC6
最后找到一个方法,要将Hyper-V主机计算服务启动,就不报错了,后面这个服务设置为手动启动都行。
安装docker没有特别注意,按网上搜到的步骤安装即可:
sudo apt install daemonize
sudo apt-get update && sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update && sudo apt-get install containerd.io docker-ce docker-ce-cli -y
建议不更换为国内源,skyeye的镜像更换为国内源后反而没有默认的源下载快。
给当前用户添加权限, 使在使用 sudo命令的时候不需要输入密码:
sudo bash -c "echo '$USER ALL=(ALL) NOPASSWD: ALL' >/etc/sudoers.d/$USER"
在/etc/bash.bashrc文件中添加下面两行实现启动登录时自动开启docker:
service docker start
默认WSL是不支持X11图形显示的,需要通过配置windows上的X11Server显示WSL的图形界面,网上使用最多的是VcXsrv X Server, 折腾出来后发现windows11已经提供了个wslg,官方的内建xserver,更新即可使用。
wsl --update
sudo apt-get install x11-xserver-utils && xhost +
可以安装一些xapp试试效果, 以下命令会在windows下启动一个x11的时钟界面。
sudo apt install x11-apps
xclock
[wsl2]
memory=2GB
swap=0
localhostForwarding=true
wsl --export Ubuntu d:\ubuntu.tar
wsl --unregister Ubuntu
wsl --import Ubuntu F:/VMs/wsl-ubuntu D:/ubuntu.tar
Ubuntu config --default-user <user>
安装好wsl环境后,就可以按照快速开始里的方法启动skyeye环境了,这里修改了下启动docker镜像的参数,加了自动启动和PATH环境变量,能够不用输路径启动skyeye_ui。
sudo docker run -it \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v /home/wangsh/skyeye-workspace/:/home/skyeye-workspace \
--restart=always \
-e DISPLAY=$DISPLAY \
-e GDK_SCALE \
-e GDK_DPI_SCALE \
-e PATH="/home/skyeye-workspace/opt/skyeye/bin:$PATH" \
--name skyeye skyeyehub/dev:v1 /bin/bash
设置启动时自动进入docker容器
sudo vi /etc/bash.bashrc
在最后输入
sudo docker exec -it skyeye /bin/bash
其实wsl2安装并没有太复杂,可能我遇到了些稀奇古怪的问题,主要就是2个,wsl的ubuntu启动报错,以及xhost + 命令报错。 后面准备学习下怎么用gdb去调试skyeye自身和里面的程序。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。