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

justhost:“第4次VPS测评”,8.3元/月,200M带宽,不限流量,KVM虚拟,4个俄罗斯机房应有适合你的

justhost.ru官方来消息说已经对网络进行了比较全面的优化,针对中国电信、联通、移动来说,4个机房总有一个适合中国用户,让站长进行一下测试,这不就有了这篇有关justhost的VPS的第四次测评。本帖主要关注的是网络,对于其他的参数一概不管! 官方网站:https://justhost.ru 最低配VPS:8.3元/月,KVM,512M内存,5G硬盘,200M带宽,不限流量 购买链接:...

UCloud新人优惠中国香港/日本/美国云服务器低至4元

UCloud优刻得商家这几年应该已经被我们不少的个人站长用户认知,且确实在当下阿里云、腾讯云服务商不断的只促销服务于新用户活动,给我们很多老用户折扣的空间不多。于是,我们可以通过拓展选择其他同类服务商享受新人的福利,这里其中之一就选择UCloud商家。UCloud服务商2020年创业板上市的,实际上很早就有认识到,那时候价格高的离谱,谁让他们只服务有钱的企业用户呢。这里希望融入到我们大众消费者,你...

乐凝网络支持24小时无理由退款,香港HKBN/美国CERA云服务器,低至9.88元/月起

乐凝网络怎么样?乐凝网络是一家新兴的云服务器商家,目前主要提供香港CN2 GIA、美国CUVIP、美国CERA、日本东京CN2等云服务器及云挂机宝等服务。乐凝网络提供比同行更多的售后服务,让您在使用过程中更加省心,使用零云服务器,可免费享受超过50项运维服务,1分钟内极速响应,平均20分钟内解决运维问题,助您无忧上云。目前,香港HKBN/美国cera云服务器,低至9.88元/月起,支持24小时无理...

首选dns服务器为你推荐
朗逸和速腾哪个好朗逸和新速腾哪个性能更好点?宝来和朗逸哪个好大众朗逸好还是宝来好核芯显卡与独立显卡哪个好核芯显卡和独立显卡哪个好?请直接点谢谢啦!电陶炉和电磁炉哪个好电陶炉和电磁炉哪个好?主要是炒菜,爆炒。电陶炉和电磁炉哪个好电陶炉和电磁炉哪个好视频软件哪个好安卓系统在线看视频软件哪个好网页qq空间登录网页查看qq空间dns服务器未响应DNS服务器未响应是什么意思?360云盘360云盘干什么用的?360云盘下载选百度云呢还是360云盘呢?
免费国内空间 免费vps服务器 宿迁服务器租用 香港bgp机房 老鹰主机 远程登陆工具 轻量 日本空间 韩国网名大全 个人域名 789电视网 idc是什么 phpmyadmin配置 中国电信宽带测速网 gtt 服务器硬件防火墙 根服务器 申请网站 789 腾讯数据库 更多