ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:24.44KB ,
资源ID:9619842      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9619842.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(linux启动过程分析及dns服务器.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

linux启动过程分析及dns服务器.docx

1、linux启动过程分析及dns服务器长沙师范学校电子信息工程 系 计算机应用(嵌入式) 专业 09 级毕业论文(设计)题目: Linux启动过程分析及DNS服务器 姓名 盛郎平 学号 2009540830138 指导教师(签名)2011年 10 月 13 日引 言Linux 最初是由瑞典赫尔辛基大学的学生 Linus Torvalds在1991 年开发出来的,之后在 GNU的支持下,Linux 获得了巨大的发展。1个嵌入式 Linux 系统从软件角度看可以分为4个部分:引导加载程序bootloader),Linux 内核,文件系统,应用程序。其中 bootloader是系统启动或复位以后执行的

2、第1段代码,它主要用来初始化处理器及外设,然后调用 Linux 内核。Linux 内核在完成系统的初始化之后需要挂载某个文件系统做为根文件系统(Root Filesystem)。根文件系统是 Linux 系统的核心组成部分,它可以做为Linux 系统中文件和数据的存储区域。应用程序可以说是嵌入式系统的“灵魂”,它所实现的功能通常就是设计该嵌入式系统所要达到的目标。如果没有应用程序的支持,任何硬件上设计精良的嵌入式系统都没有实用意义。从以上分析我们可以看出 bootloader 和 Linux 内核在嵌入式系统中的关系和作用。bootloader在运行过程中虽然具有初始化系统和执行用户输入的命令

3、等作用,但它最根本的 功能就是为了启动 Linux 内核。在嵌入式系统开发的过程中,很大1部分精力都是花在 bootloader 和 Linux 内核的开发或移植上。如果能清楚的了解 bootloader 执行流程和 Linux 的启动过程,将有助于明确开发过程中所需的工作,从而加速嵌入式系统的开发过程。而这正是本文的所要研究的内容。第一章 绪论1.1 Linux 操作系统1.1.1 Linux 操作系统的历史Linux 操作系统刚开始时并没有被称作Linux,Linus 给他的操作系统取名为FREAX,其英文含义是怪诞的、怪物、异想天开等意思。在他将新的操作系统上载到ftp,funet。fi

4、服务器上时,管理员Ari Lemke很不喜欢这个名称。他认为既然是Linus 的操作系统就取其谐音Linux 作为该操作系统的目录吧,于是Linux 这个名称就开始流传下来。在Linus 的自传Just for Fun一书中,Linus 解释说:坦白地说,我从来没有想到过要用Linux 这个名称发布这个操作系统,因为这个名字有些太自负了。而我为最终发布版准备的是什么名字呢Freax。实际上内核代码中某些早期的Makefile - 用于描述如何编译源代码的文件 - 文件中就已经包含有Freax这个名字了,大约存在了半年左右。但其实这也没什么关系,在当时还不需要一个名字,因为我还没有向任何人发布过

5、内核代码。而Ari Lemke,他坚持要用自己的方式将内核代码放到ftp 站点上,并且非常不喜欢Freax 这个名字。他坚持要用现在这个名字(Linux),我承认当时我并没有跟他多争论。但这都是他取的名字。所以我可以光明正大地说我并不自负,或者部分坦白地说我并没有本位主义思想。但我想好吧,这也是个好名字,而且以后为这事我总能说服别人,就像我现在做的这样。1.1.2 Linux 操作系统的特点嵌入式LINUX操作系统的概念以应用为中心,以计算机技术为基础,软件、硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗要求严格的专用计算机系统,称为嵌入式系统。一个最小的嵌入式系统的基本组成为: 一

