IT开发技能:系统配置与库编译


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.YYYYVersionYearMonthYearH1YearH2H=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

下载UbuntuXXXMSStore下载并备份到期望位置后卸载之

安装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

导出/导入的实质:tarvhdx之间的转换(于是若不介意vhdx可直接备份vhdx)

直接vhdx备份还原:备份的vhdx在还原时用之替换原vhdx、优点是简单快捷、缺点是vhdxtar

用导入方式安装系统:直接导入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)下载并解压ROS2XXXD:\app\ros2

(2)基于D:\app\ros2\Scripts\xxx.py安装相应的Python版本相应的路径

(3)安装OpenSSLD:\app\openssl和编译OpenCVD:\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

1.4 系统备份


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/binPath(非常重要)

(1)Qt5.9组选择msvc2015-64bitdesktop-gcc-64bit及除QtScript外所有Qt打头的库

(2)DevDes组成选择CBDebugerMinGW

(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.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文件

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.cppu8”…”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_XXXCeres_DIR后续需要加入

14)排除:WITH_CUDABUILD_CUDA_STUBSBUILD_TBBBUILD_TESTSBUILD_PER_TESTSBUILD_EXAMPLESBUILD_opencv_appsBUILD_opencv_cvv(opencv _world冲突)OGRE_DIR(ROS2引入但无效)

(4)备份须知

1)完成CMakeGenerate后备份为build.zip

2)安装并复制OpenCVDLDT中除*.pbd*.exeopencv_*外的所有到~\install\x64\vc14\bin

3)删除除build.zipinstall外后的所有并进行整体备份

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)修改源码中的updateGLupdate并注释qglColorqglClearColor

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.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语言写的

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 初始设置

(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安装提示插件

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/然后打开synapticreload即可

可以通过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)压缩数据

常用功能

常用压缩

常用选项

常用格式

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

.

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

4.2 BIOSUEFI的软件差异

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

(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负责启动windowswinpe.wimwinos.vhd

8.UEFIBIOS相互转换

(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.sdiwinpe.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.wimuefi模式下试验未成功,bios模式下未实验

7.grub2启动WinPE.isouefi模式下试验未成功,bios模式下未实验

4.4 UEFIGrub2常用命令

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:比较两个文件是否相同(若相同则无任何显示)


 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM