Ubuntu系统配置

时间:2023-03-09 09:24:48
Ubuntu系统配置

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仿真系统

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

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 BIOSUEFI

 

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包含的项数及每项占用的字节数等信息

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

当前PTH的LBA位置(对主PTH恒为1)

32 (0x20)

8 字节

另一PTH的LBA位置(对副PTH恒为总LBA数减2)

40 (0x28)

8 字节

分区可用的第一LBA位置(主PEs的最后LBA加1=LB34)

48 (0x30)

8 字节

分区可用的最后LBA位置(副PEs的第一LBA减1=LB-34)

56 (0x38)

16 字节

硬盘GUID (在UNIX及派生系统中也叫UUID)

72 (0x48)

8 字节

主PEs的LBA位置(恒为2)

80 (0x50)

4 字节

PEs包含的PTE数(即分区数)

84 (0x54)

4 字节

每个PE的尺寸(通常为128字节)

88 (0x58)

4 字节

PEs的CRC32校验码

92 (0x5C)

*

保留,必须是0(对512字节的LBA,剩余420字节)

(3)LBA2~LBA33:主PEs,每个PE用128字节描述

Offset

Length

Contents

常用分区类型GUID

EFI/ESP分区:C12A7328-F81F-11D2-BA4B-00A0C93EC93B,与操作系统无关

基本数据分区:EBD0A0A2-B9E5-4433-87C0-68B6B72699C7,对Windows和Linux相同

微软保留分区:E3C9E316-0B5C-4DB8-817D-F92DF00215AE,Windows专用

Linux交换分区:0657FD6D-A4AB-43C4-84E5-0933C84B4F4F,Linux专用

0 (0x00)

16 字节

分区类型标志GUID

16 (0x10)

16 字节

分区唯一标志GUID

32 (0x20)

8 字节

起始LBA

40 (0x28)

8 字节

终止LBA

48 (0x30)

8 字节

属性标志(如60代表只读)

56 (0x38)

72 字节

分区名(36个UTF-16字符)

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