6、个用作引导的可用设施(工具); 一个具备内存管理,进程管理和定时器服务的LINUX微内核; 一个初始进程; 硬件的驱动程序; 一个或几个应用进程以提供必要的应用功效。1.1.3 嵌入式LINUX的应用嵌入式系统的涵盖面是非常广泛的,其中,家电市场包括机顶盒、数字电视、可视电话、家庭网络等信息家电;工业市场包括工业控制设备、仪器;商用市场包括掌上电脑、瘦客户机、POS终端等;通信市场包括WAP手机、无线PDA等。目前被广泛看好的是信息家电市场,国内有很多开发厂商正加大投入、开发和研制新的产品,嵌入式LINUX将是他们首选的操作系统。2.1 Linux 的安装安装Linux有二种方式:硬盘直接安装

7、和虚拟机安装。一、 硬盘直接安装把硬盘中的一部分空间开辟出来,专门用来安装Linux,通过制作一个双启动菜单,在开机时由用户选择进入Windows系统或者Linux系统。二、 虚拟机安装在Windows系统中安装一个专门的“虚拟机”软件,这个软件负责在Windows系统之上运行另一个操作系统,可以是另一个Windows,或者是Linux等任何操作系统。常用的虚拟机软件有VMware和Virtual PC,运行时相当于生成了一台没有安装任何软件的“祼机”,这台“祼机”可以看作是一台独立的、功能完全的计算机,成为虚拟机,它与安装“虚拟机”软件的计算机没有任何耦合关系,运行虚拟机的真实的PC称为宿主

8、机,甚至能够把虚拟机和宿主机搭建成一个网络。通常,可以利用“虚拟机”软件来安装体验新的操作系统,面对原有的Windows系统没有任何影响,当不需要这个虚拟机时,只要从硬盘上把虚拟机的镜像文件删掉即可。安装好VMware软件后,首先要建立一个新的虚拟机,为这个新的虚拟机指定将来要安装的操作系统、规划内存和硬盘容量、设置网络连接方式、指定虚拟机文件的存放路径等,其中比较重要的是VMware网络配置,共4种方式。如果用户拥有多个IP,适合选择侨接方式,给虚拟机分配一个对立的IP,此虚拟机就相当于网络上的一台独立计算机,与宿主机在网络上的物理地位相同;如果只有一个IP可用,则可选择网络地址转换(Net

9、work Address Translation,NAT)方式,虚拟机和宿主机共用一个IP;Host only方式可以使虚拟机和宿主机二者构成一个网络,实现数据传输;custom方式不大常用,在此不作介绍。虚拟机软件配置完成后,可以接着利用物理光驱或者光盘镜像为这个虚拟机安装一个Linux操作系统。第二章 Bootloader2.1 Bootloader的概念和作用Bootloader是嵌入式系统的引导加载程序,它是系统上电后运行的第一段程序,其作用类似于 PC 机上的 BIOS。在完成对系统的初始化任务之后,它会将非易失性存储器(通常是 Flash或 DOC 等)中的Linux 内核拷贝到

10、RAM 中去,然后跳转到内核的第一条指令处继续执行,从而启动 Linux 内核。由此可见,bootloader 和 Linux 内核有着密不可分的联系,要想清楚的了解 Linux内核的启动过程,我们必须先得认识 bootloader的执行过程,这样才能对嵌入式系统的整个启过程有清晰的掌握。2.2 Bootloader的执行过程不同的处理器上电或复位后执行的第一条指令地址并不相同,对于 ARM 处理器来说,该地址为 0x00000000。对于一般的嵌入式系统,通常把 Flash 等非易失性存储器映射到这个地址处,而 bootloader就位于该存储器的最前端,所以系统上电或复位后执行的第一段程序

11、便是 bootloader。而因为存储 bootloader的存储器不同,bootloader的执行过程也并不相同。2.3 bootloader必须具备的功能1) 初始化 RAM 因为 Linux 内核一般都会在 RAM 中运行,所以在调用 Linux 内核之前 bootloader 必须设置和初始化 RAM,为调用 Linux内核做好准备。初始化 RAM 的任务包括设置 CPU 的控制寄存器参数,以便能正常使用 RAM 以及检测RAM 大小等。 2) 初始化串口串口在 Linux 的启动过程中有着非常重要的作用,它是 Linux内核和用户交互的方式之一。Linux 在启动过程中可以将信息通过

