Ubuntu 16.04.3系统VirtualBox-5.0.40使用USB设备

Ubuntu版本:16.04.3

Oracle VirtualBox版本:5.0.40

问题:

USB 2.0 is currently enabled for this virtual machine. However, this requires the Oracle VM VirtualBox Extension Pack to be installed.Please install the Extension Pack from the VirtualBox download site. After this you will be able to re- enable USB 2.0. It will be disabled in the meantime unless you cancel the current settings changes.

这是在设置启用USB时提示的错误。关于如何启用UbuntuOracle VM VirtualBoxUSB功能 (Oracle VM VirtualBox设置USB启用USB控制器启用USB 2.0 ECHI控制器)--如果你没有安 装Oracle VM VirtualBox Extension Pack的话,那么这时就会弹出一个提示框,提示上面给出的那段英文提示。

继续阅读Ubuntu 16.04.3系统VirtualBox-5.0.40使用USB设备

Ubuntu 14.04.5系统安装Docker-1.6.2操作基础镜像

执行如下命令安装:

$ sudo apt-get update

#日志位于 /var/log/upstart/docker.log
#解决无法启动 "Shutting down daemon due to errors: Error loading docker apparmor profile: exec: "/sbin/apparmor_parser": stat /sbin/apparmor_parser: no such file or directory ()"
$ sudo apt-get install apparmor

$ sudo apt-get install -y docker.io

启动服务:

$ sudo service docker start

测试服务是否正常:

$ sudo docker run hello-world

创建基础镜像:

$ cd ~

$ mkdir basic_docker

$ cd basic_docker

$ touch Dockerfile

接下来,就是Dockerfile里面的内容了:

#从基础镜像派生,基础镜像从Docker官网下载
FROM ubuntu:14.04

#镜像所有者
MAINTAINER www.mobibrw.com

#安装命令,安装镜像需要的软件
RUN apt-get update && apt-get install -y php5

构建Docker镜像:

#注意 -t 参数指定镜像名,后面可以用":"来指定版本号 比如 “-t basic_docker:1.0"
#创建好的镜像的默认存放路径为"/var/lib/docker"
$ sudo docker build -t basic_docker .

#创建完成后,查看机器上已经创建的镜像列表
$ sudo docker images

运行刚刚创建好的镜像:

#执行之后,当前Shell被切换到了Docker内部的Shell中

$ sudo docker run -t -i basic_docker /bin/bash

导出刚刚创建好的镜像:

$ sudo docker save basic_docker > basic_docker.tar

其他机器上加载我们导出的镜像:

$ sudo docker load --input basic_docker.tar

删除不再使用的镜像:

#停止所有的container,这样才能够删除其中的images
$ sudo docker stop $(sudo docker ps -a -q)
#删除所有container解除对镜像的引用
$ sudo docker rm $(sudo docker ps -a -q)

#创建完成后,查看机器上已经创建的镜像列表 
$ sudo docker images

$ sudo docker rmi ${IMAGE ID}

#想要删除untagged images,也就是那些id为<None>的image的话可以用,注意 awk部分必须是单引号'
$ sudo docker rmi $(sudo docker images | grep "^<none>" | awk '{print $3}')

如果运行时报错:

Error response from daemon: Cannot start container 915xxxxxxxxxx: [8] System error: mountpoint for devices not found

则尝试安装:

$ sudo apt-get install cgroup-bin

参考链接


Ubuntu 14.04.5编译安装OpenCV-2.4.13.5

  • 获取源代码
$ cd ~

$ git clone https://github.com/opencv/opencv.git

$ cd opencv

$ git checkout 2.4.13.5
  • 安装依赖库
$ sudo apt-get install -y cmake

#借助系统自带的opencv简化依赖安装步骤
$ sudo apt-get install -y libopencv-dev
  • 编译源代码
$ cd ~

$ cd opencv

$ mkdir build

$ cd build

$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..

$ make -j 10

如果要生成DEB安装包,则上面的命令修改成

$ cd opencv

$ mkdir build

$ cd build

$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D CPACK_BINARY_DEB=ON ..

$ make -j 10

$ sudo make install

$ sudo cpack runs

#最后在当前目录下生成DEB安装包
  • 替换已经安装的版本
$ sudo make install
  • 编译出错的处理

如果执行cmake时候出现如下错误信息

CMake Error at CMakeLists.txt:11 (message):
  

  FATAL: In-source builds are not allowed.

         You should create separate directory for build files.



-- Configuring incomplete, errors occurred!

则应该是在代码根目录下直接执行过cmake,导致根目录下生成了CMakeCache.txt,需要删除CMakeCache.txt再次执行编译即可。

相关链接


Ubuntu 14.04.5源代码编译ROS Indigo并建立自己的DEB安装源

