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和一般的账号使用。
/boot Ubuntu内核和启动文件,比如vmlinuz-xxx。gurb引导装载程序。
/dev 设备驱动文件。
/etc 存放一些系统的配置文件,比如用户账号和密码文件,各种服务的起始地址。
/home 系统默认的用户文件夹,一般创建用户账户的时候,默认用户文件夹都会放到此目录下。
/lib 存放库文件。
/media 此目录下放置可插拔设备,比如SD卡,或者U盘就是挂载到这个目录中。
/mnt 用户可使用的挂载点,如果要挂载一些额外的设备,那么就可以挂载到此处。
/opt 可选的文件和程序存放目录,给第三方软件放置的目录。
/root root用户目录,也就是系统管理员目录。
/sbin 和/bin类似,也是存放一些二进制可执行文件。sbin下面一般是系统开机过程中所需要的命令。
/srv 服务相关目录。比如网络服务。
/sys 记录内核信息,虚拟文件系统。
/tmp 临时目录
/var 存放一些变化文件,比如日志文件。
/usr usr不是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)-Ubuntu基本操作及软件安装相关推荐

  1. AURIX TriCore学习笔记三:Infineon Memtool软件安装与使用

    一目了然 1 简介 2 Infineon Memtool软件安装 3 Infineon Memtool软件使用 1 简介 Infineon Memtool软件是一款免费的支持Infineon AURI ...

  2. 嵌入式学习笔记——ADC模数转换器

    ADC模数转换器 前言 ADC介绍 ADC概述 ADC的数量 ADC的特性 ADC框图 芯片外部框图 芯片内部框图 转换部分框图 状态输出部分 条件触发框图 寄存器介绍 编程思路 模式选择 规则通道的 ...

  3. 嵌入式学习笔记——STM32的USART通信概述

    文章目录 前言 常用通信协议分类及其特征介绍 通信协议 通信协议分类 1.同步异步通信 2.全双工/半双工/单工 3.现场总线/板级总线 4. 串行/并行通信 5. 有线通信.无线通信 STM32通信 ...

  4. 嵌入式学习笔记——使用寄存器编程操作GPIO

    使用寄存器编程操作GPIO 前言 GPIO相关的寄存器 GPIO 端口模式寄存器 (GPIOx_MODER) (x = A..I) 位操作 GPIO 端口输出类型寄存器 (GPIOx_OTYPER) ...

  5. 【台大郭彦甫】Matlab入门教程超详细学习笔记二:基本操作与矩阵运算(附PPT链接)

    Matlab入门教程超详细学习笔记二:基本操作与矩阵运算 前言 一.基本操作 1.把matlab当作计算器使用 2.变量 3.控制格式输出 二.矩阵运算 1.矩阵 2.矩阵索引 3.使用:创建向量 4 ...

  6. cortex_m3_stm32嵌入式学习笔记(十五):待机唤醒实验(WK_UP外部中断)

    cortex_m3_stm32嵌入式学习笔记(十五):待机唤醒实验(WK_UP外部中断) https://blog.csdn.net/qq_16255321/article/details/43086 ...

  7. 嵌入式学习笔记--jlink 工具RTT使用笔记

    嵌入式学习笔记–jlink 工具RTT 使用笔记 最近有调试一个ethcat板卡的需求,板卡设计的很简洁,没有多余的调试串口,正准备飞线到单片机针脚上的时候发现了RTT 的这个工具,记录一下使用的方法 ...

  8. 嵌入式学习笔记--misc

    嵌入式学习笔记–misc 一.内核自带MISC驱动简介 misc 的意思是混合.杂项的,因此 MISC 驱动也叫做杂项驱动,也就是当我们板子上的某些外设无法进行分类的时候就可以使用 MISC 驱动. ...

  9. 基于STM32G431嵌入式学习笔记——七、定时器定时

    一.题目引入 上述为第13届蓝桥杯省赛节选内容,为了研究定时器的机理并独立书写计时函数,上述内容简化为以下要求: ①按下B4按键,LD1点亮5s后熄灭 ②按下B3按键,LD2以0.1秒为间隔切换亮灭状 ...

最新文章

  1. 小米手机无法连接eclipse调试案例
  2. 用 .NET Memory Profiler 跟踪.net 应用内存使用情况--基本应用篇
  3. Git常用命令速查表
  4. cookie获取java_java中如何获取cookie
  5. ABAP业务涉及到的相关数据库表 .
  6. 通信 / DHCP 四次握手
  7. jQuery课程介绍、Query的介绍、Query初次体验、jQuery再次体验、jQuery中的顶级对象
  8. 合奏:机器学习中唯一(几乎)免费的午餐
  9. 从JavaFX 1.3迁移到JavaFX 2.0
  10. 《Essential C++》笔记之设计一个泛型算法(一)
  11. Dell R720服务器安装Ubuntu 16.04 Server 版步骤
  12. Mysql启动报错:本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止
  13. 加快网站速度的最佳做法_(3)script脚本放在底部
  14. 获取git的当前分支名称
  15. RH850F1L 移植freeRTOS
  16. 计算机的屏幕录像,如何进行电脑屏幕录像?电脑录制屏幕视频的方法|电脑屏幕录像的图文步骤...
  17. CMOS与TTL(下)
  18. 2019互联网寒冬之面试心得
  19. 游戏中学会写代码:这些编程学习网站不容错过
  20. 《中国垒球协会》:新春贺词

热门文章

  1. 山西对口升学本科学校计算机,2019山西中职对口升学本科第一批院校录取分数线公布...
  2. iOS_使用金山快盘管理项目
  3. 应届毕业生工作7个月小结
  4. OC内存管理 -- 黄金法则
  5. 华云数据蝉联中国大数据50强 入选《2022数字化转型生态建设百佳案例》
  6. 阿里云网络解决方案架构师任江波:全球一张网,支撑游戏业务高效互联
  7. 18位身份证和组织机构代码校验ORACLE函数
  8. 编译Chromium OS
  9. 如何快速访问StackOverFlow
  10. 运动时谁还不来个姨妈:一个结合大姨妈的运动打卡小程序