12、串口输出,这样便可清楚的了解 Linux 的启动过程。虽然它并不是 bootloader 必须要完成的工作,但是通过串口输出信息是调试 bootloader 和Linux 内核的强有力的工具,所以一般的 bootloader 都会在执行过程中初始化一个串口做为调试端口。 3) 检测处理器类型 Bootloader在调用 Linux内核前必须检测系统的处理器类型,并将其保存到某个常量中提供给 Linux 内核。Linux 内核在启动过程中会根据该处理器类型调用相应的初始化程序。 4) 设置 Linux启动参数 Bootloader在执行过程中必须设置和初始化 Linux 的内核启动参数。目前传递

13、启动参数主要采用两种方式:即通过 struct param_struct 和struct tag(标记列表,tagged list)两种结构传递。5) 调用 Linux内核映像 Bootloader完成的最后一项工作便是调用 Linux内核。如果 Linux 内核存放在 Flash 中,并且可直接在上面运行(这里的 Flash 指 Nor Flash),那么可直接跳转到内核中去执行。但由于在 Flash 中执行代码会有种种限制,而且速度也远不及 RAM 快,所以一般的嵌入式系统都是将 Linux内核拷贝到 RAM 中,然后跳转到 RAM 中去执行。不论哪种情况,在跳到 Linux 内核执行之前

14、 CUP的寄存器必须满足以下条件:r00,r1处理器类型,r2标记列表在 RAM中的地址。第三章 Linux内核的启动过程3.1 Linux内核入口Linux 非压缩内核的入口位于文件/arch/arm/kernel/head-armv.S 中的 stext 段。该段的基地址就是压缩内核解压后的跳转地址。如果系统中加载的内核是非压缩的 Image,那么bootloader将内核从 Flash中拷贝到 RAM 后将直接跳到该地址处,从而启动 Linux 内核。不同体系结构的 Linux 系统的入口文件是不同的,而且因为该文件与具体体系结构有关,所以一般均用汇编语言编写3。对基于 ARM 处理的

15、Linux 系统来说,该文件就是head-armv.S。该程序通过查找处理器内核类型和处理器类型调用相应的初始化函数,再建立页表,最后跳转到 start_kernel()函数开始内核的初始化工作。 3.2 start_kernel函数start_kernel是所有 Linux 平台进入系统内核初始化后的入口函数,它主要完成剩余的与硬件平台相关的初始化工作,在进行一系列与内核相关的初始化后,调用第一个用户进程init 进程并等待用户进程的执行,这样整个 Linux 内核便启动完毕。3.3 结论Linux 内核是一个非常庞大的工程,经过十多年的发展,它已从从最初的几百 KB 大小发展到现在的几百兆

16、。清晰的了解它执行的每一个过程是件非常困难的事。但是在嵌入式开发过程中,我们并不需要十分清楚 linux 的内部工作机制,只要适当修改 linux 内核中那些与硬件相关的部分,就可以将 linux 移植到其它目标平台上。通过对 linux 的启动过程的分 析,我们可以看出哪些是和硬件相关的,哪些是 linux 内核内部已实现的功能,这样在移植linux 的过程中便有所针对。而 linux内核的分层设计将使 linux 的移植变得更加容易。第四章 Shell4.1 ShellLinux提供给用户使用的命令行界面称为shell,它是用C语言编写的一个程序,给用户管理和使用系统提供了一个接口和桥梁。

