嵌入式学习笔记(1)-Ubuntu基本操作及软件安装

1. 配置要求

1.1 CPU要求

4核8线程

1.2 内存要求

最少16GB

1.3 硬盘和显卡要求

能用就行

2. VMware及Ubuntu系统的安装

2.1 为什么需要虚拟机

​ 嵌入式Linux开发需要在Linux系统下进行,我们需要同时使用window和Linux。

​ 去官网下载VMware-workstation(收费/30天试用)。

2.2 虚拟机的创建

1、CPU分配,分配CPU的核数量。一般55分。

2、内存分配,如果有16GB以上,给虚拟机分8G。

3、硬盘,需要创建一个独立的分区,专门给虚拟机用。一般最好300G以上。

3. Ubuntu的使用

3.1 Ubuntu的终端操作与shell命令

1.目录查看:ls

​ ls -a 显示所有文件及文件夹(包括隐藏文件)

​ ls -l 显示文件及文件夹的详细信息

2.目录切换:cd

​ 注意:绝对路径和相对路径

3.当前路径显示命令:pwd

4.系统信息查看命令:uname

​ -a 显示全部信息

​ -m 显示电脑类型 例如(arm/x86_64)

5.清屏:clear

6.显示文件内容命令:cat

7.切换用户身份:sudo

8.文件拷贝:cp

9.切换用户:su

10.移动文件:mv

11.创建文件夹:mkdir

12.创建文件:touch

13.删除文件:rm

​ -r 递归删除文件夹及里面的所有内容

​ -f 强制删除

​ -l 删除时逐一询问

14.删除文件夹:rmdir

15.显示网络配置信息:ifconfig

16.重启命令:root

18.帮助命令:man / – help

19.数据同步写入磁盘命令:sync

20.查找文件命令:find

21.查找内容命令:grep

22.文件夹大小查看命令:du

23.磁盘空间检查命令:df

24.使用gedit打开某个文件的命令:gedit

25.当前的系统进程查看命令:ps

​ -aux 显示所有进程

26.进程实时运行状态查看命令:top

​ -类似于Windows的任务管理器

3.2 Ubuntu的软件安装

1.命令:sudo apt-get install — 。

2.下载相应的deb文件。

3.自己下载程序源码编码安装。

​ make/make install

3.3 Ubuntu的文件系统结构*

1.根目录“/”

所有目录都是从根目录衍生出来的

2.Ubuntu 文件系统结构

文件夹名称文件夹作用描述
/bin存放二进制可执行文件,这些命令在单用户模式下也能够使用,可以被root和一般的账号使用。
/bootUbuntu内核和启动文件,比如vmlinuz-xxx。gurb引导装载程序。
/dev设备驱动文件。
/etc存放一些系统的配置文件,比如用户账号和密码文件,各种服务的起始地址。
/home系统默认的用户文件夹,一般创建用户账户的时候,默认用户文件夹都会放到此目录下。
/lib存放库文件。
/media此目录下放置可插拔设备,比如SD卡,或者U盘就是挂载到这个目录中。
/mnt用户可使用的挂载点,如果要挂载一些额外的设备,那么就可以挂载到此处。
/opt可选的文件和程序存放目录,给第三方软件放置的目录。
/rootroot用户目录,也就是系统管理员目录。
/sbin和/bin类似,也是存放一些二进制可执行文件。sbin下面一般是系统开机过程中所需要的命令。
/srv服务相关目录。比如网络服务。
/sys记录内核信息,虚拟文件系统。
/tmp临时目录
/var存放一些变化文件,比如日志文件。
/usrusr不是user的缩写,而是UNIX Software Resource的缩写,存放于系统用户相关的文件,会占用较大的存储空间!
/proc虚拟文件系统。

3.4 Ubuntu下的磁盘管理

1.Ubuntu 磁盘文件

/dev/sd*文件,此类文件时磁盘设备文件 ,并不能直接访问磁盘,必须要将磁盘挂载到某一个目录文件下才可以访问。

/dev/sbd和/dev/sdb1时U盘设备文件。

/dev/sdb表示U盘,sdb1表示U盘的第一个分区。

2.磁盘和目录的容量查询命令

