Ubuntu系統配置

1.Windows配置html

1.1 系統安裝node

1.重要連接python

Windows10 dev: https://developer.microsoft.com/en-us/windows/downloads/linux

Windows10 vm: https://developer.microsoft.com/en-us/windows/downloads/virtual-machinesios

Windows10 preview1: https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewadvancedgit

Windows10 preview2: https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewadvancedgithub

WSL release notes: https://docs.microsoft.com/en-us/windows/wsl/release-notes算法

WSL command reference: https://docs.microsoft.com/en-us/windows/wsl/referencesql

2.安裝說明shell

安裝穩定版本:將下載的虛擬機安裝爲物理機後並破解

安裝最新版本:將下載的預覽鏡像安裝爲物理機並破解

安裝優化版本:將下載藍色動力系統安裝爲物理機並破解

3.總體流程

1.啓用Administrator並登陸

2.安裝DriveLife並安裝缺失的驅動

3.設置MicrosoftStore並安裝娛樂軟件

4.啓用相關程序和功能並安裝WSL系統

5.安裝辦公軟件設計軟件及開發軟件

6.激活WindowsOS

1.2 啓用功能

SMB 1.0/CIFS File Sharing Support

SMB Direct

NFS Service

Telnet Client

Telnet Server

OpenSSH Client

OpenSSH Server

Virtual Machine Platform

Windows subsystem for Linux

Windows sandbox


1.3 安裝軟件

1.應用商店安裝

Windows Terminal

2.手動下載安裝

WindowsTerminal配置

DIYOrder: Prompt, PowerShell, Ubuntu16.04

ItemTemplate

{

"acrylicOpacity" : 0.5,

"closeOnExit" : true,

"colorScheme" : "Campbell",

"commandline" : "wsl.exe -d Ubuntu-16.04 -u root",

"cursorColor" : "#FFFFFF",

"cursorShape" : "bar",

"fontFace" : "Consolas",

"fontSize" : 10,

"guid" : "{9acb9455-ca41-5af7-950f-6bca1bc9722f}",

"historySize" : 9001,

"icon" : "ms-appx:///ProfileIcons/{9acb9455-ca41-5af7-950f-6bca1bc9722f}.png",

"name" : "Ubuntu16.04",

"padding" : "0, 0, 0, 0",

"snapOnInput" : true,

"startingDirectory" : "%USERPROFILE%",

"useAcrylic" : false

}

1.2 WSL配置

unzip ubuntu_xxx_x64.appx again to clear all cache and reboot

passwd root

0.apt-get install

update

upgrade

minicom


1.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=backkom //ip/sharedPath localPath

umount localPath


#windows10: \\ip in Explorer

#clear cache: net use * /del /y


2.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


3.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


4.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


5.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]


6.Git Sever

apt-get install git git-core apache2 apache2-utils

1./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


2./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用戶的權限


3./etc/inetd.conf應有

telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd


4./etc/ssh/sshd_config設置

PermitRootLogin as yes

PasswordAuthentication yes


5./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.4 優化與備份


2.Ubuntu配置

2.1初始設置

(1)開戶root帳號並重啓系統:

打開gedit /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf

添加greeter-show-manual-login=true

設置密碼sudo passwd root

(2)登陸root帳號並更改語言爲英語

打開gedit /etc/default/locale修改

LANG="en_US.UTF-8"

LANGUAGE="en_US:en"

(3)解決root登錄報錯:

打開gedit /root/.profile

註釋mesg n

添加tty -s && mesg n

回到終端執行init 6

(4)安裝vmwaretools

提取iso文件中的壓縮文件中的wmware-tools-distrib

進入此目錄執行./vmware-install.pl以後一路回車便可

windows共享的目錄位於/mnt/hgfs

(5)修改源: gedit /etc/apt/sources.list

deb http://mirrors.163.com/ubuntu/ xenial main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ xenial-security main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ xenial-updates main restricted universe multiverse

deb http://mirrors.163.com/ubuntu/ xenial-backports main restricted universe multiverse

#測試版源

deb http://mirrors.163.com/ubuntu/ xenial-proposed main restricted universe multiverse

#源碼

deb-src http://mirrors.163.com/ubuntu/ xenial main restricted universe multiverse

deb-src http://mirrors.163.com/ubuntu/ xenial-security main restricted universe multiverse