正常情况下我们使用已经编译好的ROS安装包来安装配置默认的ROS环境,就可以比较好的完成工作了。具体参考Ubuntu14.04安装和配置ROS Indigo

但是在某些情况下,比如,我们需要替换或更新里面的某些默认安装包的版本(比如OpenCV)。

这种情况下,我们就只能重新从源代码开始编译,或者构建自己的安装源了。

$ 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 upgrade
$ sudo apt-get dist-upgrade

$ sudo apt-get install python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential

$ sudo rosdep init

$ rosdep update

$ mkdir ~/ros_catkin_ws
$ cd ~/ros_catkin_ws

$ export ROS_VER_NAME=indigo
$ export OS_VER_NAME=trusty

#如果是全部重新编译,则删除整个src目录再进行操作
$ rosinstall_generator desktop_full --rosdistro $ROS_VER_NAME --deps --wet-only --tar > $ROS_VER_NAME-desktop-full-wet.rosinstall

$ wstool init -j8 src $ROS_VER_NAME-desktop-full-wet.rosinstall

$ rosdep install --from-paths src --ignore-src --rosdistro $ROS_VER_NAME -y

$ ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release

#如果想一步到位,安装到最终目录,请执行如下命令,主要是 --install-space /opt/ros/$ROS_VER_NAME
# sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release --install-space /opt/ros/$ROS_VER_NAME

上面的操作是生成完整的文件,然后再拷贝到需要安装的最终目录(--install-space /opt/ros/$ROS_VER_NAME指定),但是并没有生成DEB格式的安装包。

如果我们需要建立自己的安装源,那么参照上面的操作,并且正常编译完成后,使用下面的步骤编译安装包:

$ export ROS_VER_NAME=indigo 
$ export OS_VER_NAME=trusty

#如果要生成deb安装包,需要按照顺序操作
$ sudo apt-get install python-bloom

#编译并安装基础核心模块
#-----------------------catkin-------------------------------
$ cd ~/ros_catkin_ws/src/catkin/

$ bloom-generate rosdebian --os-name ubuntu --os-version $OS_VER_NAME --ros-distro $ROS_VER_NAME

$ fakeroot debian/rules binary

#需要安装,后续的模块编译依赖前面编译的模块
$ sudo dpkg -i ~/ros_catkin_ws/src/ros-$ROS_VER_NAME-catkin*.deb

#部分Python模块依赖我们刚刚编译的模块,把路径加入,否在后续模块编译会报错
$ export PYTHONPATH=$PYTHONPATH:/opt/ros/indigo/lib/python2.7/dist-packages

#-----------------------genmsg-------------------------------
$ cd ~/ros_catkin_ws/src/genmsg/

$ bloom-generate rosdebian --os-name ubuntu --os-version $OS_VER_NAME --ros-distro $ROS_VER_NAME 

$ fakeroot debian/rules binary

$ sudo dpkg -i ~/ros_catkin_ws/src/ros-$ROS_VER_NAME-genmsg*.deb


#-----------------------genpy-------------------------------
$ cd ~/ros_catkin_ws/src/genpy/ 

$ bloom-generate rosdebian --os-name ubuntu --os-version $OS_VER_NAME --ros-distro $ROS_VER_NAME 

$ fakeroot debian/rules binary 

$ sudo dpkg -i ~/ros_catkin_ws/src/ros-$ROS_VER_NAME-genpy*.deb


#-----------------------gencpp------------------------------- 
$ cd ~/ros_catkin_ws/src/gencpp/ 

$ bloom-generate rosdebian --os-name ubuntu --os-version $OS_VER_NAME --ros-distro $ROS_VER_NAME 

$ fakeroot debian/rules binary 

$ sudo dpkg -i ~/ros_catkin_ws/src/ros-$ROS_VER_NAME-gencpp*.deb


#-----------------------genlisp------------------------------- 
$ cd ~/ros_catkin_ws/src/genlisp/ 

$ bloom-generate rosdebian --os-name ubuntu --os-version $OS_VER_NAME --ros-distro $ROS_VER_NAME 

$ fakeroot debian/rules binary 

$ sudo dpkg -i ~/ros_catkin_ws/src/ros-$ROS_VER_NAME-genlisp*.deb


#-----------------------message_generation------------------------------- 
$ cd ~/ros_catkin_ws/src/message_generation/

$ bloom-generate rosdebian --os-name ubuntu --os-version $OS_VER_NAME --ros-distro $ROS_VER_NAME

$ fakeroot debian/rules binary

$ sudo dpkg -i ~/ros_catkin_ws/src/ros-$ROS_VER_NAME-message-generation*.deb

#-----------------------message_runtime------------------------------- 
$ cd ~/ros_catkin_ws/src/message_runtime/

$ bloom-generate rosdebian --os-name ubuntu --os-version $OS_VER_NAME --ros-distro $ROS_VER_NAME

