苏嵌嵌入式Linux实训 第2天

今天是嵌入式学习的第二天,也是正式教学开始的第一天,全程由梁老师为我们讲解,由于仅仅是新手的接触,不懂的地方还有很多,有时甚至跟不上老师的节奏,当然这也需要我们课后的复习和总结,不断积累才能不断收获!

1、课程内容

 今天的课程主要是对嵌入式开发概述讲解和嵌入式Linux C项目演示。其中最主要的也是最根本的基础需要我们掌握C语言基础以及编程基础,了解关于嵌入式系统中人工智能、芯片设计等方面的现状。从单片机的软硬件开发的片面性到认识到嵌入式的优化性和灵活性,其中操作系统OS的加入就是锦上添花,它将软件硬件完美的结合,嵌入式即是在软硬件中嵌入操作系统,相当于一个管家,协调软硬件。

苏嵌嵌入式Linux实训 第2天
嵌入式讲解图

软件(嵌入式应用开发)——>精通一门语言(C/C++);熟悉一款操作系统
操作系统(嵌入式底层开发)——>精通C语言;熟悉汇编;理解操作系统实现;熟悉硬件工作原理
硬件(嵌入式硬件开发)——>集成IC(芯片设计)

苏嵌嵌入式Linux实训 第2天
嵌入式操作系统

其中对于移动终端(设备):人工智能、大数据、云计算、物联网,这是关键所在。

PS:Linux新手命令大全链接:https://www.runoob.com/linux/linux-command-manual.html

2、操作

开始练习使用虚拟机,对Linux有初步的应用和试练。练习C语言编程。

3、问题解答

(一)嵌入式底层开发为什么选择C语言?

答:嵌入式中最关键的就是其中的操作系统,操作系统包括内核、驱动等都是使用C语言和汇编编写的,只有小部分会使用汇编语言,其余绝大部分是C语言。C在操作系统中流行在1970年代Unix出现时就开始了,现在常用的操作系统内核基本上都是由c语言编写的,所以这是历史的联系,更是成千上万程序员的联系.。

        C语言的特点:C语言具有出色的移植性,能够在多种不同体系结构的软件或硬件平台上运行;C语言具有简介紧凑、使用灵活的语法机制,并能直接访问硬件;C语言具有很高的运行效率。但其也有一定的缺陷:主要表现在数据的封装性上,并且语法限制不太严格,变量的类型约束不严格,对数组下标越界不作检查等,影响程序的安全性。其中代码的复用性差、可扩展性差、维护性差。

(二)什么是实时性?什么是硬实时、软实时?

实时就是在规定的时间内必须正确地完成操作,完成操作的时间有操作系统的因素,也有用户软件的因素。

  • 软实时操作系统:软实时操作系统对时间的限制不是十分苛刻,响应的时间可以相对延迟,即未超过最后规定时间太多的范围内,时限是一个柔性灵活的,其结果都是可以接受的,不会产生严重的后果。例如在网络中仅仅是轻微地降低了系统的吞吐量。
  • 硬实时操作系统:对于硬实时操作系统而言,不仅要求各个任务能够运行得到正确的结果,同时还必须在限定的时间内完成,这个时间是由系统本身确定的,硬实时系统有一个刚性的、不可改变的时间限制,它不允许任何超出时限的错误。超时错误会带来损害甚至导致系统失败、或者导致系统不能实现它的预期目标。这比软实时操作系统的时间约束条件严格了许多。例如,在航天领域的嵌入式实时操作系统中,如果在规定的时间内未能得出所希望的运算结果,其产生的后果将是十分严重的。

硬实时与软实时之间最关键的差别在于,软实时只能提供统计意义上的实时。