deb-src http://mirrors.163.com/ubuntu/ xenial-updates main restricted universe multiverse

deb-src http://mirrors.163.com/ubuntu/ xenial-backports main restricted universe multiverse

#測試版源

deb-src http://mirrors.163.com/ubuntu/ xenial-proposed main restricted universe multiverse

#Canonical 合做夥伴和附加

deb http://archive.canonical.com/ubuntu/ xenial partnerlibe

#deb http://extras.ubuntu.com/ubuntu/ xenial main

(6)安裝基本

add-apt-repository ppa:nemh/systemback

apt-get update

apt-get upgrade

apt-get dist-upgrade

apt-get install synaptic gparted systemback fcitx-table-all bleachbit adobe-flashplugin guvcview vlc audacious uget aria2 ubuntu-restricted-extras

apt-get install xrdp dconf-editor samba system-config-samba gksu vsftpd filezilla openssh-client openssh-server git git-core apache2 apache2-utils

apt-get install minicom picocom cutecom nfs-common portmap nfs-kernel-server

打開LanguageSupport配置KeyboardInputMethodSystemfcitx

打開bleachbit選中除PackageListsFreeDiskSpace外的全部

打開rmvb+mkv+mp4+mp3安裝提示插件

2.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/而後打開synapticreload便可

