内核Linux启动过程分析及DNS服务器毕业论文

dns服务器有什么用  时间:2021-01-17  阅读:()

Linux启动过程分析

长沙师范学校

电子信息工程 系 计算机应用嵌入式 专业 09 级

毕业论文设计

题目: Linux启动过程分析及DNS服务器姓名 盛郎平 学号 2009540830138

指导教师签名

2011年10月 13 日

Linux启动过程分析

引 言

Linux最初是由瑞典赫尔辛基大学的学生Linus Torvalds在1991年开发出来的之后在GNU的支持下 Linux获得了巨大的发展。 1个嵌入式Linux系统从软件角度看可以分为4个部分 引导加载程序bootloader  Linux 内核文件系统应用程序。其中bootloader是系统启动或复位以后执行的第1段代码它主要用来初始化处理器及外设然后调用Li nux 内核。 Linux 内核在完成系统的初始化之后需要挂载某个文件系统做为根文件系统Root Filesystem 。根文件系统是Linux系统的核心组成部分它可以做为Linux系统中文件和数据的存储区域。应用程序可以说是嵌入式系统的“灵魂” 它所实现的功能通常就是设计该嵌入式系统所要达到的目标。如果没有应用程序的支持任何硬件上设计精良的嵌入式系统都没有实用意义。从以上分析我们可以看出bootloader和Linux 内核在嵌入式系统中的关系和作用。 bootloader在运行过程中虽然具有初始化系统和执行用户输入的命令等作用但它最根本的功能就是为了启动Li nux 内核。在嵌入式系统开发的过程中很大1部分精力都是花在bootloader和Linux 内核的开发或移植上。如果能清楚的了解bootloader执行流程和Linux的启动过程将有助于明确开发过程中所需的工作从而加速嵌入式系统的开发过程。而这正是本文的所要研究的内容。

Linux启动过程分析

目 录

第一章绪论. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4

1. 1 Linux操作系统. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4

1. 1. 1 Linux操作系统的历史. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4

1.1.2 Linux操作系统的特点. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5

1.1.3嵌入式LINUX的应用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5

2. 1 Linux的安装. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5

第二章Bootloader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8

2. 1 Bootloader的概念和作用. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8

2.2 Bootloader的执行过程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8

2.3 bootloader必须具备的功能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8

第三章Li nux内核的启动过程. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11

3. 1 Linux内核入口. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11

3.2 start_kernel函数. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11

3.3结论. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11

第四章Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13

4. 1 Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13

4.2常用Shell命令. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15

第五章总结. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20

Linux启动过程分析

第一章绪论

1. 1 Linux操作系统

1. 1. 1 Linux操作系统的历史

Linux操作系统刚开始时并没有被称作Linux Linus给他的操作系统取名为FREAX其英文含义是怪诞的、怪物、异想天开等意思。在他将新的操作系统上载到ftp funet。 fi服务器上时管理员Ari Lemke很不喜欢这个名称。他认为既然是Linus的操作系统就取其谐音Linux作为该操作系统的目录吧于是Linux这个名称就开始流传下来。在Linus的自传《Just for Fun》一书中 Linus解释说"坦白地说我从来没有想到过要用Linux这个名称发布这个操作系统因为这个名字有些太自负了。而我为最终发布版准备的是什么名字呢F re ax。实际上内核代码中某些早期的Make fi le -用于描述如何编译源代码的文件-文件中就已经包含有"F reax"这个名字了大约存在了半年左右。但其实这也没什么关系在当时还不需要一个名字因为我还没有向任何人发布过内核代码。而Ari Lemke他坚持要用自己的方式将内核代码放到ftp站点上并且非常不喜欢F reax这个名字。他坚持要用现在这个名字(Linux)我承认当时我并没有跟他多争论。但这都是他取的名字。所以我可以光明正大地说我并不自负或者部分坦白地说我并没有本位主义思想。但我想好吧这也是个好

Linux启动过程分析

名字而且以后为这事我总能说服别人就像我现在做的这样。 "

1.1.2 Linux操作系统的特点

嵌入式LINUX操作系统的概念

