1 Star 5 Fork 8

Open-SkyEye / wiki

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
text.md 4.83 KB
一键复制 编辑 原始数据 按行查看 历史

基于WSL2的SkyEye环境搭建

一、介绍

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下安装WSL2

(一)启用wsl

在win11的设置对话框中搜索 启用或关闭windows功能,进入后开启以下两个选项:

  • 适用于windows的linux子系统
  • 虚拟机平台

提示重启后,命令行输入更新wsl,并设置版本为2,安装wsl的Ubuntu:

wsl --update
wsl --set-default-version 2
wsl --install -d Ubuntu

安装完后,我碰到了一个坑,报了个错,网上搜了很多解决方法都搞不定。

错误代码: 0x87E10BC6

最后找到一个方法,要将Hyper-V主机计算服务启动,就不报错了,后面这个服务设置为手动启动都行。

(二)安装WSL里的docker

安装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的镜像更换为国内源后反而没有默认的源下载快。

(三)配置WSL的docker服务登录自启动

给当前用户添加权限, 使在使用 sudo命令的时候不需要输入密码:

sudo bash -c "echo '$USER ALL=(ALL) NOPASSWD: ALL' >/etc/sudoers.d/$USER"

在/etc/bash.bashrc文件中添加下面两行实现启动登录时自动开启docker:

service docker start

(四)配置WSL的X11图形界面

默认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

(五)WSL的两个技巧

  1. 解决WSL2中Vmmem内存占用过大问题
  • 按下Windows + R 键,输入 %UserProfile% 并运行进入用户文件夹。
  • 新建文件 .wslconfig ,然后记事本编辑。
  • 填入以下内容并保存, memory为系统内存上限,这里我限制最大2gb,可根据自身电脑配置设置。
[wsl2]
memory=2GB
swap=0
localhostForwarding=true
  1. 转移wsl2的虚拟机路径 默认wsl2的虚拟机是安装到c盘的,通过导出已安装的Ubuntu虚拟机,再删除注销,导入到指定目录即可实现将虚拟机路径更换到别的盘里。
wsl --export Ubuntu d:\ubuntu.tar
wsl --unregister Ubuntu
wsl --import Ubuntu F:/VMs/wsl-ubuntu  D:/ubuntu.tar
Ubuntu config --default-user <user>

三、SkyEye环境搭建

安装好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自身和里面的程序。

1
https://gitee.com/open-skyeye/wiki.git
git@gitee.com:open-skyeye/wiki.git
open-skyeye
wiki
wiki
master

搜索帮助