$ fakeroot debian/rules binary

$ sudo dpkg -i ~/ros_catkin_ws/src/ros-$ROS_VER_NAME-message-runtime*.deb

........................................................................

#-----------------------std_msgs------------------------------- 
$ cd ~/ros_catkin_ws/src/std_msgs/

$ bloom-generate rosdebian --os-name ubuntu --os-version $OS_VER_NAME --ros-distro $ROS_VER_NAME

$ fakeroot debian/rules binary

$ sudo dpkg -i ~/ros_catkin_ws/src/ros-$ROS_VER_NAME-std-msgs*.deb

至于如何建立自己的源,请参考:建立自己的apt-get源

对于替换OpenCV重新编译的情况,参考Ubuntu 14.04.5编译安装OpenCV-2.4.13.5,然后执行sudo apt-get remove libopencv-dev&&sudo apt-get autoremove && rm -rf ~/ros_catkin_ws/install_isolated 删除已经安装好的OpenCV以及临时文件,然后重新编译ROS源代码。最后可以从~/ros_catkin_ws/install_isolated/share/cv_bridge/cmake/cv_bridgeConfig.cmake中看到已经链接刚刚编译安装的OpenCV版本了。

参考链接


腾讯云挂载数据盘(Ubuntu 16.04.3 LTS)

腾讯云介绍的挂载数据盘的操作比较繁琐,如果只有一块数据盘,并且数据盘只创建一个分区,而且磁盘空间不超过2TB,可以使用下面的方法:

$ sudo parted /dev/vdb mklabe msdos

$ sudo parted /dev/vdb mkpart primary ext4 0% 100%

$ sudo mkfs.ext4 /dev/vdb1

$ sudo mkdir /data
$ sudo mount /dev/vdb1 /data

$ sudo sed -i '$a\/dev/vdb1            /data                ext4       defaults              0 0' /etc/fstab

参考链接


使用 MBR 分区表分区并格式化

Ubuntu 16.04.3 Server使用SSH登陆中文显示为乱码

最近尝试迁移向腾讯云,然后通过SSH登陆到服务器,发现编辑脚本的时候中文会显示为乱码。

服务器的版本是Ubuntu 16.04.3 Server

解决方法非常简单,执行如下命令即可:

#解决ssh登陆中文显示问题

$ sudo apt-get install language-pack-zh-hans

参考链接


Ubuntu server 中文环境方格乱码解决方法

Ubuntu 16.10/17.10无法通过/etc/rc.local开机启动应用

最新的Ubuntu 16.10/17.10上已经找不到/etc/rc.local这个文件了。但是我们很多配置都是写在这个文件里面的,因此如果直接按照systemd配置服务的话,需要修改很多。这里我们使用一个比较简单的兼容方案。

创建systemd的服务脚本

$ sudo vim /etc/systemd/system/rc-local.service

里面的内容如下:

[Unit]
 Description=/etc/rc.local Compatibility
 ConditionPathExists=/etc/rc.local

[Service]
 Type=forking
 ExecStart=/etc/rc.local start
 TimeoutSec=0
 StandardOutput=tty
 RemainAfterExit=yes
 SysVStartPriority=99

[Install]
 WantedBy=multi-user.target

激活服务

$ sudo systemctl enable rc-local.service

手工创建或者拷贝已有的/etc/rc.local,这里我们以手工创建为例子:

$ echo '#!/bin/bash\n' | sudo tee /etc/rc.local
#后面是详细的需要开机执行的

#给予脚本执行权限
$ sudo chmod +x /etc/rc.local

参考链接


树莓派系统升级Raspbian Wheezy到Raspbian Jessie(树莓派2B+)

树莓派官方已经放出了Raspbian 8 Jessie。这是Raspbian Wheezy 2015.5.5之后的一次比较大的版本更新。而老的Raspbian Wheezy版本也可以通过简单的步骤升级到Raspbian 8 Jessie且不用重新刷写镜像。下面将介绍如何升级,要知道,升级有可能会破坏现有系统,在此之前请一定注意备份好老的系统。如果你对之前的系统做的更改越小,升级将会越顺利。

1. 更新当前系统到最新
$ sudo apt-get update

$ sudo apt-get upgrade

$ sudo apt-get dist-upgrade
2. 更新软件下载源
$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

$ sudo sed -i 's/wheezy/jessie/g' /etc/apt/sources.list

$ sudo sed -i 's/#deb http:\/\/mirrordirector/deb http:\/\/mirrordirector/g' /etc/apt/sources.list
3. 升级到Raspbian 8 Jessie
$ sudo apt-get update

$ sudo apt-get upgrade

$ sudo apt-get dist-upgrade

参考链接


树莓派系统升级 Wheezy 到 Raspbian Jessie