以应用为中心 以计算机技术为基础软件、硬件可裁剪适应应用系统对功能、可靠性、成本、体积、功耗要求严格的专用计算机系统称为嵌入式系统。

一个最小的嵌入式系统的基本组成为①一个用作引导的可用设施工具②一个具备内存管理进程管理和定时器服务的LINUX微内核③一个初始进程④硬件的驱动程序⑤一个或几个应用进程以提供必要的应用功效。

1.1.3嵌入式LINUX的应用

嵌入式系统的涵盖面是非常广泛的其中家电市场包括机顶盒、数字电视、可视电话、家庭网络等信息家电工业市场包括工业控制设备、仪器商用市场包括掌上电脑、瘦客户机、 POS终端等通信市场包括WAP手机、无线P DA等。 目前被广泛看好的是信息家电市场 国内有很多开发厂商正加大投入、开发和研制新的产品嵌入式LINUX将是他们首选的操作系统。

2. 1 Linux的安装

安装L inux有二种方式硬盘直接安装和虚拟机安装。

一、 硬盘直接安装

把硬盘中的一部分空间开辟出来专门用来安装Linux,通过制

Linux启动过程分析

作一个双启动菜单在开机时由用户选择进入Windows系统或者L inux系统。

二、 虚拟机安装

在Windows系统中安装一个专门的“虚拟机”软件这个软件负责在Windows系统之上运行另一个操作系统可以是另一个Windows或者是Li nux等任何操作系统。

常用的虚拟机软件有VMware和Virtual PC运行时相当于生成了一台没有安装任何软件的“祼机”这台“祼机”可以看作是一台独立的、功能完全的计算机成为虚拟机它与安装“虚拟机”软件的计算机没有任何耦合关系运行虚拟机的真实的PC称为宿主机甚至能够把虚拟机和宿主机搭建成一个网络。通常可以利用“虚拟机”软件来安装体验新的操作系统面对原有的Windows系统没有任何影响当不需要这个虚拟机时只要从硬盘上把虚拟机的镜像文件删掉即可。

安装好VMw ar e软件后首先要建立一个新的虚拟机为这个新的虚拟机指定将来要安装的操作系统、规划内存和硬盘容量、设置网络连接方式、指定虚拟机文件的存放路径等其中比较重要的是VMware网络配置共4种方式。如果用户拥有多个IP适合选择侨接方式给虚拟机分配一个对立的IP此虚拟机就相当于网络上的一台独立计算机与宿主机在网络上的物理地位相同如果只有一个IP可用则可选择网络地址转换Network Address Translat ion,NAT方式虚拟机和宿主机共用一个IP;Host only方式可以使虚拟机和

Linux启动过程分析

宿主机二者构成一个网络实现数据传输 custom方式不大常用在此不作介绍。

虚拟机软件配置完成后可以接着利用物理光驱或者光盘镜像为这个虚拟机安装一个Li nux操作系统。

Linux启动过程分析

第二章Bootloader

2. 1 Bootloader的概念和作用

Bootloader是嵌入式系统的引导加载程序它是系统上电后运行的第一段程序其作用类似于PC机上的BIOS。在完成对系统的初始化任务之后它会将非易失性存储器通常是Flash或DOC等中的L inux 内核拷贝到RAM中去然后跳转到内核的第一条指令处继续执行从而启动Linux 内核。由此可见 bootloader和Linux 内核有着密不可分的联系要想清楚的了解Li nux内核的启动过程我们必须先得认识bootloader的执行过程这样才能对嵌入式系统的整个启过程有清晰的掌握。

2.2 Bootloader的执行过程

不同的处理器上电或复位后执行的第一条指令地址并不相同对于ARM处理器来说该地址为0x00000000。对于一般的嵌入式系统通常把Flash等非易失性存储器映射到这个地址处而bootloader 就位于该存储器的最前端所以系统上电或复位后执行的第一段程序便是 bootloader。而因为存储bootloader 的存储器不同bootloader的执行过程也并不相同。

2.3 bootloader必须具备的功能

1)初始化RAM

Linux启动过程分析

