目录
1. 系统说明
1.1 简介
Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds)于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它支持32位和64位硬件,能运行主要的Unix工具软件、应用程序和网络协议。
Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux有上百种不同的发行版,如基于社区开发的debian、archlinux,和基于商业开发的Red Hat Enterprise Linux、SUSE、Oracle Linux等。
目前市面上有多个不同的Linux版本,其中作为机器人开发使用最广的为Ubuntu系列,本文将以Ubuntu做详细介绍。
1.2 Linux各版本示意
1.3 Linux系统目录结构说明
Linux操作系统理念是一切皆文件。因此当我们登入Linux操作系统内部的时候看到的是各种目录和文件。
Linux系统中的所有文件存储在文件系统中,它们被组织到一个倒置的目录树中,称为文件系统层次结构。这棵树是倒置的,因为树根在该层次结构的顶部,树根的下方延伸出目录和子目录的分支。
/bin文件
这一目录中存放了供所有用户使用的完成基本维护任务的命令。其中bin是binary的缩写,表示二进制文件,通常为可执行文件。一些常用的系统命令,如cp、ls等保存在该目录中。
/boot
这里存放的是启动Linux时使用的一些核心文件。如操作系统内核、引导程序Grub等。
/dev
在此目录中包含所有的系统设备文件。从此目录可以访问各种系统设备。如CD-ROM,磁盘驱动器,调制解调器和内存等。在该目录中还包含有各种实用功能,如用于创建设备文件的MAKEDEV。
/etc
该目录中包含系统和应用软件的配置文件。
/etc/passwd
该目录中包含了系统中的用户描述信息,每行记录一个用户的信息。
/home
存储普通用户的个人文件。每个用户的主目录均在/home下以自己的用户名命名。
/lib
这个目录里存放着系统最基本的共享链接库和内核模块。共享链接库在功能上类似于Windows里的.dll文件。
/lib64
64位系统有这个文件夹,64位程序的库。
/lost+found
这并不是Linux目录结构的组成部分,而是ext3文件系统用于保存丢失文件的地方。不恰当的关机操作和磁盘错误均会导致文件丢失,这意味着这些被标注为“在使用”,但却并未列于磁盘上的数据结构上。正常情况下,引导进程会运行fsck程序,该程序能发现这些文件。除了“/”分区上的这个目录外,在每个分区上均有一个lost+found目录。
/media
可移动设备的挂载点,当前的操作系统通常会把U盘等设备自动挂载到该文件夹下。
/mnt
临时用于挂载文件系统的地方。一般情况下这个目录是空的,而在我们将要挂载分区时在这个目录下建立目录,再将我们将要访问的设备挂载在这个目录上,这样我们就可访问文件了。(注意在GNOME中,只有挂载到/media的文件夹才会显示在“计算机”中,挂载到/mnt不会做为特殊设备显示,详见自动挂载分区)
/opt
多数第三方软件默认安装到此位置,如Adobe Reader、google-earth等。并不是每个系统都会创建这个目录。
/proc
它是存在于内存中的虚拟文件系统。里面保存了内核和进程的状态信息。多为文本文件,可以直接查看。如/proc/cpuinfo保存了有关CPU的信息。
/root
这是根用户的主目录。与保留给个人用户的/home下的目录很相似,该目录中还包含仅与根用户有关的条目。
/sbin
供超级用户使用的可执行文件,里面多是系统管理命令,如fsck, reboot, shutdown, ifconfig等。
/tmp
该目录用以保存临时文件。该目录具有Sticky特殊权限,所有用户都可以在这个目录中创建、编辑文件。但只有文件拥有者才能删除文件。为了加快临时文件的访问速度,有的实现把/tmp放在内存中。
/usr
静态的用户级应用程序等,见下。
/var
动态的程序数据等,见下文。
/usr目录结构
/usr通常是一个庞大的文件夹,其下的目录结构与根目录相似,但根目录中的文件多是系统级的文件,而/usr中是用户级的文件,一般与具体的系统无关。
应注意,程序的配置文件、动态的数据文件等都不会存放到/usr,所以除了安装、卸载软件外,一般无需修改/usr中的内容。说在系统正常运行时,/usr甚至可以被只读挂载。由于这一特性,/usr常被划分在单独的分区,甚至有时多台计算机可以共享一个/usr。
/usr/bin
多数日常应用程序存放的位置。如果/usr被放在单独的分区中,Linux的单用户模式不能访问/usr/bin,所以对系统至关重要的程序不应放在此文件夹中。
/usr/include
存放C/C++头文件的目录
/usr/lib
系统的库文件
/usr/local
新装的系统中这个文件夹是空的,可以用于存放个人安装的软件。安装了本地软件的/usr/local里的目录结构与/usr相似
/usr/sbin
在单用户模式中不用的系统管理程序,如apache2等。
/usr/share
与架构无关的数据。多数软件安装在此。
/usr/X11R6
该目录用于保存运行X-Window所需的所有文件。该目录中还包含用于运行GUI要的配置文件和二进制文件。
/usr/src
内核源代码默认的放置目录
/var目录结构
/var中包括了一些数据文件,如系统日志等。/var的存放使得/usr被只读挂载成为可能。
/var/cache
应用程序的缓存文件
/var/lib
应用程序的信息、数据。如数据库的数据等都存放在此文件夹。
/var/local
/usr/local中程序的信息、数据
/var/lock
锁文件
/var/log
日志文件
/var/opt
/opt中程序的信息、数据
/var/run
正在执行着的程序的信息,如PID文件应存放于此
/var/spool
存放程序的假脱机数据(即spool data)
/var/tmp
临时文件
2. 系统安装
Ubuntu18.04系统是Linux分支下的一种,Ubuntu是在Debian基础上的衍生而来的,旨在创建一个可以为桌面和服务器提供一个最新且一贯的 Linux 系统。Ubuntu 囊括了大量从 Debian 发行版精挑细选的软件包,同时保留了 Debian 强大的软件包管理系统,以便简易的安装或彻底的删除程序。与大多数发行版附带数量巨大的可用可不用的软件不同,Ubuntu 的软件包清单只包含那些高质量的重要应用程序。 注重质量,Ubuntu提供了一个健壮、功能丰富的计算环境,既适合家用又适用于商业环境。本项目花费了大量必要的时间,努力精益求精,每6个月就会发布一个版本,以提供最新最强大的软件。
Ubuntu支持各种形形色色的架构,包括i386 (386/486/Pentium(II/III/IV)和Athlon/Duron/Sempron 处理器),AMD64(Athlon64, Opteron及64位 Intel 处理器),以及PowerPC(iBook/Powerbook, G4 and G5)等。
本文中以Ubuntu18.04为例,分别介绍系统安装、常用基础命令及ROS相关命令、系统设置等内容。
2.1 虚拟机中安装Ubuntu系统
2.1.1 VMware软件及Ubuntu镜像准备
虚拟机版本:VMware-workstation-full-16.2.4-20089737
下载路径:www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
Ubuntu镜像版本:18.04
下载路径:Ubuntu 18.04.6 LTS (Bionic Beaver)
2.1.2 VMware软件安装
VM软件安装较为简单,选择合适安装位置,根据提示操作即可。
2.1.3 虚拟机中Ubuntu系统的安装
①打开VMware软件选择“创建新的虚拟机”,在弹出的界面中选择“自定义(高级)(C)”选项,并点击“下一步”。
②选择虚拟机硬件兼容性界面中,选择默认显示属性,无需改动,如下图所示:
③安装客户机操作系统界面,选择“稍后安装操作系统(S)”选项,如下如图所示:
④选择客户机操作系统,在此环节选择“Linux(L)”,版本选择“Ubuntu 64位”,并且单击“下一步”,如下图所示
⑤命名虚拟机,虚拟机名称及位置根据个人差异进行设置。
⑥处理器配置,此处配置可以默认,如果需要更高配置此处可以进行修改,如下图所示
⑦此虚拟机的内存,根据自己的真实设备进行设置,最大不能大于真实设备的内存。如下图所示
⑧网络类型,此处选择“使用网络地址转换(NAT)(E)”选项,并且点击下一步。如下图所示
⑨选择I/O控制器类型,选择“LSI Logic(L)推荐”选项,并点击下一步。如下图所示
⑩选择虚拟磁盘类型,此处选择“SCSI(S)”,并点击下一步。如下图所示
⑪选择磁盘,在此处选择“创建新虚拟磁盘”,并点击下一步
⑫指定磁盘容量,磁盘大小选择20GB,第二步选择“将虚拟磁盘拆分未多个文件”,第三步点击下一步。如下图所示
⑬指定磁盘文件,此处根据个人选择不同进行存储即可。如下图所示
⑭ 自定义硬件,在此处选择“自定义硬件按钮”,接着选择“新CD/DVD(SATA)”,下一步在右侧选择框中选择“使用ISO镜像文件”,将文件地址修改为准备环节中下载好的Ubuntu18.04镜像文件,并点击弹出界面的“关闭”按钮,接下来点击“完成”按钮即可。如下图所示
⑮ Ubuntu18.04的虚拟机配置到此结束,后续的系统名称下载及其他软件配置根据个人需求不同就行设置即可。
3. 常用Linux命令说明
Linux中多个场景需要用到命令行操作,故在此对一些常用的基础命令及ROS命令进行说明,以便进行后续使用、开发。由于Linux中命令较多,此处仅挑选一些开发中常用的命令做说明。
3.1 系统基础命令说明
3.1.1 基础文件和目录管理
3.1.1.1 cd指令
Linux cd命令用来切换工作目录至“目录名称”。 其中“目录名称”表示可为绝对路径或相对路径。若目录名称省略,则变换至使用者的主目录(也就是登录时所在的目录)。另外,“~”也表示为主目录的意思, “.” 则是表示目前所在的目录,“..”则表示目前目录位置的上一层目录。
语法说明
cd+选项+参数
“cd”指令实例
指令 | 含义 |
cd+空格 | 进入用户主目录 |
cd+”~” | 进入用户主目录 |
cd+”-” | 返回进入此目录之前所在的目录 |
cd+”..” | 返回上级目录 |
cd+”../..” | 返回上两级目录 |
3.1.1.2 ls指令
Linux ls命令用来显示目标列表,在Linux中是使用率较高的命令。ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件。
语法表达
“ls”+选项+参数
“ls”选项说明
ls指令选项众多,此处列举为常用选项。
“-a”显示所有档案及目录;
“-C”多列显示输出结果(此为大写C);
“-n”以用户识别码和群组识别码替代其名称;
“-R”递归处理,将指定目录下的所有文件及子目录一并处理;
“-s”显示文件和目录的大小,以区块为单位;
“ls”参数说明
目录,指定要显示列表的目录,也可以是具体的文件。
“ls”指令实例
①显示当前文件夹下非隐藏文件及目录
realman@ubuntu:~/Desktop/Linux_foundation$ ls
realman realman_ROS
②显示当前目录下包括影藏文件在内的所有文件列表
realman@ubuntu:~/Desktop/Linux_foundation$ ls -a
. .. realman realman_ROS
③递归方式显示目录下的所有文件及子目录
realman@ubuntu:~/Desktop/Linux_foundation$ ls -R
.:
realman realman_ROS
./realman:
one
./realman/one:
Test_one
./realman/one/Test_one:
./realman_ROS:
④打印文件的UID和GID
realman@ubuntu:~/Desktop/Linux_foundation$ ls -n
总用量 8
drwxrwxr-x 3 1000 1000 4096 7月 31 19:24 realman
drwxrwxr-x 2 1000 1000 4096 7月 31 19:24 realman_ROS
3.1.1.3 sudo指令
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。sudo不是对shell的一个代替,它是面向每个命令的。
用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。
语法说明
sudo+选项+参数
“sudo”指令选项说明
“-h”显示指令帮助列表。
“-v”延长密码有效期限5分钟。
“-b”在后台执行指令。
“sudo”指令参数说明
指令:需要运行的指令和对应的参数。
“sudo”指令实例
①“sudo -h” 显示sudo指令的选项信息
realman@ubuntu:~/Desktop/Linux_foundation$ sudo -h
sudo - 以其他用户身份执行一条命令
usage: sudo -h | -K | -k | -V
usage: sudo -v [-AknS] [-g group] [-h host] [-p prompt] [-u user]
usage: sudo -l [-AknS] [-g group] [-h host] [-p prompt] [-U user] [-u user]
[command]
usage: sudo [-AbEHknPS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p
prompt] [-T timeout] [-u user] [VAR=value] [-i|-s] [<command>]
usage: sudo -e [-AknS] [-r role] [-t type] [-C num] [-g group] [-h host] [-p
prompt] [-T timeout] [-u user] file ...
选项:
-A, --askpass 使用助手程序进行密码提示
-b, --background 在后台运行命令
-C, --close-from=num 关闭所有 >= num 的文件描述符
-E, --preserve-env 在执行命令时保留用户环境
--preserve-env=list preserve specific environment variables
-e, --edit 编辑文件而非执行命令
-g, --group=group 以指定的用户组或 ID 执行命令
-H, --set-home 将 HOME 变量设为目标用户的主目录。
-h, --help 显示帮助消息并退出
-h, --host=host 在主机上运行命令(如果插件支持)
-i, --login 以目标用户身份运行一个登录
shell;可同时指定一条命令
-K, --remove-timestamp 完全移除时间戳文件
-k, --reset-timestamp 无效的时间戳文件
-l, --list
列出用户权限或检查某个特定命令;对于长格式,使用两次
-n, --non-interactive 非交互模式,不提示
-P, --preserve-groups 保留组向量,而非设置为目标的组向量
-p, --prompt=prompt 使用指定的密码提示
-r, --role=role 以指定的角色创建 SELinux 安全环境
-S, --stdin 从标准输入读取密码
-s, --shell 以目标用户运行
shell;可同时指定一条命令
-t, --type=type 以指定的类型创建 SELinux 安全环境
-T, --command-timeout=timeout terminate command after the specified time limit
-U, --other-user=user 在列表模式中显示用户的权限
-u, --user=user 以指定用户或 ID
运行命令(或编辑文件)
-V, --version 显示版本信息并退出
-v, --validate 更新用户的时间戳而不执行命令
-- 停止处理命令行参数
②常用指令:sudo apt-get install 需下载的软件名称(此指令为切换root用户权限并下载软件)。
realman@ubuntu:~/Desktop/Linux_foundation$ sudo apt-get install python
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
python 已经是最新版 (2.7.15~rc1-1)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 353 个软件包未被升级。
4. 常用Linux系统设置说明
4.1 下载源设置
使用Ubuntu进行开发时,需要下载多个软件,如ROS、Moveit!等等。Ubuntu系统自带的更新源下载路径在国外服务器,下载速度较慢,这种情况只需更换下载源即可。
本文基于系统安装章节部分安装完毕的系统,介绍更新源的方式。
4.1.1 备份下载源原文件
在系统桌面打开1个新的终端,在终端输入以下命令:
sudo cp /etc/apt/sources.list sources_cp.list
上述命令含义为:使用管理员权限将“ /etc/apt”文件夹下的“sources.list”文件复制在同目录下,且文件名称修改为“sources_cp.list”;.
4.1.2 更改文件权限
在上一步骤的终端内继续输入以下命令:
sudo chmod 777 /etc/apt/sources.list
使用管理员权限将“ /etc/apt”文件夹下的“sources.list”文件权限修改为‘777’,含义为可读可写可执行,此处执行此条命令含义为方便下一步修改文件内容。
4.1.3 修改文件内容
①下载vim
在终端输入以下命令,下载并安装vim编辑器
sudo apt-get install vim
②更改文件内容,此处可通过文本编辑器通过图形界面打开或者在终端输入以下命令:
vim /etc/apt/sources.list
打开文本之后将内容全部删除,添加下述合适的国内镜像源。
③国内镜像源文件路径
#阿里源地址
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
#华为源地址
deb https://repo.huaweicloud.com/ubuntu/ focal main restricted
deb https://repo.huaweicloud.com/ubuntu/ focal-updates main restricted
deb https://repo.huaweicloud.com/ubuntu/ focal universe
deb https://repo.huaweicloud.com/ubuntu/ focal-updates universe
deb https://repo.huaweicloud.com/ubuntu/ focal-backports main restricted universe
deb https://repo.huaweicloud.com/ubuntu/ focal-security main restricted
deb https://repo.huaweicloud.com/ubuntu/ focal-security universe
#中科大源地址
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
#163源地址
deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
#清华源地址
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe ultiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe ultiverse
4.1.4更新系统软件源地址
修改完毕下载源之后输入以下命令更新下载源,等待更新完毕即可:
sudo apt-get update
4.2 开发板设置本地IP
4.2.1 网线连接设备
使用网线连接jetson NX与机械臂,如下图所示:
4.2.2 修改上位机IPV4 IP
①测试是否可连接。网线连接机械臂之后,在桌面打开终端输入命令“ping 192.168.1.18”,如不可正常通信,可按照下述步骤进行设置。
②在Ubuntu桌面点击网络,打开“编辑连接”界面。
③单击“编辑连接”界面左下角“+”号按钮,添加“以太网”类型。
④双击打开以太网编辑界面,依次选择“IPV4设置”-->“手动设置IP”-->“增加”-->填写IP及网关信息-->“保存设置”。
⑤桌面打开终端,输入“ping 192.168.1.18”,此时终端输出为下图所示,说明连接成功。