17、控制台输入的命令都由shell负责解释,然后调用特定的程序来完成相关操作,shell看起来很像它的英文解释那样,是一个“壳”,包裹着Linux的内核,是联系Linux系统与用户的界面,功能类似于DOS操作系统中的commandcom,但是功能比后者强大得多。下面介绍shell的几个功能。1.输入输出重定向及管道 重定向的功能同DOS的重定向功能:“”表示重定向输出,“”表示重定向输入。而管道符号,是Linux功能强大的一个体现,符号为一条竖线:“|”,用法为:Command1|Command2它的功能是第一个命令command1执行的结果作为command2的输入传给command2,例如:#

18、ls|more该命令列出当前目录中的所有文件,并把输出送给more命令作为输入,more命令会分屏显示ls的输出结果。2.后台执行命令 执行shell命令时,如果在命令后加一个“&”符号,则回车后立刻返回到命令提示符状态下,而命令会在后台执行。3.命令补全功能当输入目录名、命令名、文件名时,可以只输入前几个字母,然后按Tab键,如果关几个字母已经能完全标识出相应目标,则shell会补全这个目标的全名,如果仅凭这几个字母还不够,那么shell会列出头字母相匹配的所有目标名供用户选择。4.环境变量Shell还提供了一些环境变量,这些变量无须赋值就可以直接使用。如下表所示。HOME用户主目录PATH

19、系统路径TERM终端类型UID用户IDPWD当前目录PS1主提示符PS2辅助提示符5.脚本功能除了提供控制命令之外,shell支持编程,即编写shell脚本程序,它是Linux命令的组合,包括类似C语言的条件,循环等程序控制语句等,类似DOS批处理,但功能要强大得多。用户可以通过shell编程完成特定的工作。4.2 常用Shell命令1.基本命令(1) shutdown:关闭所有程序,根据用户指令关机或者重新启动。(2)halt:关机命令。(3)reboot:重新启动系统。(4)logout:使用户退出系统,相当于Ctrl+D组合键。(5)man:提供有关命令的帮助信息,选项为要查询文件名。2

20、.文件处理命令(1)cat:显示文本文件内容。(2)head:输出文件的开始部分。(3)tail:输出文件的结尾部分。(4)more:分屏显示文件内容,显示内容不可向上翻页。(5)less: 分屏显示文件内容,显示内容可向上翻页。(6)patch:把一个目录下的源码文件更新到新的版本。(7)source:读取Linux命令组成的文本文件。(8)mkfifo:建立管道文件命令。(9)nm:列出二进制文件或目标文件中所有的符号。(10)wc:输出文件中字节数、单词数、行数。(11)bc:计算器命令。(12)which:文件定位命令。(13)ldd:列出程序运行所需要的共享库。(14)file:显示

21、文件属性命令。3.文件目录操作命令(1)ls:显示。-l选项显示文件的详细信息,-a选项显示所有文件,包括隐含文件。(2)pwd:显示当前路径的完整名称。(3)目录切换。(4)mkdir:目录创建命令。(5)rmdir:目录删除命令。(6)mv:文件改名命令。(7)cp:文件复制命令。(8)rm:文件删除命令。(9)ln:建立连接命令。(10)touch:创建空间文件命令。(11)chown:修改文件的属主。(12)umask:设置新建文件的默认属性。(13)chmod:修改文件的权限。(14)find:文件搜索命令。(15)grep:在文件中查找指定内容。(16)sort:交逐行对文件中的内

22、容进行排序。(17)alias:为命令指定一个别名。4.进程作业控制命令(1)ps:显示当前系统中运行的进程。(2)pstree:以进程树的形式显示系统中运行的进程。(3)top:显示系统中进程的动态信息。(4)fg:将后台的作业调制前台继续运行。(5)bg:另一个暂停的后台作业继续运行。(6)jobs:查看系统当前作业。(7)kill:发送特定信号给某进程。5.网络命令(1)ping:基于ICMP协议,向远端主机发送一个数据包,如果到达远端主机的网络没有问题,就会在指害时间间隔内返回数据包,由此得知当前网络状态,以及对方主机工作是否正常。(2)ifconfig:显示或者设置网络设备。(3)i