能夠經過dpkg -i /root/app/aptget/*.deb安裝強制安裝deb軟件(確保彼此依賴都存在)

(5)清理緩存

bleachbit: 清理垃圾

autoclean: 清理已被卸載的軟件的deb安裝包

clean: 清理全部deb安裝包

autoremove: 刪除系統認爲再也不使用的孤立軟件

remove softname: 卸載指定軟件但保留配置

remove --purge softname: 卸載指定軟件且刪除配置

synaptic: 清除殘留配置

(6)備份系統

systemback備份系統爲LiveCDba

直接用LiveCD工做時可能無權限時則執行chmod u+x file/dir

直接進行安裝模式..../ubuntu160403-dzy.iso ro finstall quiet splash locale=zh_CN.UTF-8

在不一樣配置的電腦上安裝或試用LiveCD時,驅動有問題首先更新或重裝內核(此方法可聯網可離線),若都不行則在軟件更新界面的附加驅動中安裝(此方法要聯網)

(7)壓縮數據

經常使用功能

經常使用壓縮

經常使用選項

經常使用格式

-c新建壓縮

-x解壓文件

-t查看文件

-r追加文件

-Jlmzma壓縮(後綴tar.xz)

-zgzip壓縮(後綴tar.gz)

-jbzip2壓縮(後綴tar.bz2)

-Z爲傳統壓縮(後綴tar.Z)

-f壓縮名

-v顯示過程

--exclude=path排除路徑

-C解壓位置

壓縮: tar -cvJf file.tar.xz --exclude=path1 --exclude=path2 srcPath

解壓: tar -xvJf file.tar.xz -C dstPath

壓縮用例: tar -cvzf /root/app.tgz --exclude=/root/app/tmp1 --exclude=/root/app/tmp2 /root/app/

解壓用例: tar -xvzf /root/app.tgz -C /root/app/

.

2.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

2.4仿真系統

(1)安裝ros-kinetic-desktop-full

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

sudo apt-get update

sudo apt-get install ros-kinetic-desktop-full

sudo rosdep init

rosdep update

echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc

source ~/.bashrc

(2)安裝turtlebot1~3

apt-get install ros-kinetic-turtlebot3* ros-kinetic-turtlebot*

apt-get install ros-kinetic-joy ros-kinetic-teleop-twist-joy ros-kinetic-teleop-twist-keyboard ros-kinetic-laser-proc ros-kinetic-rgbd-launch ros-kinetic-depthimage-to-laserscan ros-kinetic-rosserial-arduino ros-kinetic-rosserial-python ros-kinetic-rosserial-server ros-kinetic-rosserial-client ros-kinetic-rosserial-msgs ros-kinetic-amcl ros-kinetic-map-server ros-kinetic-move-base ros-kinetic-urdf ros-kinetic-xacro ros-kinetic-compressed-image-transport ros-kinetic-rqt-image-view ros-kinetic-gmapping ros-kinetic-navigation

echo "export TURTLEBOT3_MODEL=burger" >> ~/.bashrc echo "export TURTLEBOT3_MODEL=waffle" >> ~/.bashrc

source ~/.bashrc

Search gmapping in github and download nodelet_plugins.xml to opt/ros/kinetic/share/gmapping

<library path="lib/libslam_gmapping_nodelet">

<class name="SlamGMappingNodelet" type="SlamGMappingNodelet" base_class_type="nodelet::Nodelet">

<description>

Nodelet ROS wrapper for OpenSlam's Gmapping

</description>

</class>

</library>

For wmware: vmware setting->monitor-> disable Accelerate 3D Graphics echo "export SVGA_VGPU10=0" >> ~/.bashrc

Verify1: roslaunch turtlebot_stage turtlebot_in_stage.launch && roslaunch turtlebot_teleop keyboard_teleop.launch

Verify2: roslaunch turtlebot_gazebo turtlebot_world.launch && roslaunch turtlebot_teleop keyboard_teleop.launch

Verify3: roslaunch turtlebot3_fake turtlebot3_fake.launch && roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch //16.04 recompile and replace turtlebot3_fake_node.exe

Verify4: roslaunch turtlebot3_gazebo turtlebot3_world.launch && roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

(3)安裝hector_quadrotor

apt-get install ros-kinetic-hector* ros-kinetic-ros-control ros-kinetic-gazebo-ros-control

apt-get install ros-kinetic-hector* ros-kinetic-ros-control ros-kinetic-gazebo-ros-control

cd ~/catkin_ws/src

git clone https://github.com/tu-darmstadt-ros-pkg/hector_quadrotor

cd ~/catkin_ws/src/hector_quadrotor

git checkout kinetic-devel

cd ~/catkin_ws

catkin_make

echo "source /root/catkin_ws/devel/setup.bash" >> ~/.bashrc

source ~/.bashrc

 

roslaunch hector_quadrotor_demo outdoor_flight_gazebo.launch

rosservice call /enable_motors 1

rosrun teleop_twist_keyboard teleop_twist_keyboard.py


http://wiki.ros.org/hector_quadrotor

https://github.com/tu-darmstadt-ros-pkg

https://github.com/tu-darmstadt-ros-pkg/hector_slam

https://github.com/tu-darmstadt-ros-pkg/hector_gazebo

https://github.com/tu-darmstadt-ros-pkg/hector_quadrotor

(4)安裝

3.開發配置

3.1 git + cmake + winpython

安裝路徑默認但必須在系統盤,自動追加path環境變量

3.2 qt + boost + eigen + sophus

1.安裝Qt

(1)安裝路徑:D:/app/qt

(2)環境變量:D:/app/qt/5.9.x/msvc2015_64/binPath(很是重要)

(3)所需依賴:無

(4)安裝須知

1)Qt5.9組選擇msvc2015-64bitdesktop-gcc-64bit及除QtScript外全部Qt打頭的庫

2)DevDes組成選擇CBDebugerMinGW

3)移除*d.lib*d.prl*d.dll的庫

4)移植到第三方時用C:\Windows\System32\WindowsPowerShell\v1.0做爲目標路徑

5)移植到第三方時根據實際需求還須要將~/plugins中的某些目錄複製到與運行程序

相同的目錄,當前有:imageformats, sqldrivers, platforms

2.安裝qglviewer

(1)qt打開QGLViewer.pro,設置C/C++編譯器爲MVCM14.0(x86_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.prllibQGLViewer-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只需更新dlllib文件

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和靜態40116)

(5)補充說明:lib靜態庫,vcx編譯器版本,mt多線程編譯,s靜態調試,g診斷調試,d調試版本

4.安裝eigen:解壓源文件到D:/app/eigen

5.安裝sophus:解壓源文件D:/app/sophus

3.3 gflags + glog + ceres + suitesparse

1.安裝gflags

(1)安裝路徑:CMAKE_INSTALL_PREFIX=D:/app/gflags/build/install

(2)環境變量:無

(3)所需依賴:無

(4)安裝須知:解壓後先刪除BUILD,不然沒法新建build目錄

2.安裝glog

安裝路徑:CMAKE_INSTALL_PREFIX=D:/app/glog/build/install

環境變量:無

所需依賴:gflags_DIR=D:/app/gflags/build/install/lib/cmake/gflags

安裝須知:解壓後先刪除BUILD,不然沒法新建build目錄

3.安裝ceres

(1)安裝路徑:CMAKE_INSTALL_PREFIX=D:/app/ceres/build/install

(2)環境變量:無

(3)所需依賴

1)gflags_DIR=D:/app/gflags/build/install/lib/cmake/gflags

2)glog_DIR=D:/app/glog/build/install/lib/cmake/glog

(4)安裝須知:解壓後先刪除BUILD,不然沒法新建build目錄

(5)補充說明:直接包含lib文件會缺乏宏定義使得在Debug模式下會出錯,

可經過find_package生成工程找到宏後再在簡易配置中加上宏

4.安裝suitesparse(僅學習用而暫不做爲其它庫的依賴)

(1)安裝路徑:SUITESPARSE_INSTALL_PREFIX=D:/app/suitesparse/build/install

(2)環境變量:D:/app/suitesparse/lapack_windows/x64

(3)所需依賴:無

(4)安裝須知

1)複製~/lapack_windows/x64中的libblas.libliblapack.lib~/install/lib使以簡化配置

2)刪除~/build/install/lib64,其中的文件來源於~/lapack_windows/x64

(5)補充說明

1)suitesparseefficientcsparsecxsparse組成

2)efficient依賴lapackblas(suitesparse-metis中包含這兩個依賴),但效率高

3)csparse不依賴lapackblas,但效率低

4)cxsparsecsparse超集,擴展支持複數和整型及長整型,用csparse的地方均可用之替換

5)suitesparse算法組成:算法庫11+配置庫1+csparsecxsparse擴展庫1

6)suitesparse文件組成:頭文件包含11(含配置頭文件),庫文件包含12(含配置頭文件)

7)lapacklapacke區別:lapackec接口的lapack,由於blaslapack自己是用fortan語言寫的

3.4 vtk + opencv

1.安裝vtk

(1)安裝路徑:CMAKE_INSTALL_PREFIX=D:/app/vtk/build/install

(2)環境變量:D:/app/vtk/build/install/bin

(3)所需依賴:無

(4)安裝須知:若自動找到依賴QT則殘廢之

2.安裝opencv

(1)安裝路徑:CMAKE_INSTALL_PREFIX=D:/app/opencv/build/install

(2)環境變量:D:\app\opencv\build\install\x64\vc14\bin

(3)所需依賴:

0)BUILD_WITH_DEBUG_INFO=ON

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)GIT_EXECUTABLE=C:/Program Files/Git/cmd/git.exe

5)QT_QMAKE_EXECUTABLE=D:/app/qt/5.9.8/msvc2015_64/bin/qmake.exe

6)QT5Core_DIR=D:/app/qt/5.9.8/msvc2015_64/lib/cmake/Qt5Core

7)QT5Gui_DIR=D:/app/qt/5.9.8/msvc2015_64/lib/cmake/Qt5Gui

8)Qt5Widgets_DIR=D:/app/qt/5.9.8/msvc2015_64/lib/cmake/Qt5Widgets

9)QT5Concurrent_DIR=D:/app/qt/5.9.8/msvc2015_64/lib/cmake/Qt5Concurrent

10)QT5OpenGL_DIR=D:/app/qt/5.9.8/msvc2015_64/lib/cmake/Qt5OpenGL

11)QT5Test_DIR=D:/app/qt/5.9.8/msvc2015_64/lib/cmake/Qt5Test

12)VTK_DIR=D:/app/vtk/build/install/lib/cmake/vtk-8.2

13)gflags_DIR=D:/app/gflags/build/install/lib/cmake/gflags

14)GLOG_INCLUDE_DIR=D:/app/glog/build/install/include

15)GLOG_LIBRARY=D:/app/glog/build/install/lib/glog.lib

16)Glog_LIBS=D:/app/glog/build/install/lib/glog.lib

17)Ceres_DIREigen3_DIRBLAS_XXXOpenBLAS_XXXrealsense2_DIR

(4)安裝須知

1)修改D:\app\opencv\contribs\modules\cvv\src\stfl\stringutils.cppu8」…」u8」...」

2)選擇除WITH_CU*外的全部WITH項以引出第三方庫,找不到第三方庫會自動禁用或

報錯,若報錯則手動處理以確保須要的模塊被關聯

3)排除BUILD項:_CUDA, _DOCS, _EXAMPLES, _PER_TESTS, _TBB, TESTS, _TESTS,

_opencv_cuda, _opencv_js, _opencv _world

4)編譯安裝後刪除OpenCV.VC.dbbinmodules再備份除install之外的全部到build.zip

3.5 flann + qhull + pcl

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.安裝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

4.特定配置

4.1 octomap + orbslam2

1.安裝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.8/msvc2015_64/bin/qmake.exe

5)QGLViewer_INCLUDE_DIR=D:/app/qt/5.9.8/msvc2015_64/include/QGLViewer

6)QGLViewer_LIBRARY_DIR_WINDOWS=D:/app/qt/5.9.8/msvc2015_64/lib/QGLViewer2.lib

(4)安裝須知

1)修改源碼中的updateGLupdate並註釋qglColorqglClearColor,移除octovis-shared工程中的SelectionBox.cpp

2)繼承關係由octovis::ViewerWidgetqglviwer::GLViewerqt::QGLWidget(deprecated by latest qt)變爲octovis::ViewerWidgetqglviwer::GLViewerqt::QOpenGLWidget

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

9.環境變量配置

9.1 window

D:\app\qt\5.9.8\msvc2015_64\bin

D:\app\boost\lib64-msvc-14.0

D:\app\suitesparse\lapack_windows\x64


D:\app\vtk\build\install\bin

D:\app\opencv\build\install\x64\vc14\bin


D:\app\flann\build\install\bin

D:\app\qhull\build\install\bin

D:\app\pcl\build\install\bin


D:\app\octomap\build\install\bin

C:\Program Files\Git\cmd

C:\Program Files\CMake\bin

C:\Windows

C:\Windows\system32

C:\Windows\System32\Wbem

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

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\libnvvp

9.2 ubuntu

(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}

10.辦公配置

10.1 鏈接到Window

(1)遠程桌面:Remmina軟件,RDP遠程桌面協議,IP地址,用戶名,密碼,真彩色(32bpp)

(2)訪問共享:打開主文件,單擊左下角網絡->鏈接到服務器,輸入IP地址,用戶名,密碼便可

10.2 啓用遠程和共享

(1)啓用遠程

打開desktop sharing勾選<容許查看桌面><容許控制桌面><每次訪問確認>不勾選,勾選<須要密碼登陸>,並輸入密碼

打開dconf editor選擇org->gnome->desktop->remote-access,取消<requlre-encryption>

重啓xrdp服務service xrdp restart

Windows進入遠程桌面選擇<vnc-any><console>登陸,輸入IP和端口5900及前面設置的密碼

10.3 啓用FTP

#1.這是一個/etc/vsftpd.conf文件模板,配置後執行service vsftpd restart重啓ftp

#2.查找並打開/etc/ftpusers註釋root用戶和註釋其它指望用於登陸的帳戶 #註釋rootftp便可

#3.打開或新建/etc/allowed_users添加root用戶和其它指望用於登陸的帳戶 #添加rootftp便可

#4.打開或新建/etc/vsftpd.chroot_list添加指望不被限制在默認目錄的帳戶 #添加root便可

#5.新建/home/swap並添加權限777 #root控整個系統而ftp僅控/home/swap

#6.添加ftp帳戶:(1)cmd: deluser ftp (2)cmd: adduser ftp (3)隨後設置密碼ftp並對其它設置直接回車


listen=NO

listen_port=21

listen_ipv6=YES

use_localtime=YES

xferlog_enable=YES

dirmessage_enable=YES

connect_from_port_20=YES

secure_chroot_dir=/var/run/vsftpd/empty

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem

rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

ssl_enable=NO


#匿名用戶相關: 容許訪問, 默認目錄(不能有寫權限), 最大傳速, 上傳掩碼(默認077), 下載權限, 上傳權限, 建目錄權限, 其它權限, 無需登陸密碼,上傳文件全部權重置,上傳文件全部者

anonymous_enable=YES

anon_root=/home

anon_max_rate=0

anon_umask=000

#anon_world_readable_only=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

no_anon_password=YES

#chown_uploads=YES

#chown_username=root


#本地用戶相關:容許訪問, 默認目錄, 最大傳速, 上傳掩碼(默認077), 可寫權限

local_enable=YES

local_root=/home

local_max_rate=0

local_umask=000

write_enable=YES


#限定登陸用戶: 啓用登陸表, 設置登陸表內的用戶可登陸, 登陸表路徑

userlist_enable=YES

userlist_deny=NO

userlist_file=/etc/allowed_users


#限制訪問地點: 限制本地用戶在默認目錄,啓用不受限的本地用戶表,不受限本地用戶表路徑

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list


#其它防錯選項

seccomp_sandbox=NO

pam_service_name=vsftpd

0.6 搭建HTTP GIT Server

(1)安裝工具:git git-core apache2 apache2-utils

(2)激活功能:a2enmod cgid alias env rewrite

(3)添加配置:gedit /etc/apache2/sites-enabled/000-default.conf <VirtualHost *:80>中追加以下內容

SetEnv GIT_PROJECT_ROOT /var/www/html/git

SetEnv GIT_HTTP_EXPORT_ALL

ScriptAlias /git/ /usr/lib/git-core/git-http-backend/

 

RewriteEngine On

RewriteCond %{QUERY_STRING} service=git-receive-pack [OR]

RewriteCond %{REQUEST_URI} /git-receive-pack$

RewriteRule ^/git/ - [E=AUTHREQUIRED]

 

<Files "git-http-backend">

AuthType Basic

AuthName "Git Access"

AuthUserFile /var/www/html/.htpasswd

Require valid-user

Order deny,allow

Deny from env=AUTHREQUIRED

Satisfy any

</Files>

(4)建立用戶:htpasswd -bc /var/www/html/.htpasswd git git //c表示建立或從新初始化.htpasswd文件,b表示添加帳戶,前一個git是用戶名後一個git是密碼

(5)建立存放:mkdir /var/www/html/git

(6)建立倉庫:git init --bare /var/www/html/git/dzy.git

(7)修改權限:chown -R www-data:www-data /var/www/

(8)重啓apacheservice apache2 restart

(9)客戶端操做:git clone http://ip/git/dzy.git

10.7 搭配共享網絡

(1)規範化網卡名

打開 /etc/default/grubGRUB_CMDLINE_LINUX修改成GRUB_CMDLINE_LINUX=」net.ifnames=0 biosdevname=0」

執行update-grub

(2)啓用共享網絡

服務端物理鏈接:外網卡與外網口鏈接,內網卡與交換機或客戶端網卡鏈接

服務端網卡設置:外網卡視外網狀況設置,內網卡在Ipv4 SettingsMethod中選擇Shared to other computes

客戶端物理鏈接:與交換機或服務端內網卡鏈接

客戶端網卡設置:自動獲取便可,或ip設置爲與服務端內網卡相同段的ipDNS設置爲與服務端外網卡相同

(3)共享鼠標鍵盤

安裝Synergy應用:安裝過程當中,一臺PC設置安裝爲服務端,其它PC設置安裝爲客戶端

設置屏幕名稱:服務端與全部客戶端都要設置屏幕名稱(經過單擊「編輯->設置」可找到設置位置)並撤消Use SSL Encryption

管理全部屏幕:在服務端打開「服務端設置」,新建屏幕(數量等於PC臺數)並設置屏幕名稱(名稱要與上一步驟設置的名稱一一對應)

10.9 BIOSUEFI

1.BIOS硬盤結構

(1)LBA0:因該扇區中,引導代碼佔有絕大部分的空間,故將此扇區稱爲MBR扇區

MBR446字節,存儲系統的引導程序

PEs64字節,每16字節描述描述一個PE(Partition Entry),因此最多共4個分區

End2字節,值爲0xAA55

(2)LBA1~LBA62隱藏扇區,保留備用。

(3)LBA63:第一分區的起始位置。

(4)LBA64~LBAEnd:參見《挨踢_硬盤結構+文件系統+系統啓動+數據恢復1st.doc


2.UEFI硬盤結構

(1)LBA0MBR扇區,記錄了啓動代碼和分區信息。

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、分區可用的始末LBAPEs包含的項數及每項佔用的字節數等信息

Offset

Length

Contents

0 (0x00)

8 字節

簽名,"EFI PART",值爲0x54 52 41 50 20 49 46 45

8 (0x08)

4 字節

修訂,對GPT 1.0,值爲0x00 01 00 00

12 (0x0C)

4 字節

PTH尺寸,值爲0x00 00 00 5C = 92

16 (0x10)

4 字節


20 (0x14)

4 字節

保留,必須是0

24 (0x18)

8 字節

當前PTHLBA位置(對主PTH恆爲1)

32 (0x20)

8 字節

另外一PTHLBA位置(對副PTH恆爲總LBA數減2)

40 (0x28)

8 字節

分區可用的第一LBA位置(PEs的最後LBA1=LB34)

48 (0x30)

8 字節

分區可用的最後LBA位置(PEs的第一LBA1=LB-34)

56 (0x38)

16 字節

硬盤GUID (UNIX及派生系統中也叫UUID)

72 (0x48)

8 字節

PEsLBA位置(恆爲2)

80 (0x50)

4 字節

PEs包含的PTE(即分區數)

84 (0x54)

4 字節

每一個PE的尺寸(一般爲128字節)

88 (0x58)

4 字節

PEsCRC32校驗碼

92 (0x5C)

*

保留,必須是0(512字節的LBA,剩餘420字節)

(3)LBA2~LBA33:主PEs,每一個PE128字節描述

Offset

Length

Contents

經常使用分區類型GUID

EFI/ESP分區:C12A7328-F81F-11D2-BA4B-00A0C93EC93B,與操做系統無關

基本數據分區:EBD0A0A2-B9E5-4433-87C0-68B6B72699C7,對WindowsLinux相同

微軟保留分區:E3C9E316-0B5C-4DB8-817D-F92DF00215AEWindows專用

Linux交換分區:0657FD6D-A4AB-43C4-84E5-0933C84B4F4FLinux專用

0 (0x00)

16 字節

分區類型標誌GUID

16 (0x10)

16 字節

分區惟一標誌GUID

32 (0x20)

8 字節

起始LBA

40 (0x28)

8 字節

終止LBA

48 (0x30)

8 字節

屬性標誌(60表明只讀)

56 (0x38)

72 字節

分區名(36UTF-16字符)

(4)LBA34:第一分區的起始位置

(5)LBA-2~LBA-33:副PEs

(6)LBA-1:副PTH

3.BIOS硬盤UEFI硬盤關鍵異同點

(1)電腦主板固件程序分別:BIOSUEFI

(2)BIOS分區結構將MBRPEs存儲在了一個扇區LBA0

(3)UEFI分區結構將MBR存儲在一個扇區LBA0,將PEs存儲在多個扇區(LBA2~LBA33),還增長了PTH(存儲在LBA1扇區)

(4)UEFI必須有一個ESP分區,ESP用於存儲系統啓動相關的文件

(5)BIOS硬盤啓動過程概要

1) 開機自檢

2) 加載硬盤主引導記錄(每類系統的主引導記錄都不相同)

3) 搜索並激活系統引導文件(winnt5_ntldrwinnt6_bootmgrubuntu_)

4) 加載啓動配置文件(winnt5_boot.iniwinnt6_bcdubuntu_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

XorBoot安裝路徑:/esp/anywhere

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

XorBoot配置文件:/esp/efi/xorboot/xorboot.xor

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負責啓動windowswinpe.wimwinos.vhd


4.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啓動WIM:打開BCD增長一項並指定boot.sdiwinpe.wim路徑便可

(3)BCD啓動ISO:不支持

(4)grub4dos啓動WIM:本質上就是bootmgrbootmgrBCD,因此須要在硬盤上創建與WinPE.ISO相應的目錄結構

(5)grub4dos啓動ISO

title winpe.iso

map --mem /hitsz/iso/winpe.iso (hd32)

map --e820cycles=0 ###解決藍屏問題

map --hook

chainloader (hd32) //grub4dos不支持uefi啓動,聽說開發團隊也不打算支持,因此拋棄grub4dos而轉向grub2

(6)grub2啓動WIMuefi模式下試驗未成功,bios模式下未實驗

(7)grub2啓動ISOuefi模式下試驗未成功,bios模式下未實驗


5.UEFI/BIOS混合啓動盤製做

(0)關於BIOS啓動盤製做:用grub4dos做爲主幹(即用grub4dos的引導代碼做爲硬盤的MBR)引導相關操做系統,詳細製做流程略。

(1) BIOSUEFI的轉換:不論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)UEFIBIOS的轉換:不論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硬盤。

(3)




6.經常使用命令

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

相關文章
相關標籤/搜索