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
HostYun 商家以前是玩具主机商,这两年好像发展还挺迅速的,有点在要做点事情的味道。在前面也有多次介绍到HostYun商家新增的多款机房方案,价格相对还是比较便宜的。到目前为止,我们可以看到商家提供的VPS主机包括KVM和XEN架构,数据中心可选日本、韩国、香港和美国的多个地区机房,电信双程CN2 GIA线路,香港和日本机房,均为国内直连线路。近期,HostYun上线低价版美国CN2 GIA ...
六一云互联六一云互联为西安六一网络科技有限公司的旗下产品。是一个正规持有IDC/ISP/CDN的国内公司,成立于2018年,主要销售海外高防高速大带宽云服务器/CDN,并以高质量.稳定性.售后相应快.支持退款等特点受很多用户的支持!近期公司也推出了很多给力的抽奖和折扣活动如:新用户免费抽奖,最大可获得500元,湖北新购六折续费八折折上折,全场八折等等最新活动:1.湖北100G高防:新购六折续费八折...
Hostodo 算是比较小众的海外主机商,这次九月份开学季有提供促销活动。不过如果我们有熟悉的朋友应该知道,这个服务商家也是比较时间久的,而且商家推进活动比较稳,每个月都有部分活动。目前有提供机房可选斯波坎、拉斯维加斯和迈阿密。从机房的地理位置和实际的速度,中文业务速度应该不是优化直连的,但是有需要海外业务的话一般有人选择。以前一直也持有他们家的年付12美元的机器,后来用不到就取消未续约。第一、开...