23、fup: 命令ifup eth0相当于ifconfig eth0 up,启动网络设备eth0。(4)ifdown:命令ifup eth0相当于ifconfig eth0 down,关闭网络设备eth0。(5)netstat:显示网络连接、路由表和网络接口信息。(6)route: 查看并编辑计算机的IP路由表。(7)traceroute:显示数据包到主机间的路径。(8)nslookup:查询一台计算机的IP地址和其对应的域名。6.备份压缩命令(1)ar:归档命令。(2)tar:打包解包命令。(3)gzip:文件压缩程序。(4)gunzip:文件解压程序。(5)bzip2:文件压缩程序。(6)bu

24、nzip2:文件解压缩程序。7.磁盘管理(1)fdisk:硬盘分区命令。(2)mount:文件系统挂载命令。(3)umount:卸载文件系统。8.用户管理(1)su:用户切换命令。(2)useradd:添加用户命令。(3)passwd:修改登录密码命令。(4)userdel:删除用户命令。(5)who:显示当前系统使用者信息。(6)whoami:显示用户登录名,相当于命令id un。9.模块命令(1)lsmod:显示目前系统中正在运行的模块列表。(2)insmod:把模块插入到内核中运行。(3)rmmod:从内核中卸载模块。(4)depmod:检查模块依赖关系。(5)modprobe:根据de

25、pmod产生的依赖关系加载和卸载模块。10.其它命令(1)history:显示历史命令列表。(2)service:启动服务,或停止服务。(3)clear:清屏。(4)time:测量特定指令执行所需要的时间。(5)date:显示系统时间。(6)cal:显示当前月的日历。(7)echo:标准输出回显命令。第五章 总结随着毕业日子的逼近,毕业设计也接近了尾声。在指导老师的带领下,我终于顺利的完成了毕业设计论文。在没有做毕业设计以前觉得毕业设计只是对这几年来所学知识的单纯总结,但是通过这次做毕业设计发现自己的看法有点太片面。毕业设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。通过这次

26、毕业设计使我明白了自己原来知识还比较欠缺。自己要学习的东西还太多,以前老是觉得自己什么东西都会,什么东西都懂,有点眼高手低。通过这次毕业设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。注重理论与实践的相结合。在整个设计中我更加了解到了:一、什么是毕业论文毕业论文是高等院校毕业生提交的一份有一定学术价值的文章。它是大学生完成学业的标志性作业,是对学习成果的综合性总结和检阅。二、撰写毕业论文的目的与诺意义第一个目的是对在校大学最后一次知识的全面检验,是对学生基本知识,基本理论和基本技能掌握与提高程度的一次总测试。第二目的是培养大学生的科学研

27、究能力,使他们初步掌握进行科学研究的基本程序和方法。首先,撰写毕业论文是检验学生在校学习成果的重要措施,也是提高教学质量的重要环节。其次,通过撰写毕业论文,提高写作水平是干部队伍“四化”建设的需要。再次,提高大学生的写作水平是社会广义物质文明和精神文明建设的需要。在这次毕业设计中也使欠的同学关系更进一步了,同学之间互相帮助,有什么不懂的大家在一起商量,听听不同的看法对我们更好的理解知识,所以在这里非常感谢帮助我的同学。总而言之,知识必须通过应用才能实现基价值!有些东西以为学会了,但真正到用的时候才发现是二回事,所以我认为只有真正会用的时候才是真的学会了。在此要感谢我的指导老师李列文的悉心指导感谢老师给我的帮助。在整个设计中我懂得了许多东西,也培养了我对立工作的能力,树立了对自己工作能力的信心,相信会对今后的学习工作生活有非常重要的影响。而且大大的提高了动手能力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。虽然这个设计做的不够完美,但是在设计过程中所学到的东西是这次毕业设计的最大收获和财富,使我终身受益。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1