df:列出文件系统的整体磁盘使用量。主要查看文件系统的使用量。

du:评估文件系统的磁盘使用量,主要查看单个文件的大小。

3.磁盘挂载与卸载,分区和格式化。

磁盘的挂载和卸载

mount 和 umount命令

磁盘分区

fdisk

3.5 Ubuntu安装中文输入法

ubuntu 16.04 使用的是ibus输入系统,没bai有预装中文输入法,你要du自己安zhi装一下。

以中文拼音输入法为例:

1、sudo apt install ibus-pinyin
2、sudo apt install ibus-libpinyin
3、注销重新登录 或则 重启计算机
4、进入输入设置,这时候点增加输入法应该就能找到拼音输入法了,点击增加

3. 搭建开发环境

3.1、开启Ubuntu下的FTP服务

打开Ubuntu的终端窗口,然后运行:

sudo apt-get install vsftpd

等待软件安装完成

sudo vim /etc/vsftpd.conf

3.2 Ubuntu 下 NFS 和 SSH 服务开启

NFS 服务开启

​ 后面进行 Linux 驱动开发的时候需要NFS 启动,因此要先安装并开启Ubuntu 中的NFS 服
务,使用如下命令安装NFS 服务:

sudo apt-get install nfs-kernel-server rpcbind 

​ 等待安装完成,安装完成以后在用户根目录下创建一个名为“linux”的文件夹,以后所有的东西都放到这个“linux”文件夹里面,在“linux”文件夹里面新建一个名为“nfs”的文件夹
​ 我们可以在开发板上通过网络文件系统来访问 nfs 文件夹,要先配置 nfs,使用如下命令打开 nfs 配置文件

etc/exports: sudo vi /etc/exports

4. Ubuntu/Linux文件权限

​ 文件权限是指不同的用户或用户组对某个文件拥有的权限,文件的权限分为三种:

​ r:读

​ w:写

​ x:可执行。

​ 文件描述形式如下:

​ -rw-rw-r—就是文件权限,第一位表示文件类型,剩下的每三位表示一组权限。分别对应拥有者权限、拥有者所在组权限、其他用户权限。

​ 可以使用二进制表示文件权限。

​ r=4

​ w=2

​ x=1

​ a.c文件信息:

- rw- rw- r–,a.c所属用户拥有读写权限无可执行权限。组内其他用户拥有读写权限无可执行权限,其他用户仅有可读权限。

4.1 Ubuntu/Linux文件权限修改

1、修改文件权限命令

​ chmod命令

​ chmod 777 xxx 或者 chmod u+x xxx

​ -r 递归操作

2、修改文件所属用户

​ chown命令

​ sudo chown zht xxx

5. Linux连接文件

​ Linux有两种连接文件:符号连接(软连接)和硬链接,符号链接类似Windows下的快捷方式。硬链接通过文件系统的inode连接来产生新文件名,而不是产生新文件。

​ inode:记录文件属性,一个文件一个inode。inode相当于文件ID,查找文件的时候要先找到inode,然后才能读出文件的内容。

5.1 ln命令

​ ln命令用于创建连接文件:

​ ln [选项] 源文件 目标文件

​ 选项:-s 创建符号链接(软连接)

​ -f 强制创建连接文件,如果目标存在,那么先删除掉目标文件,然后再建立连接文件。

例如:ln a.out b.out

5.2 硬连接

​ 硬链接是多个文件都指向同一个inode,硬链接知识点:

​ ①、具有相同inode的多个文件互为硬链接文件,创建硬链接相当于文件实体多了入口。

​ ②、对于硬链接文件,只有删除了源文件以及对应的所有硬连接文件,文件实体才会被删除。

​ ③、根据硬链接文件的特点,我们可以通过给文件创建硬连接的方式来防止文件误删除。

​ ④、不论修改源文件还是连接文件,另一个文件的数据都会被改变。

​ ⑤、硬连接不能跨文件系统。

​ ⑥、硬连接不能连接到目录。

因为以上这些限制,硬链接其实不常用。

5.3 符号连接(软连接)

​ 符号连接类似Windows下的快捷方式,符号链接也叫做软连接,软连接要用的多。符号连接相当于创建了一个独立的文件,这个文件会让数据读取指向它连接的哪个文件的文件名。软连接的特点:

