【基于Ubuntu20.04的Autoware.universe安装过程】方案二:双系统 | 详细记录 | 全过程图文 by.Akaxi
Akaxi-1 2024-08-13 11:37:01 阅读 85
目录
一、Autoware.universe背景
Part-1:安装双系统教程
二、查看Windows引导方式
三、制作安装盘
四、设置电脑配置
1.关闭bitlocker
2.压缩硬盘分区
3.关闭Secure Boot
4.关闭intel RST
5.BIOS设置U盘引导
五、安装Ubuntu20.04
1.ventoy引导
2.安装配置
3.安装类型
4.完成安装
Part-2:在Ubuntu20.04上安装Autoware.universe
六、安装ROS2 Galactic
七、安装ros2_dev_tools
八、安装rmw_implementation
1.下载Qv2ray
2.安装Git
3.克隆Autoware到本地
4.自动安装相关依赖
5.安装rmw_implementation
九、安装pacmod
十、安装autoware_core
十一、安装autoware universe dependencies
1.指令安装(慢且不推荐)
2.官网下载安装(快且推荐)
十二、安装pre_commit
十三、安装CUDA
1.指令安装CUDA
2.问题解决
十四、安装cuDNN and TensorRT
十五、下载Universe代码
十六、安装 Autoware ROS依赖包
1.失败案例
2.成功案例
问题1
问题2
十七、编译空间
1.colcon编译的时老是卡死
2.trtexec_vendor包错误
一、Autoware.universe背景
Autoware是一个基于ROS(机器人操作系统)开发的,开源的自动驾驶软件栈。它可以用于为各种各样的车辆,如汽车和卡车等,开发和部署先进辅助驾驶系统(ADAS)
Autoware版本:
Ai:基于ROS1
Auto:基于ROS2
Universe:商用/二次开发
官方文档:https://autowarefoundation.github.io/autoware.universe/main/
Part-1:安装双系统教程
参考视频链接:
https://www.bilibili.com/video/BV1Cc41127B9/?p=2&spm_id_from=pageDriver&vd_source=ce97c013e2f83de15ffb12fba99c812d
最终效果:
可参考我这篇博客:【Windows11通过移动硬盘安装Ubuntu20.04双系统】保姆级教程 | ventoy | BIOS | Ubuntu20.04 | 全过程图文by.Akaxi_ventoy ubuntu-CSDN博客
二、查看Windows引导方式
首先需要查看电脑的BIOS模式,在搜索栏输入“系统信息”
BIOS是计算机系统中的基本固件程序,负责初始化硬件设备、引导操作系统以及提供一些基本的配置选项。
在系统信息可以看到BIOS模式是“UEFI”,那么可以进行进行接下来的步骤,如果显示是“传统”,则需要另行操作,具体参考视频:Windows 和 Ubuntu 双系统的安装和卸载_哔哩哔哩_bilibili
然后将移动硬盘插入笔记本电脑
同样搜索“磁盘管理”
可以看到插入的移动硬盘大小931.48个G
然后右键点击移动硬盘,点击属性
点击“卷”,看看自己的移动硬盘的磁盘分区格式是不是GPT,如果是MBR需要转换成GPT。
三、制作安装盘
SourceURL:file:///home/akaxi-autoware/桌面/【Dora项目】记录-1.30.docx
我们需要一个U盘作为安装盘,在安装盘内提前下载Ubuntu20.04的镜像文件,这样电脑在启动后BIOS会利用U盘作为引导,进行Ubuntu的安装。
首先下载Ubuntu20.04,在华为云网站下载镜像文件
http://repo.huaweicloud.com/ubuntu-releases/
选择这个Ubuntu20.04版本
选择此桌面版,点击下载到Windows系统下
然后需要下载制作启动盘U盘的软件:ventoy
在Gitee上找到此软件,点击下载到Windows系统下
【ventoy】Ventoy 发行版 - Gitee.com
选择ventoy-1.0.96-windows.zip压缩包下载
解压后,点击ventoy
这里需要将U盘插入笔记本电脑
点击打开
需要选择制作的盘,这里选择U盘,然后安装包内的Ventoy版本如果是MBR,需要修改成GPT
点击左上角“配置选项”-“分区类型”-“GPT”
随后点击安装
Kuku安装~
成功!可以看到U盘名字变成了“Ventoy”完成启动盘制作~
然后将之前下载的Ubuntu20.04镜像文件拷贝到U盘中,至此安装盘制作完成!!!
四、设置电脑配置
1.关闭bitlocker
搜索“设备加密”
点击关闭设备加密
这里解密时间取决于之前硬盘加密大小
这里需要大概30mim,嘎嘎开始解密,不解密的话,如果你多次安装失败,会触发蓝屏琐数据,到时候会很麻烦,这里直接关掉,不会对电脑造成任何影响,反而方便我们之后的操作。
显示关闭就完成啦
2.压缩硬盘分区
将移动硬盘插入笔记本电脑
搜索磁盘管理
右击硬盘大小,点击压缩卷
这里输入200 X 1024 = 204800 M【200个G大小】
这样就压缩好啦~
3.关闭Secure Boot
插入U盘和移动硬盘,两个都插上喔,接下来的设置的安装都别拔下来啦,省心。
重启电脑,疯狂按F2键或者Fn+F2键进入笔记本的BIOS设置界面【进入方式取决于电脑型号】
然后关闭Secure Boot
4.关闭intel RST
然后在Configuration找到SATA Controller Mode,改为AHCI
5.BIOS设置U盘引导
在Boot里找到EFI启动项,把USB的U盘作为BIOS的第一引导,就需要将其设置到第一位置,于是这里选择U盘按F6,Move item up list。
可以看到现在U盘作为BIOS的第一引导了,完成啦~~~然后保存退出,电脑即将重启,马上进入Ubuntu20.04的安装!!!!
按F10保存且退出,Yes确认!!!
五、安装Ubuntu20.04
1.ventoy引导
电脑重启后,进入U盘引导,可以看到是我们之前将U盘设置的ventoy,里面装有Ubuntu20.04的iso镜像文件,回车继续
回车选择此iso镜像
选择Boot in normal mode,回车
然后系统就检查镜像完整性,即将进入安装啦~
2.安装配置
选择系统语言为中文(简体)
点击安装Ubuntu
选择键盘布局为Chinese选择Chinese,点击继续~
选择无线网络:现在咱先不连接无线网络,继续
更新和其他软件,选择“正常安装”然后选择“为图形或无线硬件,以及其他媒体格式安装第三方软件”,点击继续
安装类型我们一定要选择“其他选项”,这样才能给移动硬盘安装上Ubuntu20.04哦~
3.安装类型
找到我们之前在Windows下给移动硬盘压缩的分区,这里根据“设备”是空闲,“大小”是之前设置的200G大小左右,找到它,点击~
可以看到设备是“空闲”,大小“214749MB”差不多是200G,就它啦!!!然后将它挂在到根目录上~
点击它,创建分区,分区类型是“主分区”,分区位置是“空间起始位置”,挂载点是“/”【/是根目录】,点击完成~
然后再找到设备类型是“efi”,已安装文件是“Windows Boot Manager”的分区,选择它为Windows Boot Manager就可以啦~
将改动写入磁盘,继续
4.完成安装
选择时间为shanghai
点击继续
然后设置用户名字,我就叫“akaxi-autoware”,计算机的名字叫“akaxi-PC”,密码一定要记住啦,之后终端运行程序经常会输入密码哟~
嘎嘎安装~大概15min
安装完成,重启电脑噜!!!
笔记本重启啦,成功进入Ubuntu系统啦,这里拔掉U盘,然后回车进入系统
输入密码后进入Ubuntu系统成功啦~~~通过移动硬盘安装Ubuntu20.04成功~撒花!!!
Part-2:在Ubuntu20.04上安装Autoware.universe
六、安装ROS2 Galactic
鱼香ros一键安装,输入指令一键安装
http://wget http://fishros.com/install -O fishros && . fishros
输入1,一键安装ROS2
依次输入1-2更换源并清理第三方源
依次输入3-1选择安装galactic(ROS2)桌面版,因为Autoware.Universe是基于ROS2的galactic所以需要下载喔~
一顿嘎嘎安装,耐心等待精度条走到100%喔~(大概5min)
七、安装ros2_dev_tools
输入指令嘎嘎安装
<code>sudo apt update && sudo apt install -y \
build-essential \
cmake \
git \
python3-colcon-common-extensions \
python3-flake8 \
python3-pip \
python3-pytest-cov \
python3-rosdep \
python3-setuptools \
python3-vcstool \
wget
输入后,完成安装
再输入:
<code>python3 -m pip install -U \
flake8-blind-except \
flake8-builtins \
flake8-class-newline \
flake8-comprehensions \
flake8-deprecated \
flake8-docstrings \
flake8-import-order \
flake8-quotes \
pytest-repeat \
pytest-rerunfailures \
pytest \
setuptools
输入指令后会出现报错,依次输入指令解决:
<code>【1】sudo mkdir -p /etc/ros/rosdep/sources.list.d/
【2】sudo curl -o /etc/ros/rosdep/sources.list.d/20-default.list https://mirrors.tuna.tsinghua.edu.cn/github-raw/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
【3】export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml
【4】rosdep update --include-eol-distros
【5】echo 'export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml' >> ~/.bashrc
再次输入指令,即可成功下载~
这里大概率会报错:
ERROR: launchpadlib 1.10.13 requires testresources, which is not installed.
输入指令
<code>sudo apt install python3-testresources
解决啦
梅开三度,再输入一遍指令,测试安装成功否~
八、安装rmw_implementation
1.下载Qv2ray
【参考链接】https://ivpsr.com/2162.html
需要下载Qv2ray软件与其内核文件,下面两个文件:
1.Qv2ray-v2.7.0-linux-x64.AppImage
Github链接:https://github.com/Qv2ray/Qv2ray/releases
2.v2ray-linux-64.zip
Github链接:https://github.com/v2fly/v2ray-core/releases/tag/v4.31.0
将两个文件放到主目录下,注意要将zip文件解压,在界面点击右键在终端打开
输入指令添加权限:
<code>chmod a+x Qv2ray-v2.7.0-linux-x64.AppImage
输入指令打开Qv2ray软件
<code>./Qv2ray-v2.7.0-linux-x64.AppImage【执行Qv2ray】
选择首选项
按照上述步骤配置内核
然后设置订阅,完成订阅确认后,点击你的订阅分组,右键更新订阅,就可以看到节点啦
2.安装Git
输入指令安装Git,这里很可能Git已经被安装过了,所以已经是最新版,保险起见还是指令安装一下
3.克隆Autoware到本地
输入指令安装autoware到本地文件夹
<code>mkdir autoware_universe
cd autoware_universe/
git clone https://github.com/autowarefoundation/autoware.git -b galactic
这里很可能报错链接超时,这里就需要打开Qv2ray,并且配置一下端口
指令打开Qv2ray:
<code>./Qv2ray-v2.7.0-linux-x64.AppImage
打开后链接到节点喔~~
然后需要配置git端口指令输入:
git config --global http.proxy 127.0.0.1:XXXX
git config --global https.proxy 127.0.0.1:XXXX
【这里的XXXX需要根据自己情况设置,在Ubuntu右上角设置,网络代理】
点击网络代理
可以看到HTTP和HTTPS的代理端口,相应的将修改Git端口指令改为对于端口号,我的就是:
<code>git config --global http.proxy 127.0.0.1:8889
git config --global https.proxy 127.0.0.1:8889
输入配置端口指令后,再次执行克隆指令,就可以将autoware克隆到本地啦!!!
4.自动安装相关依赖
进入下载好的autoware_universe文件夹下的autoware
<code>cd autoware
再自动安装相关依赖
./setup-dev-env.sh
然后就是嘎嘎自动配置相关环境
让输入密码记得输入喔
最后,出现此报错就说明完成啦!后面会手动配置环境的~
5.安装rmw_implementation
配置一下环境变量
<code>cd autoware_universe/
source amd64.env
<code>【1】sudo apt update
【2】rmw_implementation_dashed=$(eval sed -e "s/_/-/g" <<< "${rmw_implementation}")
sudo apt install ros-${rosdistro}-${rmw_implementation_dashed}
【3】echo '' >> ~/.bashrc && echo "export RMW_IMPLEMENTATION=${rmw_implementation}" >> ~/.bashrc
完成~
九、安装pacmod
依次输入指令执行安装
<code>【1】cd autoware_universe/
【2】source amd64.env
【3】sudo apt install apt-transport-https
【4】sudo sh -c 'echo "deb [trusted=yes] https://s3.amazonaws.com/autonomoustuff-repo/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/autonomoustuff-public.list'
【5】sudo apt update
【6】sudo apt install ros-${rosdistro}-pacmod3
十、安装autoware_core
<code>pip3 install gdown
十一、安装autoware universe dependencies
1.指令安装(慢且不推荐)
输入指令安装autoware universe dependencies
<code>【1】sudo apt install geographiclib-tools
【2】sudo geographiclib-get-geoids egm2008-1
嘎嘎下载(大概5小时)
中途可能多次关闭,但是会重新连接,耐心等待即可(ps:144MB的东西搞这么久服了)
下载需要4-5小时,取决于节点网络与站点网络,因为在下载到90%的时候突然犯病失败,心态炸了的我打算另辟蹊径,想着能不能自行安装,因为之前通过虚拟机指令安装成功,所以有下载的具体信息,所以采用了下面的方法(推荐)。
2.官网下载安装(快且推荐)
【官网】https://sourceforge.net/projects/geographiclib/postdownload
输入上面的官网链接,即可进入下载
记得科学上网,嘎嘎下载,网速快仅需1分钟
下载后,把压缩包解压
将下载解压的3个文件复制到/usr/share/GeographicLib/geoids目录下,完成啦,是不是轻松加愉快
【可以通过指令移动3个文件】
<code>【1】sudo mv /home/akaxi-autoware/egm2008-1/geoids/egm2008-1.pgm /usr/share/GeographicLib/geoids
【2】sudo mv /home/akaxi-autoware/egm2008-1/geoids/egm2008-1.pgm.aux.xml /usr/share/GeographicLib/geoids
【3】sudo mv /home/akaxi-autoware/egm2008-1/geoids/egm2008-1.wld /usr/share/GeographicLib/geoids
成功~~撒花
十二、安装pre_commit
输入指令安装
<code>【1】clang_format_version=14.0.6
【2】pip3 install pre-commit clang-format==${clang_format_version}
成功!
继续继续输入指令:
<code>sudo add-apt-repository ppa:longsleep/golang-backports
sudo apt install golang
嘎嘎下载
完成!!!加油~~
十三、安装CUDA
1.指令安装CUDA
输入指令安装
<code>【1】cd autoware_universe/
【2】source amd64.env
【3】wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin
<code>【4】sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600
【5】sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/3bf863cc.pub
【6】sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"
【7】sudo apt-get update
【8】cuda_version_dashed=$(eval sed -e "s/[.]/-/g" <<< "${cuda_version}")
【9】sudo apt install cuda-${cuda_version_dashed} --no-install-recommends
2.问题解决
输入指令查看显卡:
<code>nvidia-smi
这里我的笔记本支持CUDA版本12以上~
接下来到官网进行下载,选择需要的CUDA最好是env中写的11.6.2版本下载
【官网链接】https://developer.nvidia.com/cuda-toolkit-archive
输入lscpu查看电脑架构
选择架构后得到指令,在终端输入喔,我的是
<code>【1】wget https://developer.download.nvidia.com/compute/cuda/11.6.2/local_installers/cuda_11.6.2_510.47.03_linux.run
【2】sudo sh cuda_11.6.2_510.47.03_linux.run
开始下载3.2G大小的文件,比较耗时间喔,大概20分钟
如果遇到下载暂停中断,显示s段错误(核心已转移),重复输入第一条指令下载试试,实在不行参考博客
【s段错误链接】https://blog.csdn.net/seaflyren/article/details/104131269
下载成功!!!
输入第二条指令安装
<code>sudo sh cuda_11.6.2_510.47.03_linux.run
【这里输入指令需要等待一会儿~】
选择继续,然后回车
输入accept接受
回车,将安装驱动取消【不要取消!不要取消!不要取消!后面测试取消驱动安装失败啦】
选择安装,回车【Driver项目不要取消哈】
【耐心等待5min左右~~】
完成~
接下来配置一下环境变量,输入指令
<code>sudo gedit ~/.bashrc
在打开的.bashrc最后添加下面两行喔:
<code>export PATH=/usr/local/cuda-11.6/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
保存后关闭
输入指令ncvv -V检查安装是否成功~
【如果输入指令显示未安装,在前面的驱动安装是否取消了,不要取消喔】
十四、安装cuDNN and TensorRT
输入指令安装CuDNN和TensorRT
<code>【1】cd autoware_universe/
【2】source amd64.env
【3】sudo apt-get install libcudnn8=${cudnn_version} libcudnn8-dev=${cudnn_version}
<code>【4】sudo apt-mark hold libcudnn8 libcudnn8-dev
【5】sudo apt-get install libnvinfer8=${tensorrt_version} libnvonnxparsers8=${tensorrt_version} libnvparsers8=${tensorrt_version} libnvinfer-plugin8=${tensorrt_version} libnvinfer-dev=${tensorrt_version} libnvonnxparsers-dev=${tensorrt_version} libnvparsers-dev=${tensorrt_version} libnvinfer-plugin-dev=${tensorrt_version}
输入Y继续下载喔
完成,继续输入指令下载
<code>【6】sudo apt-mark hold libnvinfer8 libnvonnxparsers8 libnvparsers8 libnvinfer-plugin8 libnvinfer-dev libnvonnxparsers-dev libnvparsers-dev libnvinfer-plugin-dev
成功!!!
十五、下载Universe代码
新建一个src文件夹
右键在终端打开,输入指令打开autoware.repos文件进行修改
<code>sudo gedit autoware.repos
在第27和第28行之间插入下面的代码
<code>universe/external/open_planner:
type: git
url: https://github.com/ZATiTech/open_planner.git
version: main
保存后退出,然后挂上节点
./Qv2ray-v2.7.0-linux-x64.AppImage【执行Qv2ray】
配置一下Git端口
git config --global http.proxy 127.0.0.1:8889
git config --global https.proxy 127.0.0.1:8889
执行指令
vcs import src < autoware.repos
成功!
可以看到src文件下成功下载universe代码咯!!!
十六、安装 Autoware ROS依赖包
1.失败案例
指令更新更新 rosdep 数据库
<code>rosdep update
这里其实是失败的,,skip跳过了很多,回溯前面【第七章安装ros2_dev_tools】解决
<code>【1】sudo mkdir -p /etc/ros/rosdep/sources.list.d/
【2】sudo curl -o /etc/ros/rosdep/sources.list.d/20-default.list https://mirrors.tuna.tsinghua.edu.cn/github-raw/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
【3】export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml
【4】rosdep update --include-eol-distros
【5】echo 'export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml' >> ~/.bashrc
安装ROS依赖
【1】source /opt/ros/galactic/setup.bash
【2】rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
如果遇到问题:
【解决链接】https://blog.csdn.net/weixin_50518868/article/details/119717777
用下面指令下载,把[XXX]里面的东西补上
<code>sudo apt-get install ros-galactic-【缺少的依赖】
我缺少:
ros-galactic-velodyne_monitor
ros-galactic-pointcloud_preprocessor
ros-galactic-tier4_api_utils
ros-galactic-web_controller
ros-galactic-vehicle_info_util
【注意把_换成-】
那我的指令就是
sudo apt-get install ros-galactic-velodyne-monitor ros-galactic-pointcloud-preprocessor ros-galactic-tier4-api-utils ros-galactic-web-controller ros-galactic-pointcloud-preprocessor ros-galactic-velodyne-monitor ros-galactic-tier4-api-utils ros-galactic-vehicle-info-util
【但是提示我未定义到软件依赖项目,搜寻各大CSDN等博客未果,于是重头再来,删掉src,回退第十五章】
2.成功案例
先挂载节点【执行Qv2ray】
./Qv2ray-v2.7.0-linux-x64.AppImage
配置一下Git端口
git config --global http.proxy 127.0.0.1:8889
git config --global https.proxy 127.0.0.1:8889
更新rosdep
rosdep update --include-eol-distros
下载
【1】source /opt/ros/galactic/setup.bash
【2】rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
【如果不成功,还是像前面的失败案例一样,把src文件删掉,重新按照十五章下载Universe代码,试试用mkdir src指令创建src文件夹,再来一次~】
这里下载open3d比较慢需要2小时左右
下载完open3d后,会下载各种依赖,还需要大概2小时~
回溯前面的报错,是这两个问题:
问题1
解决问题1:
<code>pip install --upgrade --user setuptools==58.3.0
问题2
解决问题2,输入指令解决
<code>pip install --upgrade setuptools
成功啦~~~~耗时4-5小时
十七、编译空间
输入指令开始编译:
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
1.colcon编译的时老是卡死
【解决办法】
https://fishros.org.cn/forum/topic/116/colcon%E7%BC%96%E8%AF%91%E5%AF%BC%E8%87%B4%E7%B3%BB%E7%BB%9F%E5%8D%A1%E6%AD%BB%E9%97%AE%E9%A2%98-cpu100-%E6%88%96-%E5%86%85%E5%AD%98-100
给出参考指令:
colcon build --parallel-workers 6
colcon build --executor sequential
colcon编译时依次构建,不按照并行构建,下面的指令:
<code>【也许可以】colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release --executor sequential
2.trtexec_vendor包错误
只编译了48个包,现在科学上网试试。
先挂载节点【执行Qv2ray】
<code>./Qv2ray-v2.7.0-linux-x64.AppImage
配置一下Git端口
git config --global http.proxy 127.0.0.1:8889
git config --global https.proxy 127.0.0.1:8889
再编译试试
显示网络问题
【解决办法】https://blog.csdn.net/yz2630570484/article/details/132902294#t17
编译报错:
trtexec_vendor包编译未通过导致编译失败,为trtexec_vendor包中git clone的依赖库下载失败(网络问题)
在autoware/src中找到对应程序包,将cmakelist中34行:
<code>GIT_REPOSITORY https://github.com/NVIDIA/TensorRT
网址前添加代理https://ghproxy.com/,修改为:
GIT_REPOSITORY https://ghproxy.com/https://github.com/NVIDIA/TensorRT
保存后退出,删除编文件 build、log和install,重新编译即可
使用指令找到trtexec_vendor包
<code>sudo find . -name "trtexec_vendor"
在路径:
~/autoware_universe/autoware/src/universe/autoware.universe/common/trtexec_vendor找到CMakeList.txt文件哦
打开后
<code>在第39行找到:
GIT_REPOSITORY https://github.com/NVIDIA/TensorRT
改为:
GIT_REPOSITORY https://ghproxy.com/https://github.com/NVIDIA/TensorRT
保存后退出哦
删除编译文件 build、log和install,重新编译即可
<code>取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy
编译完成后进行测试,待进行~~
2024.2.25
渝北仙桃数据谷
上一篇: Nginx 代理 MySQL 实现通过域名连接数据库
下一篇: Docker 部署开源远程桌面工具 RustDesk
本文标签
【基于Ubuntu20.04的Autoware.universe安装过程】方案二:双系统 | 详细记录 | 全过程图文 by.Akaxi
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。