(三)Linux和unix之间的关系、联系?

  • UNIX 操作系统由肯•汤普森(Ken Thompson)和丹尼斯•里奇(Dennis Ritchie)发明。它的部分技术来源可追溯到从 1965 年开始的 Multics 工程计划,该计划由贝尔实验室、美国麻省理工学院和通用电气公司联合发起,目标是开发一种交互式的、具有多道程序处理能力的分时操作系统,以取代当时广泛使用的批处理操作系统。
  • Linux 内核最初是由李纳斯•托瓦兹(Linus Torvalds)在赫尔辛基大学读书时出于个人爱好而编写的,当时他觉得教学用的迷你版 UNIX 操作系统 Minix 太难用了,于是决定自己开发一个操作系统。李纳斯•托瓦兹没有保留 Linux 源代码的版权,公开了代码,并邀请他人一起完善 Linux。与 Windows 及其他有专利权的操作系统不同,Linux 开放源代码,任何人都可以免费使用它。

    关系:二者的关系,不是大哥和小弟,"UNIX 是 Linux 的父亲"这个说法更怡当。之所以要介绍它们的关系,是因为要告诉读者,在学习的时候,其实 Linux 与 UNIX 有很多的共通之处,简单地说,如果你已经熟练掌握了 Linux,那么再上手使用 UNIX 会非常容易。

    区别:UNIX 系统大多是与硬件配套的,也就是说,大多数 UNIX 系统如 AIX、HP-UX 等是无法安装在 x86 服务器和个人计算机上的,而 Linux 则可以运行在多种硬件平台上; UNIX 是商业软件,而 Linux 是开源软件,是免费、公开源代码的。Linux 是一个类似 Unix 的操作系统,Unix 要早于 Linux,Linux 的初衷就是要替代 UNIX,并在功能和用户体验上进行优化,所以 Linux 模仿了 UNIX(但并没有抄袭 UNIX 的源码),使得 Linux 在外观和交互上与 UNIX 非常类似。

(四)Linux主流的发行版有哪些及特点?

  • Linux Mint

Linux Mint是一个基于Ubuntu的发行版,最早于2006年由居住在爱尔兰的法国出生的IT专家Clement Lefebvre发布。最初维护一个专门为新Linux用户提供帮助,技巧和文档的Linux网站,笔者看到了开发Linux发行版的必要性,该发行版致力于解决那些技术性较强的产品的使用问题,让它们更易于使用。在他的网站上向访问者征求反馈意见之后,他继续把许多人提到的“改进的Ubuntu”或“Ubuntu完善版”的东西建立起来。注:Ubuntu就是以易用,对新手友好著称的。可想而知Mint的目标更进一步,让Linux更加的贴近了普通用户。

  • Ubuntu

Ubuntu的推出是在2004年9月首次宣布的。尽管这个项目在Linux发行版中是一个相对较新的,但是它的邮件列表很快就被热情的用户和开发人员所占领。随后的几年中,Ubuntu发展成为最受欢迎的桌面Linux发行版,并为开发易于使用和免费的桌面操作系统做出了巨大贡献,该操作系统成为市场上专有桌面操作系统强有力的竞争者。固定发布周期和支持期;具有5年安全更新的长期支持(LTS)变体;新手友好;丰富的文档,官方和用户无私贡献。

  • Debian GNU/Linux

Debian GNU / Linux于1993年首次公布。它的创始人Ian Murdock的初始想法是在空闲时间创建一个由数百名志愿者开发的完全非商业项目。当时怀疑论者远远超过乐观主义者,似乎注定要夭折收尾,但实际情况却恰恰相反。 Debian不仅幸存下来,而且还在不到十年的时间里成为了最大的Linux发行版,也是有史以来创建的最大的协作软件项目!非常稳定;卓越的质量控制;包括超过30,000个软件包;支持比任何其他Linux发行版更多的处理器体系结构。

  • Mageia

它具有最简单但功能强大的系统安装程序之一,同时还可以使用KDE或GNOME桌面和全面的语言支持。而且可以来直接从桌面安装系统,无需刻录到U盘。该发行版具有良好的软件包管理功能,具有强大的命令行选项和图形化软件管理模块,可以轻松访问数千个软件包。独特的Mageia控制中心随着每个版本的不断改进,为Linux的新手提供了一个强大的工具来配置他们的计算机的任何方面,而无需使用终端命令行.

  • Fedora

Fedora是最具创新性的分发版之一。它对Linux内核,glibc和GCC的贡献是众所周知的,它最近集成了SELinux功能,虚拟化技术,系统服务管理器,先进的日志文件系统以及其他企业级功能。

  • openSUSE