​ ①、可以连接到目录。

​ ②、可以跨文件系统。

​ ③、删除源文件以后,软连接文件也就“打不开了”。

​ ④、符号连接文件通过->来指示具体的连接文件。

​ ⑤、符号连接要使用绝对路径,否则连接出问题。

6. Linux用户

​ Linux是一个多用户操作系统,不同的用户拥有不同的权限。可以查看和操作不同的文件。 Ubuntu有三种用户:

​ 1、初次创建的用户。

​ 2、root用户

​ 3、普通用户。

​ 初次创建的用户权限比普通用户多,但是没有root用户多,初次创建的用户可以创建普通用户。

​ Linux用户记录在/etc/passwd这个文件内。

​ Linux用户密码记录在/etc/shadow这个文件内。

​ 每个用户都有一个ID,叫做UID。

6.1 Linux用户组

为了方便管理,将用户进行分组。这样就可以设置非本组人员不能访问某些文件。每个用户可以属于多个不同的组。

用户:家里有你、弟弟、妹妹个人,每个人都有自己的房间,你们三个人都是用户,你们都不能随便的乱翻别人的房间。

用户组:你们三个都是一个家庭的,也就是属于同一个用户组,你们三个可以共用厨房,书房等空间。

​ 因此:

用户和用户组的存在就是为了控制文件的访问权限的。

每个用户组都有一个ID,叫做GID。

用户组信息存储在/etc/group文件中。

6.2 创建用户和用户组

6.2.1 图形化界面创建

​ 要使用图形化界面创建用户和用户组的话就需要安装gnome-system-tools这个工具:

sudo apt-get install gnome-system-tools

6.2.2 命令创建用户和用户组

​ 添加用户:adduser命令,adduser 用户名

​ 用户查询:finger命令,finger 用户名

​ 修改用户密码:passwd命令,passwd 用户名

​ 删除用户:deluser命令,deluser 用户名

​ 添加用户组:addgroup命令,addgroup 用户组名

​ 显示组内用户名:groups命令,groups 用户组名

​ 删除用户组:delgroup命令,delgroup用户组名

7. Visual Studio Code 软件的安装和使用

7.1 Visual Studio Code 的安装

Visual Stuio Code 简介

​ Visual Stuio Code 和 Source Insight 一样,都是编辑器,Visual Studio Sode 本教程以后就简 称为 VSCode,VSCode 是微软出的一款编辑器,但是免费的。VSCode 有 Windows、Linux 和 macOS 三个版本的,是一个跨平台的编辑器。 VSCode 下载地址是:https://code.visualstudio.com/.

Linux 版本安装

​ 我们有时候也需要在 Ubuntu 下阅读代码,所以还需要在 Ubuntu 下安装 VSCode。Linux 下 的 VSCode 安装包我们也放到了开发板光盘中, 将开发板光盘中的.deb 软件包拷贝到 Ubuntu 系统中,然后使用如下命令安装:

sudo dpkg -i code_1.35.3-1552606978_amd64.deb

​ 安装完成以后搜索“Visual Studio Code”就可以找到。每次打开 VSCode 都要搜索,太麻烦了,我们可以将图标添加到 Ubuntu 桌面上,安装的所 有软件图标都在目录/usr/share/applications 中,找到 Visual Studio Code 的图标,然后点击鼠标右键,选择复制到->桌面。

7.2 Visual Studio Code 插件的安装

​ VSCode 支持多种语言,比如 C/C++、Python、C#等等,本教程我们主要用来编写 C/C++程 序的,所以需要安装 C/C++的扩展包,扩展包安装很简单.

我们需要按照的插件有下面几个:

1)、C/C++,这个肯定是必须的。

2)、C/C++ Snippets,即 C/C++重用代码块。

3)、C/C++ Advanced Lint,即 C/C++静态检测 。

4)、Code Runner,即代码运行。

5)、Include AutoComplete,即自动头文件包含。

6)、Rainbow Brackets,彩虹花括号,有助于阅读代码。

7)、One Dark Pro,VSCode 的主题。