因为L inux 内核一般都会在RAM中运行所以在调用Linux 内核之前bootloader必须设置和初始化RAM为调用Linux 内核做好准备。初始化RAM的任务包括设置CPU的控制寄存器参数以便能正常使用R AM以及检测RA M大小等。

2)初始化串口串口在Li nux的启动过程中有着非常重要的作用它是Linux 内核和用户交互的方式之一。 Li nux在启动过程中可以将信息通过串口输出这样便可清楚的了解Li nux的启动过程。虽然它并不是bootloader必须要完成的工作但是通过串口输出信息是调试bootloader和Linux 内核的强有力的工具所以一般的bootloader都会在执行过程中初始化一个串口做为调试端口。

3)检测处理器类型

Bootloader在调用Linux内核前必须检测系统的处理器类型并将其保存到某个常量中提供给L inux 内核。 Li nux 内核在启动过程中会根据该处理器类型调用相应的初始化程序。

4)设置Li nux启动参数

Bootloader在执行过程中必须设置和初始化Linux的内核启动参数。 目前传递启动参数主要采用两种方式 即通过 struct param_struct和struct tag 标记列表 tagged list两种结构传递。

5)调用Li nux内核映像

Bootloader完成的最后一项工作便是调用Linux 内核。如果Linux 内核存放在Flash中并且可直接在上面运行这里的Flash

香港、美国、日本、韩国、新加坡、越南、泰国、加拿大、英国、德国、法国等VPS,全球独立服务器99元起步 湘南科技

全球独立服务器、站群多IP服务器、VPS(哪个国家都有),香港、美国、日本、韩国、新加坡、越南、泰国、加拿大、英国、德国、法国等等99元起步,湘南科技郴州市湘南科技有限公司官方网址:www.xiangnankeji.cn产品内容:全球独立服务器、站群多IP服务器、VPS(哪个国家都有),香港、美国、日本、韩国、新加坡、越南、泰国、加拿大、英国、德国、法国等等99元起步,湘南科技VPS价格表:独立服...

ATCLOUD.NET-OVH海外高防云主机,采用KVM架构,稳定安全且便宜好用,仅3刀起

官方网站:点击访问ATCLOUD.NET官网优惠码:目前提供Cloud VPS与Storage VPS两款产品的六折优惠活动(续费同价,截止至2021年5月31日)优惠码:UMMBPBR20Z活动方案:一、型号CPU内存磁盘流量优惠价格购买链接VPS-1GB0.5×2.6+GHz1GB20GB1TB$3立即购买VPS-2GB1×2.6+GHz2GB50GB2TB$6立即购买VPS-4GB2×2.6...

ZJI(月付480元),香港阿里云专线服务器

ZJI是成立于2011年原Wordpress圈知名主机商—维翔主机,2018年9月更名为ZJI,主要提供香港、日本、美国独立服务器(自营/数据中心直营)租用及VDS、虚拟主机空间、域名注册业务。本月商家针对香港阿里云线路独立服务器提供月付立减270-400元优惠码,优惠后香港独立服务器(阿里云专线)E3或者E5 CPU,SSD硬盘,最低每月仅480元起。阿里一型CPU:Intel E5-2630L...

dns服务器有什么用为你推荐
软银巨亏除了IPO,私募股权投资还有哪些退出方式骁龙750g和765g哪个好骁龙768g什么水平骁龙750g和765g哪个好高通骁龙845和骁龙835哪个好锦天城和君合哪个好和君智业和三人禾哪个公司的营销做的好闪迪和金士顿哪个好tf卡闪迪和金士顿哪个更好手机杀毒软件哪个好什么手机杀毒软件最好用?牡丹江教育云空间登录云空间怎么登入q空间登录腾讯qq空间登陆qq空间登录网址开通QZONe铁通dns服务器地址嘉兴铁通的DNS服务器地址是多少?
主机域名 域名管理 高防服务器租用qy 主机 blackfriday 免费ftp空间 网站实时监控 大容量存储 免费全能空间 lol台服官网 域名和空间 腾讯总部在哪 net空间 贵阳电信 lamp什么意思 石家庄服务器 windowsserver2008 ncp 什么是dns godaddy域名 更多