1.Windows10配置
1.1 系统安装
1.重要链接 Windows10 dev: https://developer.microsoft.com/en-us/windows/downloads/ Windows10 vm: https://developer.microsoft.com/en-us/windows/downloads/virtual-machines Windows10 pre: https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewadvanced Windows10 ver: BuildXXX.YYYY、VersionYearMonth、YearH1、YearH2,H=HalfYear WSL changelog: https://docs.microsoft.com/en-us/windows/wsl/release-notes WSL instruction: https://docs.microsoft.com/en-us/windows/wsl/reference WSL download: https://docs.microsoft.com/en-us/windows/wsl/install-manual ROS2 guidance: https://github.com/ros2/ros2 vcredist all links: https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads suitesparse-metis-for-windows: https://github.com/jlblancoc/suitesparse-metis-for-windows 2.安装说明 安装稳定版本:将下载的虚拟机安装为物理机后并破解 安装最新版本:将下载的预览镜像安装为物理机并破解 安装优化版本:将下载蓝色动力系统安装为物理机并破解 3.整体流程 1.启用Administrator并登录 2.安装SystemCare等基本APP 3.启用相关功能并安装WSL2 4.安装ROS2和相关开发软件 5.激活Windows10操作系统 |
4.启用功能 SMB 1.0/CIFS File Sharing Support SMB Direct NFS Service Telnet Client Telnet Server OpenSSH Client OpenSSH Server FTP Server Virtual Machine Platform Windows subsystem for Linux Hyper-V Windows sandbox 5.安装软件
|
1.2 WSL配置
1.Basic 下载UbuntuXXX:MSStore下载并备份到期望位置后卸载之 安装UbuntuXXX:命令导入install.tar.gz(避免新建用户)或运行EXE正规安装 配置WinTerminal:命令行为wsl.exe -d ubuntuxxx -u root
passwd root apt-get update apt-get upgrade apt-get install minicom
2.Telnet apt-get install openbsd-inetd telnetd vim /etc/inetd.conf mv /etc/securetty /etc/securetty.bak #allow root login /etc/init.d/openbsd-inetd restart netstat -a | grep telnet #display{tcp…telnet…}
telnet ip
3.SSH apt-get install openssh-server openssh-client vim /etc/ssh/sshd_config dpkg-reconfigure openssh-server /etc/init.d/ssh restart ps -e |grep ssh #display{…sshd}
ssh username@ip
4.Samba apt-get install samba samba-common smbclient cifs-utils vim /etc/samba/smb.conf smbpasswd -a root /etc/init.d/smbd restart smbclient -L ip -N
mount -t cifs -o username=root,password=aaron //ip/sharedPath localPath umount localPath
#windows10: \\ip in Explorer #clear cache: net use * /del /y
5.NFS apt-get install nfs-kernel-server nfs-common rpcbind vim /etc/exports /etc/init.d/rpcbind restart /etc/init.d/nfs-kernel-server restart showmount -e ip
mount -t nfs -o nolock ip:/sharedPath localPath umount localPath
#Window10 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ ClientForNFS\CurrentVersion\Default create AnonymousUid QWORD 0 create AnonymousGid QWORD 0 reboot windows mount -o nolock \\ip\sharedPath driveNames: umount driveNamess
6.FTP apt-get install vsftpd ftp vim /etc/vsftpd.conf vim /etc/ftpusers vim /etc/ftpusers_allowed vim /etc/ftpusers_unlimited /etc/init.d/vsftpd restart
ftp ip ftp>help [cmd] ftp>quit ftp>status ftp>dir [dir] ftp>ls ftp>verbose ftp>pwd ftp>cd dir0 ftp>lcd [dir1] ftp>delete file ftp>rename src dst ftp>mkdir dir ftp>rmdir dirname ftp>get file0 [file1] ftp>put file1 [file0]
7.Git Sever apt-get install git git-core apache2 apache2-utils |
1.wsl基本命令 设置默认版本:wsl --set-default-version wslVersion 设置默认系统:wsl --set-default osName 设置指定系统为指定版本:wsl --set-version osName wslVersion
关闭指定系统:wsl --terminate osName 关闭所有系统:wsl --shutdown 移除指定系统:wsl --unregister osName (删除对应的vhdx文件)
查看系统:wsl --list --all/--running/--quiet/--verbose 导入系统:wsl --import osName installDir tarPath 导出系统:wsl --export osName tarPath 导出/导入的实质:tar与vhdx之间的转换(于是若不介意vhdx可直接备份vhdx) 直接vhdx备份还原:备份的vhdx在还原时用之替换原vhdx、优点是简单快捷、缺点是vhdx比tar大 用导入方式安装系统:直接导入install.tar.gz、避免新建用户而直接默认root登录
登录系统:wsl [--distribution osName] [--user userName]
2./etc/inetd.conf应有 telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd
3./etc/ssh/sshd_config设置 PermitRootLogin yes PasswordAuthentication yes
4./etc/samba/smb.conf追加 [root] comment = root directory path = /root writeable = yes browseable = yes valid users = root
[ubuntu] comment = system directory path = / writeable = yes browseable = yes valid users = root
5./etc/exports追加 /root *(insecure,rw,sync,no_subtree_check,no_root_squash) / *(insecure,rw,sync,no_subtree_check,no_root_squash) #*: 所有能ping到的主机可挂载 #192.168.0.*: 指定网段的主机可挂载 #192.168.1.12: 仅此主机能挂载 #ro/rw:只读/读写 #sync:同步 #no_root_squash: 不降低root用户的权限
6./etc/vsftpd.conf模板
local_enable=YES local_root=/home local_umask=000 local_max_rate=0 write_enable=YES userlist_enable=YES userlist_deny=NO userlist_file=/etc/ftpusers_allowed chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/ftpusers_unlimited seccomp_sandbox=NO /etc/ftpusers应无root和其它期望用于登录的账户 /etc/ftpusers_allowed应有root和其它期望用于登录的账户 /etc/ftpusers_unlimited应有root和其它访问位置不受限的账户 |
1.3 ROS配置
1.手动安装 (1)下载并解压ROS2XXX到D:\app\ros2 (2)基于D:\app\ros2\Scripts\xxx.py安装相应的Python版本到相应的路径 (3)安装OpenSSL到D:\app\openssl和编译OpenCV到D:\app\opencv (4)添加环境变量 setx -m OPENSSL_CONF D:\app\openssl\bin\openssl.cfg setx -m OpenCV_DIR D:\app\opencv\build\install (5)确认系统环境变量path包含 ~\PythonXXX ~\PythonXXX\Scripts D:\app\openssl\bin D:\app\opencv\build\install\x64\vc14\bin 2.Choco安装 下载包:choco download <pkg> [others] patch curl 安装包:choco install -y -s D:\tmp asio cunit tinyxml-usestl tinyxml2 log4cxx 3.Python安装 下载包:python -m pip download catkin_pkg cryptography empy ifcfg lark-parser lxml netifaces numpy opencv-python pyparsing pyyaml setuptools PyQt5 vcstool colcon-common-extensions-d D:\tmp 安装包:python -m pip install --no-index --find-links=D:\tmp catkin_pkg cryptography empy ifcfg lark-parser lxml netifaces numpy opencv-python pyparsing pyyaml setuptools PyQt5 vcstool colcon-common-extensions 4.默认已安装:visualstudio opencv eigen 5.测试可用性 call D:\app\ros2\setup.bat ros2 run demo_nodes_cpp talker ros2 run demo_nodes_py listener |
D:\app\qt\5.9.9\msvc2015_64\bin D:\app\vtk\build\install\bin D:\app\opencv\build\install\x64\vc14\bin D:\app\suitesparse\lapack_windows\x64 C:\Program Files\Git\cmd C:\Program Files\CMake\bin C:\Python37 C:\Python37\Scripts D:\wks\ams\colcon\install\ams\bin D:\app\openssl\bin D:\app\ros2\bin D:\app\ros2\Scripts D:\app\ros2\opt\libcurl_vendor\bin D:\app\ros2\opt\yaml_cpp_vendor\bin D:\app\ros2\opt\rviz_ogre_vendor\bin D:\app\ros2\opt\rviz_assimp_vendor\bin
C:\ProgramData\chocolatey\bin C:\ProgramData\chocolatey\lib\cunit\lib C:\ProgramData\chocolatey\lib\tinyxml2\lib C:\ProgramData\chocolatey\lib\log4cxx\lib
D:\app\octomap\build\install\bin
D:\app\flann\build\install\bin D:\app\qhull\build\install\bin D:\app\pcl\build\install\bin
C:\Windows C:\Windows\System32 C:\Windows\System32\Wbem C:\Windows\System32\OpenSSH C:\Windows\System32\WindowsPowerShell\v1.0 C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit C:\Program Files\Microsoft SQL Server\120\Tools\Binn |
|
2.库编译与安装
2.1 git + cmake + python + qt(qglviewer) + openvino
1.安装git:安装到系统盘的默认路径(确认环境变量) 2.安装cmake:安装到系统盘的默认路径(确认环境变量) 3.安装python:安装到ROS2期望版本到期望路径(确认环境变量) 4.安装qt:安装到D:/app/qt并设置D:/app/qt/5.9.9/msvc2015_64/bin到Path头(非常重要) (1)Qt5.9组选择msvc2015-64bit和desktop-gcc-64bit及除QtScript外所有Qt打头的库 (2)DevDes组成选择CBDebuger和MinGW (3)移除*d.lib、*d.prl及*d.dll的库(因增强CMakeList.txt此操作无需再执行) (4)移植到第三方时用C:\Windows\System32\WindowsPowerShell\v1.0作为目标路径 (5)移植到第三方时根据实际需求还需要将~/plugins中的某些目录复制到与运行程序相同的目录,当前有:imageformats, sqldrivers, platforms (6)安装qglviewer 1)用qt打开QGLViewer.pro,设置C/C++编译器为MVCM14.0(amd64) 2)构建Release版本,无需理会找不到QGLViewer2.lib的错误 3)复制QGLViewer2.lib为~\qt\version_id\msvc2015_64\lib 4)复制QGLViewer2.dll到~\qt\version_id\msvc2015_64\bin 5)复制libQGLViewer-qt5.prl和libQGLViewer-qt5.so*到~\qt\version_id\gcc_64\lib 6)复制QGLViewer中所有h文件和VRender到~qt\version_id\msvc2015_64 7)复制QGLViewer中所有h文件和VRender到~qt\version_id\_gcc_64\include 8)在QGLViewer中增加文件QGLViewer #ifndef QT_QGLVIEWER_MODULE_H #define QT_QGLVIEWER_MODULE_H #include "camera.h" #include "config.h" #include "constraint.h" #include "domUtils.h" #include "frame.h" #include "keyFrameInterpolator.h" #include "manipulatedCameraFrame.h" #include "manipulatedFrame.h" #include "mouseGrabber.h" #include "qglviewer.h" #include "quaternion.h" #include "vec.h" #endif 9)这些头文件中包含的关于QT的头文件要作修改,主要是增加包含目录 10)复制examples为~\qt\Examples\version_id\qglviewer 11)备份以上文件,对Qt5.9.x全适用,对5.x.x只需更新dll和lib文件 |
4.安装openvino (1)安装过程详细 1)选择D:/app后将自动创建快捷目录D:/app/openvino和原始目录D:/app/openvino_year.month.id 2)安装组件包括:ModelOptimizer(用于模型转换)、OpenModelZoo(避免再次下载)、 IEDevKit(OpenMoelZoo引入)、IERuntimeForXXX(占极小空间)、于是仅OpenCV被排除 3)安装后删除D:/app/openvino而将D:/app/openvino_year.month.id重命名为D:/app/openvino 4)通过BeyondCompare比较复制的与原始的D:/app/openvino来移除其中的快捷目录 5)不为之添加任何永久环境变量而仅针对即时的命令窗口(因为主要想使用它的模型转换器) 6)备份须知:无需单独备份、因为备份文件没比原文件小多少且重装如同解压、所以需要时直接安装即可 (2)最终文件结构 python opencv licensing documentation bin\setupvars.bat:环境变量设置脚本 data_processing\audio\speech_recognition:语音识别库API deployment_tools demo:安装验证脚本 tools:模型处理工具 open_model_zoo:推理引擎实例SRC model_optimizer:模型优化器APP ngraph:模型优化库API inference_engine:推理引擎库API、推理引擎驱动DLL、推理引擎示例SRC (3)环境变量说明 C:\Program Files (x86)\Common Files\Intel\Shared Libraries\redist\intel64_win\compiler D:\app\openvino\deployment_tools\ngraph\lib D:\app\openvino\deployment_tools\inference_engine\external\tbb\bin D:\app\openvino\deployment_tools\inference_engine\external\hddl\bin D:\app\openvino\deployment_tools\inference_engine\bin\intel64\Release D:\app\openvino\deployment_tools\inference_engine\bin\intel64\Debug D:\app\openvino\deployment_tools\model_optimizer (4)配置验证详细 设置环境变量:D:\app\openvino\bin: setupvars.bat 配置所有优化器:D:\app\openvino\deployment_tools\model_optimizer\install_prerequisites: install_prerequisites.bat 转为DLDT模型:D:\app\openvino\deployment_tools\demo: demo_squeezenet_download_convert_run.bat 推理DLDT模型:D:\app\openvino\deployment_tools\demo: demo_security_barrier_camera.bat |
2.2 spdlog + vtk + opennivio + opencv + octomap
1.安装spdlog:解压到D:/app/spdlog 2.安装vtk (1)安装路径:CMAKE_INSTALL_PREFIX=D:/app/vtk/build/install (2)环境变量:D:/app/vtk/build/install/bin (3)手动确认:无 (4)安装须知:若自动找到依赖QT则残废之 3.安装opencv (1)安装路径:CMAKE_INSTALL_PREFIX=D:/app/opencv/build/install (2)环境变量:D:\app\opencv\build\install\x64\vc14\bin (3)手动确认:WITH_QT&VTK&INF_ENGINE&TBB 0)D:\app\opencv\contribs\modules\cvv\src\stfl\stringutils.cpp中u8”…”为u8”...” 1)OPENCV_ENABLE_NONFREE=ON 2)OPENCV_DOWNLOAD_PATH=D:/app/opencv/sources/.cache 3)OPENCV_EXTRA_MODULES_PATH=D:/app/opencv/contrib/modules 4)QT5Core_DIR=D:/app/qt/5.9.9/msvc2015_64/lib/cmake/Qt5Core 5)QT5Gui_DIR=D:/app/qt/5.9.9/msvc2015_64/lib/cmake/Qt5Gui 6)Qt5Widgets_DIR=D:/app/qt/5.9.9/msvc2015_64/lib/cmake/Qt5Widgets 7)QT5Concurrent_DIR=D:/app/qt/5.9.9/msvc2015_64/lib/cmake/Qt5Concurrent 8)QT5OpenGL_DIR=D:/app/qt/5.9.9/msvc2015_64/lib/cmake/Qt5OpenGL 9)QT5Test_DIR=D:/app/qt/5.9.9/msvc2015_64/lib/cmake/Qt5Test 10)VTK_DIR=D:/app/vtk/build/install/lib/cmake/vtk-8.2 11)IE_XXX=D:/app/openvino/deployment_tools/inference_engine/xxx 12)TBB_DIR=D:/app/openvino/deployment_tools/inference_engine/external/tbb/cmake 13)BLAS_XXX、Ceres_DIR后续需要加入 14)排除:WITH_CUDA、BUILD_CUDA_STUBS、BUILD_TBB、BUILD_TESTS、BUILD_PER_TESTS、BUILD_EXAMPLES、BUILD_opencv_apps、BUILD_opencv_cvv(与opencv _world冲突)、OGRE_DIR(由ROS2引入但无效) |
(4)备份须知 1)完成CMake的Generate后备份为build.zip 2)安装并复制OpenCVDLDT中除*.pbd、*.exe、opencv_*外的所有到~\install\x64\vc14\bin 3)删除除build.zip及install外后的所有并进行整体备份 4.安装octomap (1)安装路径:CMAKE_INSTALL_BIN_DIR=D:/app/octomap/build/install (2)环境变量:D:/app/octomap/build/install/bin (3)手动确认 1)OCTOVIS_OT5=TURE 2)BUILD_OCTOVIS_SUBPROJECT=TRUE 3)BUILD_DYNAMICETD3D_SUBPROJECT=TRUE 4)QT_QMAKE_EXECUTABLE=D:/app/qt/5.9.9/msvc2015_64/bin/qmake.exe 5)QGLViewer_INCLUDE_DIR=D:/app/qt/5.9.9/msvc2015_64/include/QGLViewer 6)QGLViewer_LIBRARY_DIR_WINDOWS=D:/app/qt/5.9.9/msvc2015_64/lib/QGLViewer2.lib (4)安装须知 1)删除~/octovis/src/extern以免调用本身提供的旧版本的libqglviewer 2)修改源码中的updateGL为update并注释qglColor和qglClearColor 3)在源码中为octovis-shared工程添加${QT_LIBRARIES}依赖 4)继承关系变化:ViewerWidgetQGLViewerQOpenGLWidget( instead of QGLWidget) |
2.3 suitesparse + eigen + sophus + gflags + glog + ceres
1.安装eigen:解压源文件到D:/app/eigen 2.安装sophus:解压源文件D:/app/sophus 3.安装gflags:安装到CMAKE_INSTALL_PREFIX=D:/app/gflags/build/install且用静态库 4.安装glog:安装到CMAKE_INSTALL_PREFIX=D:/app/glog/build/install且用静态库 5.安装ceres:安装到CMAKE_INSTALL_PREFIX=D:/app/ceres/build/install且用静态库 (1)手动确认:gflags_DIR&glog_DIR=D:/app/gflags/build/install/lib/cmake/gflags&glog (2)安装须知:解压后先删除BUILD,否则无法新建build目录 (3)补充说明:直接包含lib文件会缺少宏定义使得在Debug模式下会出错,可通过find_package生成工程找到宏后再在简易配置中加上宏 6.安装suitesparse (1)安装路径:SUITESPARSE_INSTALL_PREFIX=D:/app/suitesparse/build/install (2)环境变量:D:/app/suitesparse/lapack_windows/x64 (3)手动确认:无 |
(4)安装须知 1)复制~/lapack_windows/x64中的libblas.lib和liblapack.lib到~/install/lib使以简化配置 2)删除~/build/install/lib64,其中的文件来源于~/lapack_windows/x64 (5)补充说明 1)suitesparse由efficient、csparse和cxsparse组成 2)efficient依赖lapack和blas(suitesparse-metis中包含这两个依赖),但效率高 3)csparse不依赖lapack和blas,但效率低 4)cxsparse是csparse超集,扩展支持复数和整型及长整型,用csparse的地方都可用之替换 5)suitesparse算法组成:算法库11个+配置库1个+csparse和cxsparse扩展库1个 6)suitesparse文件组成:头文件包含11个(含配置头文件),库文件包含12个(含配置头文件) 7)lapack和lapacke区别:lapacke是c接口的lapack,因为blas和lapack本身是用fortan语言写的 |
2.4 flann + qhull + pcl + boost
1.安装flann (1)安装路径:CMAKE_INSTALL_BIN_DIR=D:/app/flann/build/install (2)环境变量:D:/app/flann/build/install/bin (3)手动确认:无 (4)安装须知:生成了多个库但尚未明其义 2.安装qhull (1)安装路径:CMAKE_INSTALL_BIN_DIR=D:/app/qhull/build/install (2)环境变量:D:/app/flann/build/install/bin (3)手动确认:无 (4)安装须知:生成了多个库但尚未明其义 3.安装boost (1)安装路径:D:/app/boost (2)手动确认:无 (3)环境变量:D:/app/boost/lib64-msvc-14.0 (4)安装须知:仅保留~/lib64-msvc-14.0中满足*mt-x64-1_*(动态38*2+静态40=116) (5)补充说明:lib静态库,vcx编译器版本,mt多线程编译,s静态调试,g诊断调试,d调试版本 |
4.安装pcl (1)安装路径:CMAKE_INSTALL_BIN_DIR= D:/app/pcl/build/install (2)环境变量:D:/app/pcl/build/install/bin (3)手动确认:无 flann qhull boost eigen qt vtk (4)安装须知:生成了多个库但尚未明其义 1)CMakeLists添加set(BOOST_ROOT D:/app/boost) 2)USE_PROJECT_FOLDERS=ON 3)设为ON的项:_ENABLE_SSE, _SHEARD_LIBS 5)选择除WITH_CU*外的所有WITH项以引出第三方库,做法同OpenCV 4)排除的BUILD项:_CUDA, _GPU, _all_in_one_installer, _apps, _examples, _global_tests |
2.5 orbslam2
2.安装orbslam2(含fbow + g2o +pangolin) (1)安装路径:CMAKE_INSTALL_BIN_DIR=D:/app/octomap/build/install (2)环境变量 (3)手动确认 (4)安装须知 1)可对比原始源码与Window版本源码的区别,然后按readme安装 2)在ORBextractor.cc中添加头文件#include <iterator> 3)删除提供的Thirdparty/eigen而用D:/app/eigen 4)生成g2o工程打开后添加预处理选项WINDOWS 5)编译pangolin时会不能打开”pthread.lib”的错误无需理会 (5)测试用例:解压Vocabulary/ORBvoc.txt.tar.gz到当前目录 1)单目KITTI:.\Examples\Monocular\Release\mono_kitti .\Vocabulary\ORBvoc.txt .\Examples\Monocular\KITTI03.yaml G:\data_odometry_gray\03 2)单目EuRoc: 3)单目TUM:.\Examples\Monocular\Release\mono_tum .\Vocabulary\ORBvoc.txt .\Examples\Monocular\TUM1.yaml G:\rgbd_dataset_freiburg1_desk 4)双目KITTI:.\Examples\Stereo\Release\stereo_kitti .\Vocabulary\ORBvoc.txt .\Examples\Stereo\KITTI03.yaml G:\data_odometry_gray\03 5)双目EuRoC: 6)深度TUM:.\Examples\RGB-D\Release\rgbd_tum .\Vocabulary\ORBvoc.txt Examples\RGB-D\TUM1.yaml G:\rgbd_dataset_freiburg1_desk G:\rgbd_dataset_freiburg1_desk\associations.txt |
3.Ubuntu1604配置
3.1 初始设置
3.2 个性配置
(1)个性配置 桌面无任何图标 输入法仅五笔和拼音 窗口菜单在本窗口并一直显示 任务栏无多余程序停靠(包括不含桌面图标和工作空间图标)且任务栏图标尺寸30 (2)标签配置 打开/etc/xdg/user-dirs.defaults注释所有 打开~/.config/user-dirs.dirs注释只剩下XDG_DESKTOP_DIR="$HOME/Desktop"从而完成位置栏配置 打开菜单栏上的书签栏完成书签栏配置 (3)办公配置 见后文 (4)制本地源 复制/var/cache/apt/archives/*.deb到/root/app/aptget(若软件包被删除或更新则进入synaptic选择全部重新但仅下载) 进行入/root/app执行{dpkg-scanpackages aptget /dev/null | gzip > aptget/Packages.gz}生成源信 打开gedit /etc/apt/sources.list后删除所有并添加deb file:/root/app/ aptget/然后打开synaptic并reload即可 可以通过dpkg -i /root/app/aptget/*.deb安装强制安装deb软件(确保彼此依赖都存在) (5)清理缓存 bleachbit: 清理垃圾 autoclean: 清理已被卸载的软件的deb安装包 clean: 清理所有deb安装包 autoremove: 删除系统认为不再使用的孤立软件 remove softname: 卸载指定软件但保留配置 remove --purge softname: 卸载指定软件且删除配置 synaptic: 清除残留配置 (6)备份系统 用systemback备份系统为LiveCD 直接用LiveCD工作时可能无权限时则执行chmod u+x file/dir 直接进行安装模式..../ubuntu160403-dzy.iso ro finstall quiet splash locale=zh_CN.UTF-8 在不同配置的电脑上安装或试用LiveCD时,驱动有问题首先更新或重装内核(此方法可联网可离线),若都不行则在软件更新界面的附加驱动中安装(此方法要联网) (7)压缩数据
. |
3.3 开发配置
(1)从源安装 apt-get install libqt5multimedia5-plugins qtmultimedia5-dev libsuitesparse-dev CMakeLists添加: /usr/include/suitesparse apt-get install git cmake cmake-qt-gui python3 libqt5*5-dev libboost-all-dev libeigen3-dev liboctomap-dev libdynamicedt3d-dev liboctovis-dev octomap-tools octovis 手动: sophus apt-get install libvtk6-dev libopencv-dev 手动: opencv apt-get install libgflags-dev libgoogle-glog-dev 手动: ceres apt-get install libflann-dev libqhull-dev libpcl-dev pcl-tools libproj-dev (2)手动安装 sophus: 与win相似,直接复制到/usr/include/sophus-dzy opencv: 除安装路径外与win相同, 包括重建本地本可以提供的第三项 pangolin: 除安装路径外与win相同, 但不重建本地已存在的第三项,若所需第三方项不存在会提示错误,基于之前安装这里就需要再安装libglew-dev ceres: 除安装路径外与win相同 qt&&vscode&&vscode-plugins: vscode-icons, CMake, CMake Tools, CMake Tools Helper, C/C++ (3)备份恢复 1)备份:复制/usr/local/*到/root/app/local,复制所有deb包到root/app/base-dev,删除所有build中除build.zip外的文件 2)恢复:以base-dev制作本地源安装,复制local覆盖/usr/local,终端执行ldconfig |
3.4 环境变量配置
(1)可设置处 /etc/environment:系统启动时加载 /etc/profile:每个用户首次登录时加载 /etc/bash.bashrc:每个用户每次打开shell时加载 ~/.profile:对应用户首次登录时加载 ~/.bashrc:对应用户每次打开shell时加载 立即生效:source /etc/bash.bashrc 或source ~/.bashrc (2)设置变量 对C头文件:export C_INCLUDE_PATH = dzypath:${C_INCLUDE_PATH} 对CXX文件:export CPLUS_INCLUDE_PATH = dzypth:${CPLUS_INCLUDE_PATH} 对静态库文件:export LIBRARY_PATH = dzypath: ${LIBRARY_PATH} 对动态库文件:export LD_LIBRARY_PATH = dzypath:${LD_LIBRARY_PATH} 或 修改/etc/ld.so.conf并执行ldconfig 对可执行文件:export PATH = dzypath:${PATH} |
4.移动系统定制
4.1 BIOS与UEFI的硬件差异
|
1.BIOS硬盘结构 (1)LBA0:因该扇区中,引导代码占有绝大部分的空间,故将此扇区称为MBR扇区 MBR:446字节,存储系统的引导程序 PEs:64字节,每16字节描述描述一个PE(Partition Entry),所以最多共4个分区 End:2字节,值为0xAA55 (2)LBA1~LBA62:隐藏扇区,保留备用。 (3)LBA63:第一分区的起始位置。 (4)LBA64~LBAEnd:参见《挨踢_硬盘结构+文件系统+系统启动+数据恢复1st.doc》
2.UEFI硬盘结构 (1)LBA0:MBR扇区,记录了启动代码和分区信息。 若LBA0记录了仅0xEE标志的分区或LBA0后存在PHs(Partition Headers),说明此硬盘为UEFI独占模式,只能由UEFI主板启动 若LBA0记录了非0xEE标志的分区且LBA0后存在PHs,说明此硬盘为UEFI/BIOS混合模式,两类主板或混合主板都能启动 若LBA0记录了非0xEE标志的分区且LBA0后没有PHs,说明此硬盘为BIOS独占模式,只能由BIOS主板启动 (2)LBA1:主PTH(Partition Table Header),记录硬盘的GUID、分区可用的始末LBA、PEs包含的项数及每项占用的字节数等信息
(3)LBA2~LBA33:主PEs,每个PE用128字节描述
(4)LBA34:第一分区的起始位置 (5)LBA-2~LBA-33:副PEs (6)LBA-1:副PTH |
4.2 BIOS与UEFI的软件差异
1.电脑主板固件程序分别:BIOS和UEFI 2.BIOS分区结构将MBR和PEs存储在了一个扇区LBA0 3.UEFI分区结构将MBR存储在一个扇区LBA0,将PEs存储在多个扇区(LBA2~LBA33),还增加了PTH(存储在LBA1扇区) 4.UEFI必须有一个ESP分区,ESP用于存储系统启动相关的文件 5.BIOS硬盘启动过程概要 (1)开机自检 (2)加载硬盘主引导记录(每类系统的主引导记录都不相同) (3)搜索并激活系统引导文件(如winnt5_ntldr或winnt6_bootmgr或ubuntu_) (4)加载启动配置文件(如winnt5_boot.ini或winnt6_bcd或ubuntu_grub.cfg) (5)加载系统核心文件 6.UEFI硬盘启动流程详细 (1)开机自检 (2)加载系统引导文件:自动加载/esp/efi/boot/bootx64.efi(可由任何系统的efi文件或uefishell.efi重命名得到),可手动添加多个不同路径的efi文件 Windows默认安装在:/esp/efi/microsoft/boot/bootmgrfw.efi Ubuntu默认安装:/esp/efi/ubuntu/shimx64.efi及/esp/efi/ubuntu/grubx64.efi (3)加载启动配置文件:不同的efi文件,其指向的启动配置文件不同 Windows操作系统:/esp/efi/microsoft/boot/bootmgrfw.efi/esp/efi/microsoft/boot/bcd Windows安装镜像:/iso/efi/boot/bootx64.efi/esp/efi/microsoft/boot/bcd Ubuntu操作系统:/esp/efi/ubuntu/shimx64.efi/esp/efi/ubuntu/grubx64.efi/esp/efi/ubuntu/grub.cfg Ubuntu安装镜像:/iso/efi/boot/bootx64.efi/iso/efi/boot/grubx64.efi/esp/boot/grub/x86_x64-efi/*及/esp/boot/grub/grub.cfg (4)加载系统核心文件:不同的启动配置文件,其指向的系统核心文件不同 7.UEFI启动盘制作须知 (1)基于《UEFI硬盘启动流程》可知,从操作系统或安装盘复制相应的文件到esp分区后,此硬盘就是UEFI启动盘 (2)为使用grub2的附加功能,将Ubuntu操作系统中的boot/grub/x86_x64-efi目录也复制到/esp/efi/ubuntu目录中(若复制到其它位置则insmod时就需要指定模块详细路径) (3)为引导镜像(如.iso或.ima或.wim等),复制ubuntu操作系统中的/usr/lib/syslinux/memdisk到/esp/efi/ubuntu中(可复制到其它任何位置反正加载时都要指定具体位置) (4)开发者希望开机启动uefishell.efi,使用者角度希望开机启动grub2,折中方案是将shimx64.efi复制重合名为bootx64.efi(即将grub2设置默认),因为可以从grub2中启动任何efi ▲:暂没实现grub2启动winpe.iso。当前,grub2只负责启动ubuntu系统和ubuntu镜像及efi文件,BCD负责启动windows及winpe.wim及winos.vhd 8.UEFI与BIOS相互转换 (0)BIOS启动盘制作:用grub4dos作为主干(即用grub4dos的引导代码作为硬盘的MBR)引导相关操作系统,详细制作流程略。 (1)BIOS转换为UEFI:不论bios硬盘如何分区及有多少个分区 MBR(001~446):被置0 DPT1(447~462):被修改为恒定值且分类类型被置为0xEE 0x00, 0x00, 0x02, 0x00,0xEE,0xFF, 0xFF, 0xFF, 0x01, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, DPT2(463~478):被置0 DPT3(479~494):被置0 DPT4(495~410):被置0 END(411~412):不变。 (2)UEFI转换为BIOS:不论uefi硬盘如何分区及有多少个分区 MBR(001~446):被修改为某系统的引导代码 DPT1(447~462):被修改为第一分区的信息数据,若无第一分区则置为0 DPT2(463~478):被修改为第二分区的信息数据,若无第二分区则置为0 DPT3(479~494):被修改为第三分区的信息数据,若无第三分区则置为0 DPT4(495~410):被修改为第四分区的信息数据,若无第四分区则置为0 END(411~412):不变。uefi模式的第五及之后的分区在bios将不能被识别,或某些分区软件直接提示不能转换为bios硬盘。 |
4.3 WinPE启动盘制作
1.WinPE.ISO目录(仿照安装镜像生成):打开从Windows安装镜像并删除所有文件后添加如下文件 bootmgr 从WindowsNT6安装镜像中获取(使bios主板能启动) bootmgr.efi 从WindowsNT6安装镜像中获取(使uefi主板能启动) boot 新建目录 boot.sdi 从WindowsNT6安装镜像中获取 winpe.wim 从第三方获取 (本质上就是windowsNT6安装镜像中install.win的精简) BCD 从WindowsNT6安装镜像中获取并作修改:设备文件由\sources\install.wim改为\boot\winpe.wim 2.BCD启动WinPE.wim:打开BCD增加一项并指定boot.sdi和winpe.wim路径即可 3.BCD启动WinPE.iso:不支持 4.grub4dos启动WinPE.wim:不支持 5.grub4dos启动WinPE.iso title winpe.iso map --mem /hitsz/iso/winpe.iso (hd32) map --e820cycles=0 ###解决蓝屏问题 map --hook chainloader (hd32) ###grub4dos不支持uefi启动,据说开发团队也不打算支持,所以抛弃grub4dos而转向grub2 6.grub2启动WinPE.wim:uefi模式下试验未成功,bios模式下未实验 7.grub2启动WinPE.iso:uefi模式下试验未成功,bios模式下未实验 |
4.4 UEFI和Grub2常用命令
1.UEFI命令 exit:退出uefishell(将执行下一uefi启动项) fsX:进入指定分区 ls [dir]:列举指定目录下的所有文件及目录 cd dir:进行指定目录 path.efi:启动指定efi文件 2.Grub2命令 halt:关机 reboot:重启 ls:列举所有分区 ls (hdX,Y):显示分区类型 ls (hdX,Y)/dir:列举指定目录下的所有文件及目录
set [var=value]:设置指定变量(包括环境变量和自定义变量)的值或显示所有变量(包括环境变量和自定义变量)的值 unset var:删除指定变量(包括环境变量和自定义变量) echo $var:显示指定变量的值,pager=1表示逐页交互显示,root表示当前所有分区,prefix表示grub.cfg所有目录
timeout:倒计时 search --file filepath --set=root:在所有分区查找指定文件并将第一次找到的该文件所在分区设为根分区 loopback loopX isopath:将指定镜像文件挂载到loopX insmod module:加载指定grub模块,如fat, ntfs, memdisk, ntldr, linux16, initrd16 chainloader filepath:链式加载指定文件 chainloader +1表示加载当前分区引导记录 chainloader (hdX,Y)+1表示加载指定分区引导记录 chainloader (hdX)+1表示加载指定硬盘主引导记录 chainloader efifilepath表示加载指定的efi文件 boot:执行引导,在内核已经加载或chainloader后执行
configfile filepath:加载配置文件 cat filepath:显示指定文件的内容 cmp file1path file2path:比较两个文件是否相同(若相同则无任何显示) |