0.基本配置
0.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配置KeyboardInputMethodSystem为fcitx 打开bleachbit选中除PackageLists和FreeDiskSpace外的所有 打开rmvb+mkv+mp4+mp3安装提示插件 |
0.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备份系统为LiveCDba 直接用LiveCD工作时可能无权限时则执行chmod u+x file/dir 直接进行安装模式..../ubuntu160403-dzy.iso ro finstall quiet splash locale=zh_CN.UTF-8 在不同配置的电脑上安装或试用LiveCD时,驱动有问题首先更新或重装内核(此方法可联网可离线),若都不行则在软件更新界面的附加驱动中安装(此方法要联网) (7)压缩数据 压缩: tar cvpzf /root/app.tgz --exclude=/root/app/tmp1 --exclude=/root/app/tmp2 /root/app/ 解压: tar xvpfz /root/app.tgz -C /root/app/ 参数: c新建文件, v详细模式(实时输出过程信息), p保存许可, z采用gzip压缩, j采用Bzip2压缩, f说明备份文件存放的路径, C指定解压目录 |
0.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 |
0.4仿真系统
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* 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)安装 |
1.开发配置
1.1git + cmake + python
安装路径默认,自动追加path环境变量 |
1.2qt + qglviewer + boost + eigen + sophus + suitesparse
(1)安装Qt 安装路径:D:/app/qt 环境变量:D:/app/qt/5.9.4/msvc2015_64/bin到Path头(非常重要) 安装选项:Tools组全选,Qt5.9.4组选择msvc2015-64bit和Desktop-Gcc64bit及除QtScript外所有Qt打头的库 (2)安装qglviewer 用qt打开QGLViewer.pro并设置C/C++编译器为Microsoft Visual C++ Compiler 14.0 (x86_amd64) 复制QGLViewer2.lib为~\qt\version_id\msvc2015_64\lib 复制QGLViewer2.dll到~\qt\version_id\msvc2015_64\bin 复制libQGLViewer-qt5.prl和libQGLViewer-qt5.so*到~\qt\version_id\gcc_64\lib 复制QGLViewer中所有h文件和VRender到~qt\version_id\msvc2015_64_or_gcc_64\include并在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 //这些头文件中包含的关于QT的头文件要作修改,主要是增加包含目录 复制examples为~\qt\Examples\version_id\qglviewer (3)安装boost 安装路径:D:/app/boost 环境变量:D:/app/boost/lib64-msvc-14.0 删除文件:仅保留D:/app/boost/lib64-msvc-14.0中满足*mt-1_*的库(其中动态36*2和静态38共110项) 命名解析:lib静态库,vcx编译器版本,mt多线程编译,s静态调试,g诊断调试,d调试版本 (4)安装eigen和sophus:分别解压源文件到D:/app/eigen与D:/app/sophus即可 (5)安装suitesparse 编译选项 SUITESPARSE_USE_CUSTOM_BLAS_LAPACK_LIBS=ON UITESPARSE_CUSTOM_BLAS_LIB=D:/app/suitesparse/lapack_windows/x64/libblas.lib SUITESPARSE_CUSTOM_LAPACK_LIB=D:/app/suitesparse/lapack_windows/x64/liblapack.lib SUITESPARSE_INSTALL_PREFIX=D:/app/suitesparse/build/install 复制文件:将~/lapack_windows/x64中的libblas.lib和liblapack.lib复制到~/install/lib使用所有lib文件位于相同目录从而方便配置 环境变换:D:/app/suitesparse/lapack_windows/x64 关于suitesparse 由经典算法和csparse及cxsparse组成。 经典算法依赖lapack和blas(suitesparse-metis包内已含win依赖),效率高。 csparse不依赖lapack和blas,但效率低。 cxsparse是csparse超集,扩展支持复数和整型及长整型,用csparse的地方都可用之替换。 文件组成:算法库11个+配置库1个+csparse和cxsparse扩展1个,头文件包含11个(本含配置头文件),库文件包含12个(含配置头文件) lapack和lapacke区别:lapacke是c接口的lapack,因为blas和lapack本身是用fortan语言写的。 |
1.3gflags + glog + ceres
(1)安装gflags 解压后先删除BUILD,否则无法新建build目录 BUILD_gflags_nothreads_LIB=OFF CMAKE_INSTALL_PREFIX=D:/app/gflags/build/install (2)安装glog gflags_DIR=D:/app/gflags/build/install/lib/cmake/gflags CMAKE_INSTALL_PREFIX=D:/app/glog/build/install (3)安装ceres 编译选项 CXSPARSE=ON EIGENSPARSE=OFF EIGEN_INCLUDE_DIR=D:/app/eigen CXSPARSE_INCLUDE_DIR=D:/app/suitesparse/build/install/include/suitesparse CXSPARSE_LIBRARY=D:/app/suitesparse/build/install/lib/libcxsparse.lib gflags_DIR=D:/app/gflags/build/install/lib/cmake/gflags glog_DIR=D:/app/glog/build/install/lib/cmake/glog CMAKE_INSTALL_PREFIX=D:/app/ceres/build/install 注意事项:直接包含lib文件会缺少宏定义使得在Debug模式下会出错,可通过find_package生成工程找到宏后再在简易配置中加上宏 |
1.4vtk + opencv
(1)安装vtk 编译选项 CMAKE_INSTALL_PREFIX=D:/app/vtk/build/install INSTALL_BIN_DIR=D:/app/vtk/build/install/bin INSTALL_INC_DIR=D:/app/vtk/build/install/include INSTALL_LIB_DIR=D:/app/vtk/build/install/lib INSTALL_MAN_DIR=D:/app/vtk/build/install/share/man INSTALL_PKGCONFIG_DIR=D:/app/vtk/build/install/share/pkgconfig 环境变换:D:/app/vtk/build/install/bin (2)安装opencv 1)编译安装 修改文件:D:\app\opencv\contribs\modules\cvv\src\stfl\stringutils.cpp将其中u8”…”为u8”...” OPENCV_CONFIG_FILE_INCLUDE_DIR=D:/app/opencv/build OPENCV_DOWNLOAD_PATH=D:/app/opencv/sources/.cache OPENCV_ENABLE_NONFREE=ON OPENCV_EXTRA_MODULES_PATH=D:/app/opencv/contribs/modules OPENCV_WARNINGS_ARE_ERRORS=OFF 环境变量:D:\app\opencv\build\install\x64\vc14\bin 2)WITH全选:这样可引出所有第三方项(但WITH_CU*移除),不能提供的第三项opencv将自动禁用从而保证编译不出错 本地提供项:git, python3, qt,vtk 实时下载项:ffmpeg(dll音视频编解码), ippicv(lib&inc并行库), tbb接口(inc&src并行库但对win无效) tiny_dnn(inc&src卷积神经网络), xfeatures2d(训练好的神经网络模型), 位置D:\app\opencv\sources\.cache 编译源码项:图像编解码(libjasper, libjeg, libpng, jlibtiff, ligwebp, openxr), 数据压缩zlib, 数据格式protobuf, 内存监控ittnotify 3)BUILD排除:_CUDA_STUBS, _DOCS, _EXAMPLES, _TBB(不需要), _PER_TESTS, _TESTS _opencv_cuda, _opencv_cudev, _world, _contrib_world 4)3rdlib重用:复制D:\app\opencv\build\3rdparty\lib\Release\*.lib(没含ffmpeg和ippicv)到D:\app\opencv\sources\3rdparty\lib 复制D:\app\hdf5\include\zconf.h到D:\app\opencv\sources\3rdparty\zlib,只在其它库必须时才给出 |
1.5flann + qhull + pcl
(1)安装flann 编译选项 BUILD仅开:_C_BINDINGS INSTALL_BIN_DIR=D:/app/flann/build/install 环境变量: D:/app/flann/build/install/bin 生成了多个库但尚未明其义 (2)安装qhull 编译选项:INSTALL_BIN_DIR=D:/app/qhull/build/install 环境变量:D:/app/qhull/build/install/bin 生成了多个库但尚未明其义 (3)安装pcl 1)PCL赋值 CMakeLists添加set(BOOST_ROOT D:/app/boost) 为ON的:_ENABLE_SSE, _SHEARD_LIBS 2)WITH全选:这样可引出所有第三方项(但_CUDA和_DOCS移除),不能提供的第三项pcl将自动禁用从而保证编译不出错 本地提供项:qt, boost, eigen, vtk, flann, qhull 3)BUILD排除:_CUDA, _GPU, _all_in_one_installer, _apps, _examples, _global_tests 4)其它事项 INSTALL_BIN_DIR=D:/app/pcl/build/install USE_PROJECT_FOLDERS=ON CUDA相关全OFF |
2.特定配置
2.1fbow + g2o +pangolin + orbslam2
(1)源码对比:可对比原始源码与Wind版本源的区别 (2)Wind版本安装:按readme安装即可,其中要注意几点 在ORBextractor.cc中添加头文件:#include <iterator> 删除提供的Thirdparty/eigen而用D:/app/eigen 生成g2o工程打开后添加预处理选项WINDOWS 编译pangolin时会不能打开”pthread.lib”的错误无需理会 测试 解压Vocabulary/ORBvoc.txt.tar.gz到当前目录 单目KITTI:.\Examples\Monocular\Release\mono_kitti .\Vocabulary\ORBvoc.txt .\Examples\Monocular\KITTI03.yaml G:\data_odometry_gray\03 单目EuRoc: 单目TUM:.\Examples\Monocular\Release\mono_tum .\Vocabulary\ORBvoc.txt .\Examples\Monocular\TUM1.yaml G:\rgbd_dataset_freiburg1_desk 双目KITTI:.\Examples\Stereo\Release\stereo_kitti .\Vocabulary\ORBvoc.txt .\Examples\Stereo\KITTI03.yaml G:\data_odometry_gray\03 双目EuRoC: 深度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)Linux版本安装: |
2.2octomap
(1)安装octomap 编译选项 QT_QMAKE_EXECUTABLE= D:/app/qt/5.9.4/msvc2015_64/bin/qmake.exe CMAKE_INSTALL_PREFIX=D:/app/octomap/build/install OCTOVIS_OT5=TURE BUILD_OCTOVIS_SUBPROJECT=TRUE BUILD_DYNAMICETD3D_SUBPROJECT=TRUE QGLViewer_INCLUDE_DIR=D:/app/qt/5.9.4/msvc2015_64/include/QGLViewer QGLViewer_LIBRARY_DIR_WINDOWS=D:/app/qt/5.9.4/msvc2015_64/lib/QGLViewer2.lib 环境变量:D:/app/octomap/build/install/bin 源码修改 修改updateGL为update 注释qglColor和qglClearColor 移除octovis-shared工程中的SelectionBox.cpp 原继续关系:octovis::ViewerWidgetàqglviwer::GLVieweràqt::QGLWidget(deprecated by latest qt) 新继承关系:octovis::ViewerWidgetàqglviwer::GLVieweràqt::QOpenGLWidget |
9.环境变量配置
9.1window
D:\app\qt\5.9.4\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:\Users\Administrator\AppData\Local\Programs\Python\Python35 C:\Users\Administrator\AppData\Local\Programs\Python\Python35\Scripts 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.2ubuntu
(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及前面设置的密码 (2)启用共享 打开samba(若失败则先执行touch /etc/libuser.conf)->首选项->Samba用户->添加用户,如”root” 单击添加或删除共享目录,勾选”可擦写”和”显示”,并指定访问用户,只能指定前面添加的用户 #共享/home和/root并指定root访问 重启samba服务/etc/init.d/smbd restart #共享/media和/mnt并指定root访问 Windows下Ctrl+R启动运行界面,然后输入IP地址、用户名和密码,若出现”不允许一个用户”则先执行net use * /del /y |
10.3 启用FTP
#1.这是一个/etc/vsftpd.conf文件模板,配置后执行service vsftpd restart重启ftp #2.查找并打开ftpusers注释root用户和注释其它期望用于登录的账户 #注释root和ftp即可 #3.打开或新建/etc/allowed_users添加root用户和其它期望用于登录的账户 #添加root和ftp即可 #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 |
10.4 启用SSH
分为客户端安装和服务端安装,若是WIN客户端则需要软件来登录 (1)客户端安装:sudo apt-get install openssh-client,通常默认已安装 (2)服务端安装:sudo apt-get install openssh-server (3)服务端启动:sudo /etc/init.d/ssh start (4)查看启动没:sudo ps -e |grep ssh,若出现sshd则表示已启动 (5)自定义端口:通过/etc/ssh/sshd_config可更改端口Port值(默认22),修改后重启生效 (6)允许root登:打开/etc/ssh/sshd_config修改PermitRootLogin …为PermitRootLogin yes (7)停止和重启:sudo /etc/init.d/ssh stop, sudo /etc/init.d/ssh start (8)登录服务端:win下用xshell登录,linux直接在终端执行ssh usrname@192.168.0.10或ssh 192.168.0.10 |
10.5 搭建NFS
分为客户端安装和服务端安装,配置只在服务端 (1)服务端配置:gedit /etc/exports, 打开后添加两行:/root *(rw,sync,no_root_squash) /media *(rw,sync,no_root_squash) /mnt *(rw,sync,no_root_squash) *: 所有能ping到的主机可挂载 192.168.0.*: 指定网段的主机可挂载 192.168.1.12: 仅此主机能挂载 ro/rw:只读/读写 sync:同步 no_root_squash: 不降低root用户的权限 (2)重启NFS服务:/etc/init.d/nfs-kernel-server restart (3)查看服务端共享目录:showmount -e 192.168.0.10 (4)挂载共享目录到本地:mount -t nfs -o nolock -o tcp 192.168.0.10:/root /root/nfs/server1 (5)卸载共享目录从本地:umount /root/nfs/server1 |
10.6 搭建HTTP GIT Server
(1)安装工具:git git-core apache2 apache-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)重启apache:service apache2 restart (9)客户端操作:git clone http://ip/git/dzy.git |
10.7 搭配共享网络
(1)规范化网卡名 打开 /etc/default/grub将GRUB_CMDLINE_LINUX修改为GRUB_CMDLINE_LINUX=”net.ifnames=0 biosdevname=0” 执行update-grub (2)启用共享网络 服务端物理连接:外网卡与外网口连接,内网卡与交换机或客户端网卡连接 服务端网卡设置:外网卡视外网情况设置,内网卡在Ipv4 Settings的Method中选择Shared to other computes 客户端物理连接:与交换机或服务端内网卡连接 客户端网卡设置:自动获取即可,或ip设置为与服务端内网卡相同段的ip而DNS设置为与服务端外网卡相同 (3)共享鼠标键盘 安装Synergy应用:安装过程中,一台PC设置安装为服务端,其它PC设置安装为客户端 设置屏幕名称:服务端与所有客户端都要设置屏幕名称(通过单击“编辑->设置”可找到设置位置)并撤消Use SSL Encryption 管理所有屏幕:在服务端打开“服务端设置”,新建屏幕(数量等于PC台数)并设置屏幕名称(名称要与上一步骤设置的名称一一对应) |
10.9 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 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3.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 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负责启动windows及winpe.wim及winos.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.sdi和winpe.wim路径即可 (3)BCD启动ISO:不支持 (4)grub4dos启动WIM:本质上就是bootmgràbootmgràBCD,所以需要在硬盘上建立与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启动WIM:uefi模式下试验未成功,bios模式下未实验 (7)grub2启动ISO:uefi模式下试验未成功,bios模式下未实验 5.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硬盘。 (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:比较两个文件是否相同(若相同则无任何显示) |