openSUSE的诞生始于1992年,当时四位德国Linux爱好者Roland Dyroff,Thomas Fehr,Hubert Mantel和Burchard Steinbild以SuSE(Software und System Entwicklung)Linux的名义推出了该项目。openSUSE拥有大量满意的用户。 它具有令人愉悦和精美的桌面环境(KDE和GNOME),卓越的系统管理工具(YaST),全面而直观的配置工具;大型软件包库,优秀的网站基础设施和印刷文档。

  • Arch Linux

Arch Linux的KISS(保持简单愚蠢)哲学是在2002年由加拿大计算机科学专业毕业生Judd Vinet在2002年推出的,几年来,它一直是一个为中级和高级Linux用户设计的边缘项目。但是它“滚动更新”,只需要安装一次,然后保持一直更新,不要从头安装新的系统。这都要感谢其强大的包管理器和一个总是最新的软件库。因此,Arch Linux的“发行版”很少,而且现在只限于一个基本的安装光盘,只有在基本系统发生相当大的变化时,才会发行新的安装介质。

Arch Linux除了拥有备受推崇的“滚动发布”更新机制之外,还以其快速和强大的软件包管理器“Pacman”而闻名,能够从源代码安装软件包,并且由于其AUR基础架构,以及经过充分测试的软件包不断增加的软件库。其高度重视的文档,以及卓越的Arch Linux手册,使得一些高级Linux用户可以自行安装和定制分发。用户可以使用的强大工具意味着发行版可以无限定制到最细微的细节,并且没有两个安装可能是相同的。

  • CentOS

CentOS于2003年底推出,是一个社区项目,目标是将红帽企业Linux(RHEL)的源代码重建为可安装的Linux发行版,并为所有包含的软件包提供及时的安全更新。更直白地说,CentOS是一个RHEL克隆版。这两个发行版之间唯一的技术差异就是品牌 – CentOS用自己的所有代码取代了所有的红帽商标和标识。其非常稳定和可靠;免费下载和使用;有7年以上的免费安全更新。
 

  • PCLinuxOS

PCLinuxOS于2003年由比尔·雷诺兹(Bill Reynolds)首先宣布,被称为“Texstar”。在创建自己的发行版之前,Texstar已经是Mandrake Linux社区用户的知名开发人员构建的最新的RPM包,并提供免费下载。在软件方面,PCLinuxOS是一个面向KDE的发行版,具有定制且始终最新版本的流行桌面环境。不断增长的软件存储库包含其他桌面,并为许多常见任务提供各种各样的桌面软件包。对于系统配置,PCLinuxOS保留了很多Mandriva优秀的控制中心,但是用APT和Synaptic(一个图形化的包管理前端)取代了它的包管理系统。

  • Slackware Linux

由Patrick Volkerding于1992年创建的Slackware Linux是现存最古老的Linux发行版。从现在停止开发的SLS项目中分离出来,Slackware 1.0拥有24个软盘,并建立在Linux内核版本0.99pl11-alpha之上。它很快成为最受欢迎的Linux发行版,据估计1995年其市场份额占所有Linux安装量的80%。随着Red Hat Linux和其他更友好的发行版的出现,其受欢迎程度急剧下降,但Slackware Linux仍然是面向更技术导向的系统管理员和桌面用户的一个备受赞赏的操作系统。

  • FreeBSD

 

FreeBSD是AT&T UNIX通过Berkeley Software Distribution(BSD)的间接后裔,它的历史可以追溯到1993年。与Linux发行版不同,Linux发行版被定义为由Linux内核和数千个软件应用程序组成的集成软件解决方案, 而FreeBSD是一个紧密集成的操作系统,由BSD内核和所谓的“用户空间”构成(因此即使没有额外的应用程序也可以使用)。一旦安装在普通的计算机系统上,这种区别就不明显了 – 就像许多Linux发行版一样,大量易于安装的(大部分)开源应用程序也是可支持FreeBSD核心。

  • deepin

