Linux启动过程分析与DNS服务器毕业论文.docx
- 文档编号:818995
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:10
- 大小:23.41KB
Linux启动过程分析与DNS服务器毕业论文.docx
《Linux启动过程分析与DNS服务器毕业论文.docx》由会员分享,可在线阅读,更多相关《Linux启动过程分析与DNS服务器毕业论文.docx(10页珍藏版)》请在冰豆网上搜索。
Linux启动过程分析与DNS服务器毕业论文
毕业论文(设计)
题目:
Linux启动过程分析及DNS服务器
引言
Linux最初是由瑞典赫尔辛基大学的学生LinusTorvalds在1991年开发出来的,之后在GNU的支持下,Linux获得了巨大的发展。
1个嵌入式Linux系统从软件角度看可以分为4个部分:
引导加载程序bootloader),Linux核,文件系统,应用程序。
其中bootloader是系统启动或复位以后执行的第1段代码,它主要用来初始化处理器及外设,然后调用Linux核。
Linux核在完成系统的初始化之后需要挂载某个文件系统做为根文件系统(RootFilesystem)。
根文件系统是Linux系统的核心组成部分,它可以做为Linux系统中文件和数据的存储区域。
应用程序可以说是嵌入式系统的“灵魂”,它所实现的功能通常就是设计该嵌入式系统所要达到的目标。
如果没有应用程序的支持,任何硬件上设计精良的嵌入式系统都没有实用意义。
从以上分析我们可以看出bootloader和Linux核在嵌入式系统中的关系和作用。
bootloader在运行过程中虽然具有初始化系统和执行用户输入的命令等作用,但它最根本的功能就是为了启动Linux核。
在嵌入式系统开发的过程中,很大1部分精力都是花在bootloader和Linux核的开发或移植上。
如果能清楚的了解bootloader执行流程和Linux的启动过程,将有助于明确开发过程中所需的工作,从而加速嵌入式系统的开发过程。
而这正是本文的所要研究的容。
第一章绪论3
1.1Linux操作系统3
1.1.1Linux操作系统的历史3
1.1.2Linux操作系统的特点4
1.1.3嵌入式LINUX的应用5
2.1Linux的安装5
第二章Bootloader7
2.1Bootloader的概念和作用7
2.2Bootloader的执行过程8
2.3bootloader必须具备的功能8
第三章Linux核的启动过程10
3.1Linux核入口10
3.2start_kernel函数11
3.3结论11
第四章Shell12
4.1Shell12
4.2常用Shell命令14
第五章总结19
第一章绪论
1.1Linux操作系统
1.1.1Linux操作系统的历史
Linux操作系统刚开始时并没有被称作Linux,Linus给他的操作系统取名为FREAX,其英文含义是怪诞的、怪物、异想天开等意思。
在他将新的操作系统上载到ftp,funet。
fi服务器上时,管理员AriLemke很不喜欢这个名称。
他认为既然是Linus的操作系统就取其谐音Linux作为该操作系统的目录吧,于是Linux这个名称就开始流传下来。
在Linus的自传《JustforFun》一书中,Linus解释说:
"坦白地说,我从来没有想到过要用Linux这个名称发布这个操作系统,因为这个名字有些太自负了。
而我为最终发布版准备的是什么名字呢Freax。
实际上核代码中某些早期的Makefile-用于描述如何编译源代码的文件-文件中就已经包含有"Freax"这个名字了,大约存在了半年左右。
但其实这也没什么关系,在当时还不需要一个名字,因为我还没有向任何人发布过核代码。
而AriLemke,他坚持要用自己的方式将核代码放到ftp站点上,并且非常不喜欢Freax这个名字。
他坚持要用现在这个名字(Linux),我承认当时我并没有跟他多争论。
但这都是他取的名字。
所以我可以光明正说我并不自负,或者部分坦白地说我并没有本位主义思想。
但我想好吧,这也是个好名字,而且以后为这事我总能说服别人,就像我现在做的这样。
"
1.1.2Linux操作系统的特点
嵌入式LINUX操作系统的概念
以应用为中心,以计算机技术为基础,软件、硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗要求严格的专用计算机系统,称为嵌入式系统。
一个最小的嵌入式系统的基本组成为:
①一个用作引导的可用设施(工具);②一个具备存管理,进程管理和定时器服务的LINUX微核;③一个初始进程;④硬件的驱动程序;⑤一个或几个应用进程以提供必要的应用功效。
1.1.3嵌入式LINUX的应用
嵌入式系统的涵盖面是非常广泛的,其中,家电市场包括机顶盒、数字电视、可视、家庭网络等信息家电;工业市场包括工业控制设备、仪器;商用市场包括掌上电脑、瘦客户机、POS终端等;通信市场包括WAP手机、无线PDA等。
目前被广泛看好的是信息家电市场,国有很多开发厂商正加大投入、开发和研制新的产品,嵌入式LINUX将是他们首选的操作系统。
2.1Linux的安装
安装Linux有二种方式:
硬盘直接安装和虚拟机安装。
一、硬盘直接安装
把硬盘中的一部分空间开辟出来,专门用来安装Linux,通过制作一个双启动菜单,在开机时由用户选择进入Windows系统或者Linux系统。
二、虚拟机安装
在Windows系统中安装一个专门的“虚拟机”软件,这个软件负责在Windows系统之上运行另一个操作系统,可以是另一个Windows,或者是Linux等任何操作系统。
常用的虚拟机软件有VMware和VirtualPC,运行时相当于生成了一台没有安装任何软件的“祼机”,这台“祼机”可以看作是一台独立的、功能完全的计算机,成为虚拟机,它与安装“虚拟机”软件的计算机没有任何耦合关系,运行虚拟机的真实的PC称为宿主机,甚至能够把虚拟机和宿主机搭建成一个网络。
通常,可以利用“虚拟机”软件来安装体验新的操作系统,面对原有的Windows系统没有任何影响,当不需要这个虚拟机时,只要从硬盘上把虚拟机的镜像文件删掉即可。
安装好VMware软件后,首先要建立一个新的虚拟机,为这个新的虚拟机指定将来要安装的操作系统、规划存和硬盘容量、设置网络连接方式、指定虚拟机文件的存放路径等,其中比较重要的是VMware网络配置,共4种方式。
如果用户拥有多个IP,适合选择侨接方式,给虚拟机分配一个对立的IP,此虚拟机就相当于网络上的一台独立计算机,与宿主机在网络上的物理地位相同;如果只有一个IP可用,则可选择网络地址转换(NetworkAddressTranslation,NAT)方式,虚拟机和宿主机共用一个IP;Hostonly方式可以使虚拟机和宿主机二者构成一个网络,实现数据传输;custom方式不大常用,在此不作介绍。
虚拟机软件配置完成后,可以接着利用物理光驱或者光盘镜像为这个虚拟机安装一个Linux操作系统。
第二章Bootloader
2.1Bootloader的概念和作用
Bootloader是嵌入式系统的引导加载程序,它是系统上电后运行的第一段程序,其作用类似于PC机上的BIOS。
在完成对系统的初始化任务之后,它会将非易失性存储器(通常是Flash或DOC等)中的Linux核拷贝到RAM中去,然后跳转到核的第一条指令处继续执行,从而启动Linux核。
由此可见,bootloader和Linux核有着密不可分的联系,要想清楚的了解Linux核的启动过程,我们必须先得认识bootloader的执行过程,这样才能对嵌入式系统的整个启过程有清晰的掌握。
2.2Bootloader的执行过程
不同的处理器上电或复位后执行的第一条指令地址并不相同,对于ARM处理器来说,该地址为0x00000000。
对于一般的嵌入式系统,通常把Flash等非易失性存储器映射到这个地址处,而bootloader就位于该存储器的最前端,所以系统上电或复位后执行的第一段程序便是bootloader。
而因为存储bootloader的存储器不同,bootloader的执行过程也并不相同。
2.3bootloader必须具备的功能
1)初始化RAM
因为Linux核一般都会在RAM中运行,所以在调用Linux核之前bootloader必须设置和初始化RAM,为调用Linux核做好准备。
初始化RAM的任务包括设置CPU的控制寄存器参数,以便能正常使用RAM以及检测RAM大小等。
2)初始化串口串口在Linux的启动过程中有着非常重要的作用,它是Linux核和用户交互的方式之一。
Linux在启动过程中可以将信息通过串口输出,这样便可清楚的了解Linux的启动过程。
虽然它并不是bootloader必须要完成的工作,但是通过串口输出信息是调试bootloader和Linux核的强有力的工具,所以一般的bootloader都会在执行过程中初始化一个串口做为调试端口。
3)检测处理器类型
Bootloader在调用Linux核前必须检测系统的处理器类型,并将其保存到某个常量中提供给Linux核。
Linux核在启动过程中会根据该处理器类型调用相应的初始化程序。
4)设置Linux启动参数
Bootloader在执行过程中必须设置和初始化Linux的核启动参数。
目前传递启动参数主要采用两种方式:
即通过structparam_struct和structtag(标记列表,taggedlist)两种结构传递。
5)调用Linux核映像
Bootloader完成的最后一项工作便是调用Linux核。
如果Linux核存放在Flash中,并且可直接在上面运行(这里的Flash指NorFlash),那么可直接跳转到核中去执行。
但由于在Flash中执行代码会有种种限制,而且速度也远不及RAM快,所以一般的嵌入式系统都是将Linux核拷贝到RAM中,然后跳转到RAM中去执行。
不论哪种情况,在跳到Linux核执行之前CUP的寄存器必须满足以下条件:
r0=0,r1=处理器类型,r2=标记列表在RAM中的地址。
第三章Linux核的启动过程
3.1Linux核入口
Linux非压缩核的入口位于文件/arch/arm/kernel/head-armv.S中的stext段。
该段的基地址就是压缩核解压后的跳转地址。
如果系统中加载的核是非压缩的Image,那么bootloader将核从Flash中拷贝到RAM后将直接跳到该地址处,从而启动Linux核。
不同体系结构的Linux系统的入口文件是不同的,而且因为该文件与具体体系结构有关,所以一般均用汇编语言编写[3]。
对基于ARM处理的Linux系统来说,该文件就是head-armv.S。
该程序通过查找处理器核类型和处理器类型调用相应的初始化函数,再建立页表,最后跳转到start_kernel()函数开始核的初始化工作。
3.2start_kernel函数
start_kernel是所有Linux平台进入系统核初始化后的入口函数,它主要完成剩余的与硬件平台相关的初始化工作,在进行一系列与核相关的初始化后,调用第一个用户进程-init进程并等待用户进程的执行,这样整个Linux核便启动完毕。
3.3结论
Linux核是一个非常庞大的工程,经过十多年的发展,它已从从最初的几百KB大小发展到现在的几百兆。
清晰的了解它执行的每一个过程是件非常困难的事。
但是在嵌入式开发过程中,我们并不需要十分清楚linux的部工作机制,只要适当修改linux核中那些与硬件相关的部分,就可以将linux移植到其它目标平台上。
通过对linux的启动过程的分析,我们可以看出哪些是和硬件相关的,哪些是linux核部已实现的功能,这样在移植
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 启动 过程 分析 DNS 服务器 毕业论文