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:比較兩個文件是否相同(若相同則無任何顯示) |