8)、GBKtoUTF8,将 GBK 转换为 UTF8。

9)、ARM,即支持 ARM 汇编语法高亮显示。

10)、Chinese(Simplified),即中文环境。

11)、vscode-icons,VSCode 图标插件,主要是资源管理器下各个文件夹的图标。

12)、compareit,比较插件,可以用于比较两个文件的差异。

13)、DeviceTree,设备树语法插件。

14)、TabNine,一款 AI 自动补全插件,强烈推荐,谁用谁知道!

8. 开启Ubuntu的sftp服务

SH File Transfer Protocol是一个比普通FTP更为安全的文件传输协议。(参考资料:http://en.wikipedia.org/wiki/SSH_File_Transfer_Protocol)它工作在Secure Shell(SSH)上,确保文件被加密传输。

因为工作需要,我研究了一下如何在Ubuntu Server上配置SFTP,记录如下。

需求:在服务器上开通SFTP文件服务,允许某些用户上传及下载文件。但是这些用户只能使用SFTP传输文件,不能使用SSH终端访问服务器,并且SFTP不能访问系统文件(即所谓的“Jail(监狱)”)。系统管理员则既能使用SFTP传输文件,也能使用SSH远程管理服务器。

为了便于讨论,我假设我将允许sftp-users用户组内的用户使用SFTP,但不允许使用SSH Shell,且该组用户将被"监狱"(修改系统根目录)。我将在sftp-users组内创建一个用户“alice”。而我将允许ssh-users使用SFTP以及SSH。系统管理员的账户名为admin。

第01步,如果还没有安装OpenSSH服务器,先安装它。

sudo apt-get install openssh-server

第02步,为SFTP访问创建用户组,便于管理权限。

sudo addgroup sftp-users

第03步,创建SFTP用户,并配置相应权限。这里第二行的意思是将alice从所有其他用户组中移除并加入到sftp-users组,并且关闭其Shell访问。如果想深入了解usermod命令,可以使用以下"man usermod"命令查看帮助文档。

sudo adduser alice
sudo usermod -G sftp-users -s /bin/false alice那天我误将自己的账号从自己组里移除了,连sudo权限都没有了,后来用usermod -a -G caigan2015 caigan2015恢复自己组,用usermod -a -G sudo caigan2015恢复sudo权限

第04步,创建SSH用户组,并把管理员加入到该组(注意usermod中的-a参数的意思是不从其他用户组用移除)。

sudo addgroup ssh-users
sudo usermod -a -G ssh-users admin

第05步,准备“监狱”的根目录及共享目录。这里解释一下,“监狱”的根目录必须满足以下要求:所有者为root,其他任何用户都不能拥有写入权限。因此,为了让SFTP用户能够上传文件,还必须在“监狱”根目录下再创建一个普通用户能够写入的共享文件目录。为了便于管理员通过SFTP管理上传的文件,我把这个共享文件目录配置为:由admin所有,允许sftp-users读写。这样,管理员和SFTP用户组成员就都能读写这个目录了。

sudo mkdir /home/sftp_root
sudo mkdir /home/sftp_root/shared
sudo chown admin:sftp-users /home/sftp_root/shared
sudo chmod 770 /home/sftp_root/shared

第06步,修改SSH配置文件。

sudo nano /etc/ssh/sshd_config

在sshd_config文件的最后,添加以下内容:

AllowGroups ssh-users sftp-users

Match Group sftp-users

ChrootDirectory /home/sftp_root

AllowTcpForwarding no

X11Forwarding no

ForceCommand internal-sftp

这些内容的意思是:

只允许ssh-uers及sftp-users通过SSH访问系统;

针对sftp-users用户,额外增加一些设置:将“/home/sftp_root”设置为该组用户的系统根目录(因此它们将不能访问该目录之外的其他系统文件);禁止TCP Forwarding和X11 Forwarding;强制该组用户仅仅使用SFTP。

如果需要进一步了解细节,可以使用“man sshd_config”命令。这样设置之后,SSH用户组可以访问SSH,并且不受其他限制;而SFTP用户组仅能使用SFTP进行访问,而且被关进监狱目录。

第07步,重启系统以便使新配置生效。

sudo reboot now
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值