内核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

特网云57元,香港云主机 1核 1G 10M宽带1G(防御)

特网云官網特网云服务器在硬件级别上实现云主机之间的完全隔离;采用高端服务器进行部署,同时采用集中的管理与监控,确保业务稳定可靠,搭建纯SSD架构的高性能企业级云服务器,同时采用Intel Haswell CPU、高频DDR4内存、高速Sas3 SSD闪存作为底层硬件配置,分钟级响应速度,特网云采用自带硬防节点,部分节点享免费20G防御,可实现300G防御峰值,有效防御DDoS、CC等恶意攻击,保障...

宝塔面板企业版和专业版618年中活动 永久授权仅1888元+

我们一般的站长或者企业服务器配置WEB环境会用到免费版本的宝塔面板。但是如果我们需要较多的付费插件扩展,或者是有需要企业功能应用的,短期来说我们可能选择按件按月付费的比较好,但是如果我们长期使用的话,有些网友认为选择宝塔面板企业版或者专业版是比较划算的。这样在年中大促618的时候,我们也可以看到宝塔面板也有发布促销活动。企业版年付899元,专业版永久授权1888元起步。对于有需要的网友来说,还是值...

Friendhosting全场VDS主机45折,虚拟主机4折,老用户续费9折

Friendhosting发布了今年黑色星期五促销活动,针对全场VDS主机提供45折优惠码,虚拟主机4折,老用户续费可获9折加送1个月使用时长,优惠后VDS最低仅€14.53/年起,商家支持PayPal、信用卡、支付宝等付款方式。这是一家成立于2009年的老牌保加利亚主机商,提供的产品包括虚拟主机、VPS/VDS和独立服务器租用等,数据中心可选美国、保加利亚、乌克兰、荷兰、拉脱维亚、捷克、瑞士和波...

首选dns服务器为你推荐
盗版win8.1升级win10我的电脑是预装正版win8的,然后重装了盗版win8.1。现在我提取出了OEM KEY,怎么能升级到win10呢?骁龙750g和765g哪个好骁龙768g什么水平免费阅读小说app哪个好求一个看书比较好的APP华为p40和mate30哪个好Huawei Mate30 和 P40 哪个好?手动挡和自动挡哪个好手动档与自动档哪个好?朱祁钰和朱祁镇哪个好大家怎么看明英宗和明代宗二手车网站哪个好卖二手车网站哪个好无纺布和熔喷布口罩哪个好大雾天气带什么样的口罩最好电陶炉和电磁炉哪个好电磁炉和电陶炉买哪个?尼康和佳能单反哪个好入门的单反相机 佳能和尼康哪个好?
主机优惠码 便宜域名 外贸主机 国外bt ssh帐号 远程登陆工具 100m空间 169邮箱 免费美国空间 hkt 免费网页申请 最漂亮的qq空间 免费邮件服务器 镇江高防 supercache 腾讯网盘 新疆服务器 nic 超低价 域名商城 更多