这段时间折腾百度的自动驾驶框架Apollo,先是在官方看了视频课程,看得热血沸腾,觉得自己要搭乘上通往未来技术的列车了,而且觉得百度很是强大,L4级别的自动驾驶非它莫属了。于是开始按照官方文档开始安装,前提条件是安装Ubuntu系统的电脑,现有的MacBook pro肯定是用不上,我还一度想重新组装一台性能强劲的PC机呢,最后还是被理性说服。最后还是决定在原来的一台PC上用虚拟机搭建。
折腾是从VMware到VirtualBox,再到VMware又到VirtualBox。VM是官方推荐的,所以第一次安装了,结果卡的要命,而且经常莫名其妙的卡住不动了,连正常的Ubuntu都安装不上,只能放弃。切回VBox后好了很多,Ubuntu操作系统也安装了两个版本18.04是官方推荐的,但是系统版本比较老,日常操作不太方便,后来换到了24.04。
安装Apollo的过程可算是艰难,这里先说导致问题的原因和最后的解决方案。原因是Apollo是要求CPU支持AVX2的,可是官方的文档都没有提到。不支持的结果就是按照「包管理安装方式」可以正常安装(我装的是application-pnc ),但是执行就报错,比如执行aem bootstrap start --plus 命令提示都正常,结果就是启动不起来,查看日志先是进程刚启动就结束了。如果按照「源码安装方式」,也是可以进入容器,就是执行build时,到模块编译的地方就报错(direct_dependencies_violation_msg=%s is imported, but //modules/audio/proto:_audio_conf_proto doesn'\''t directly depend on a proto_library that '\''srcs'\'' it.' modules/audio/proto/audio_conf.proto)。如果是执行已经编译的好的文件时报错是:Illegal instruction (core dumped)。
解决方案是:
1、VirtualBox宿主机上的所有虚拟化设置,在「启用或关闭Windows功能」里取消勾选包括Hyper-V、Windows沙盒、Windows 虚拟机监控程序平台、容器、虚拟机平台等所有选项。
2、在VirtualBox安装路径执行:vboxmanage modifyvm [虚拟机名] --nested-hw-virt on ,其中【虚拟机名】是你的自定义名称。通过这样才能,启用嵌套VT-x/AMD-v 灰色无法勾选。
我的卡点其实是在【启用或关闭Windows功能】里的选项,网上搜了好多文章都只说了要去掉Hyper-V,没有说其他的选项,所以导致我的AVX2怎么都不行。执行多次 cat /proc/cpuinfo |grep avx2 都没有任何显示。