deepin是基于Linux内核,以桌面应用为主的开源GNU/Linux操作系统,支持笔记本、台式机和一体机。深度操作系统(deepin)包含深度桌面环境(DDE)和近30款深度原创应用,及数款来自开源社区的应用软件,支撑广大用户日常的学习和工作。另外,通过深度商店还能够获得近千款应用软件的支持,满足您对操作系统的扩展需求。

(五)有哪些虚拟机软件?特点?

  • virtualBox

virtualBox最早是德国一家软件公司InnoTek所开发的虚拟系统软件,后来改名为Sun VirtualBox,性能有很大的提高.因为他是开源的,这是它和其他虚拟主机软件的最大不同之处,而且这款软件的功能十分强大,可以在 Linux/Mac 和 Windows 主机中运行,并支持在其中安装 Windows 、DOS/Windows 3.x、Linux (2.4和2.6)、OpenBSD等系列的客户操作系统。  

  • VMware Workstation  

这款虚拟主机软件的特点是:不需要重开机就能在同一台电脑使用好几个OS.VMware主要的功能有:  1.不需要分区或重开机就能在同一台PC上使用两种以上的操作系统.  2.完全隔离并且保护不同OS的操作环境以及所有安装在OS上面的应用软件和资料.  3.不同的OS之间还能互动操作,包括网络、周边、文件分享以及复制贴上功能.  4.有复原(Undo)功能.  5.能够设定并且随时修改操作系统的操作环境,如:内存、磁碟空间、周边设备等等.

  •  Virtual PC  

它能够让你在一台PC上同时运行多个操作系统,使用它你不用重新启动系统,只要点击鼠标便可以打开新的操作系统或是在操作系统之间进行切换。安装该软件后不用对硬盘进行重新分区或是识别,就能够非常顺利地运行你已经安装的多个操作系统,而且还能够使用拖放功能在几个虚拟PC之间共享文件和应用程序。

(六)如何解决使用userdel删除用户的问题?(2种方法)

方法一:可使用vipw命令

[email protected] www.linuxidc.com :/home# vipw  

找到之前创建的用户,用dd删除那行(记得保存:wq or :x)。  

[email protected] www.linuxidc.com :/home# vipw -s  

找到那个用户所属组,也dd干掉即可(记得保存:wq or :x)  

方法二:可使用  sudo userdel -r -f  xx

加两个参数,给他强制删除,之后可能出现警告:  

userdel: warning: can't remove /var/mail/wxt: No such file or directory

userdel: wxt home directory (/home/wxt) not found  

这个不影响结果, /etc/shadow文件下的用户名和密码信息已经被删除掉

(七)罗列根目录中所有子目录的功能及存放的文件类型

1、/bin:标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件。  

2、/sbin: 系统管理命令,这里存放的是系统管理员使用的管理程序。  

3、/tmp:公用的临时文件存储点。  

4、/lib,/lib64: 共享库文件和内核模块。  

5、/etc:系统管理和配置文件。  

6、/dev:devices的简写,所有设备的设备文件都存放于此处(设备文件也称为特殊文件)。  

7、/etc/rc.d: 启动的配置文件和脚本。  

8、/home:用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示 。    

9、/root:系统管理员的主目录。  

10、/mnt:系统提供这个目录是让用户临时挂载其他的文件系统。  

11、/lost+found:这个目录平时是空的,系统非正常关机留下“无家可归”文件就在这里。  

12、/proc:虚拟的目录,是系统内存的映射,可直接访问这个目录来获取系统信息。

13、/var:某些大文件的溢出区,比方说各种服务的日志文件;经常发生变化的文件。  

14、/usr:最庞大的目录,要用到的应用程序和文件几乎都在这个目录。  

15、/usr/bin:众多的应用程序。    

16、/usr/sbin:超级用户的一些管理程序。    

17、/usr/share/doc:Linux文档。    

18、/usr/include:Linux下开发和编译应用程序所需要的头文件。    

19、/usr/lib:常用的动态链接库和软件包的配置文件。    

20、/usr/share/man:帮助文档。    

21、/usr/src:源代码,Linux内核的源代码就放在/usr/src/linux里。    

22、/usr/local/bin:本地增加的命令。    

23、/usr/local/lib:本地增加的库根文件系统。