嵌入式Linux启动流程.ppt_第1页
嵌入式Linux启动流程.ppt_第2页
嵌入式Linux启动流程.ppt_第3页
嵌入式Linux启动流程.ppt_第4页
嵌入式Linux启动流程.ppt_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第16章 嵌入式Linux启动流程,在多数计算机上,从Linux开机到进入系统的命令行或者图形界面时间并不长。计算机在背后做了什么工作,会展现出一个功能强大的系统,本章分析Linux系统启动流程。学习和掌握Linux启动的流程对了解Linux内核工作流程有很大帮助。Linux系统初始化可以分成两大部分:内核初始化和系统初始化。本章分析从打开电源开关到进入用户界面Linux系统的工作,主要内容如下: Linux内核初始化概览 进入内核前的工作 内核初始化 如何进入用户空间,16.1 Linux内核初始化流程,从前面讲解的知识知道,操作系统是用户应用和计算机硬件之间的桥梁。操作系统管理整个系统的所

2、有软硬件资源,并且向用户应用程序提供接口。在操作系统初始化的时候,系统内核检测计算机硬件,加载驱动并且设置软件环境,本节详细讲解Linux内核初始化所做的工作。,16.2 PC机的初始化流程,先给出一个PC机的初始化流程图。,16.2.1 PC机BIOS功能和作用,图16-3是PC机BIOS的功能结构。,16.2.2 硬盘的数据结构,PC机最常见的外部存储设备是硬盘驱动器。硬盘可以存储大量的数据,并且具有断电信息不丢失的特点。硬盘上的数据组织格式随不同操作系统不完全相同。无论什么系统,对硬盘的数据组织方式有何不同,都包含了一个引导记录的数据结构。引导记录(英文全称Main Boot Recor

3、d,简称MBR)是位于硬盘0磁道0柱面的第一个扇区。一个扇区有512字节,MBR占用了开始的446字节。,16.2.2 硬盘的数据结构,16.2.3 完整的初始化流程,在弄清楚PC机BIOS和硬盘引导程序的结构和作用后,说一下PC机的启动流程。PC机加电或者Reset后硬件系统会复位,复位后寄存器CS=0 xFFFF,寄存器IP=0 x0000。CPU从FFFF:0000H处执行指令,这个地址只有一条JMP(跳转)指令,跳转到系统自检程序,也就是进入了BIOS程序存放的位置。执行自检程序通过后,BIOS根据配置把软盘或者硬盘(光盘也是同样道理)的MBR扇区读入系统0000:7C00H处,执行M

4、BR的代码。 MBR的代码通常由操作系统修改,也可以由其他程序(例如GRUB引导器)修改。如果机器安装了GRUB引导软件,执行MBR的代码会启动GRUB引导软件。系统的控制权交由GRUB引导软件处理,GRUB根据分区的配置信息,找到硬盘对应分区上Linux内核文件并且加载到内存,然后跳转到内核代码位置,最后把系统控制权交给Linux内核。,16.3 嵌入式系统的初始化,嵌入式系统的多样性和复杂性,一般不像PC机那样配置BIOS,系统中也没有像BIOS那样的固件。用于启动的代码必须由用户完成,通常称这部分代码为Bootloader程序,整个系统的启动就由它完成。Bootloader初始化硬件设备

5、、建立内存空间的映射,将系统的软硬件环境设定在一个合适的状态,为加载操作系统内核和应用程序准备一个正确的环境。Bootloader依赖实际硬件环境,通常不存在一个通用的标准。对于不同的嵌入式系统,Bootloader程序内容也不相同。本书以ARM处理器为例介绍嵌入式系统的初始化。,16.3 嵌入式系统的初始化,16.4 Linux内核初始化,Linux内核在不同处理器体系结构上启动代码不全相同,但是启动的流程基本一致,本书根据嵌入式开发的需要从ARM核分析Linux内核初始化过程。,16.4.1 解压缩内核映像,对于大多数嵌入式应用,由于存储器空间的限制,大多数编译后的内核映像都是压缩存放,所

6、以进入内核的第一步首先是解压缩内核映像。,16.4.2 进入内核代码,接下来就进入了真正的内核代码。在有MMU的处理器上,系统会使用虚拟地址,通过MMU指向实际物理地址。,16.5 启动init内核进程,在start_kernel()函数最后调用了rest_init()函数,此函数用来创建内核init进程,这也是内核态的最后的工作。代码如下: static void rest_init(void) kernel_thread(init, NULL, CLONE_FS | CLONE_FILES | CLONE_SIGNAL); unlock_kernel(); current-need_res

7、ched = 1; cpu_idle(); ,16.6 根文件系统初始化,Linux内核启动完毕后,首先就是要创建根文件系统,用户空间所有的操作都依赖根文件系统。本节介绍根文件系统的结构,并结合代码分析根文件系统的初始化过程。,16.6.1 根文件系统介绍,在内核代码启动完之后,进入文件系统初始化的阶段,Linux需要加载根文件系统。Linux的根文件系统可以分两类:虚拟根文件系统和真实根文件系统。Linux内核的发展趋势是把更多的功能放在用户空间完成,可以保持内核的精简。虚拟根文件系统也是各Linux发行厂商采用的一种方式,可以把初始化的工作在虚拟的根文件系统完成,最后再切换到真实的文件系统

8、。 1 传统的initrd根文件系统 2 initramfs根文件系统 3 根文件系统的挂载,16.6.2 挂载虚拟文件系统,挂载文件系统在kernel_init()函数实现,本节重点分析该函数。 1 基本参数初始化 2创建系统第一个进程 3挂载根文件系统,16.7 内核交出权限,Linux内核通过sys_fork()函数,之后在调用sys_execve()函数创建一个新的进程。系统启动后,核心态创建名为init的第一个用户进程。实现这种逆向迁移,Linux内核并不调用用户层代码。实现逆向迁移通常做法是在用户进程的核心栈压入用户态的SS,ESP,EFLAGS,CS,EIP等寄存器伪装成用户进程

9、,然后通过trap进入核心态,最后通过 iret指令返回用户态。,16.8 init进程,也是一个链接,具体指向哪个程序可以由用户配置。 init进程的主要任务是按照inittab配置文件提供的信息创建进程,由于进行系统初始化的进程都是由init进程创建的,所以init进程也称为系统初始化进程。 inittab配置文件的格式是没一行一个配置项,有如下结构: id:rstate:action:process 每项有四个字段,字段之间用“:”分割,如果某个字段没有设置,直接留空。下面解释各字段含义: 1id字段 2rstate字段 3action字段 4process字段,16.9 初始化RAM

10、Disk,现代计算机的内存容量越来越大,并且价格也不断下降。内存具备了相对外存储器访问速度快,价格低廉的优势。Linux系统支持一项功能,可以指定一块内存区域作为文件分区。用户可以像使用普通文件分区一样使用内存。本节介绍这种内存管理技术。,16.9.1 RAM Disk介绍,Linux系统提供一种特殊的功能-“初始化内存盘”,英文名Initial Ram Disk。RAM Disk技术与压缩映像技术结合,使用该技术后Linux系统可以从容量较小的内存盘启动。使用系统内存的一部分作为根文件系统,可以不使用交换分区。换句话说,使用内存盘技术可以把Linux系统完全嵌入内存,不依赖其他外部存储设备。

11、 使用RAM Disk技术,系统不工作在硬盘活其他外部设备上,消除了读写延迟;根文件系统和操作完全运行在CPU/RAM环境下,系统速度和可靠性方面比较好;此外,根文件系统也不会因为非法关机导致被破坏。 RAM Disk唯一的一个缺点是对内存有一定的要求,要获得较好的性能,内存容量是不能太小的,目前PC机的内存一般都很大,在内存运行根文件系统没有问题。嵌入式系统如果配备了较大的内存也可以考虑使用RAM Disk技术。,16.9.2 如何使用RAM Disk,RAM Disk也称作RAM盘,作用是在内存中使用一块内存区域虚拟出一个硬盘。使用RAM Disk需要在编译内核的时候,在“Block De

12、vice”选项中选择“BlockDevice”菜单项。在设置“Block Disk”的时候,需要设置RAM Disk的参数。修改设置后,需要重新编译Linux内核才能使用。编译带有RAM Disk选项的内核。,16.9.3 实例:使用RAM Disk作为根文件系统,本实例以创建一个Apache网络服务器为例,展示如何创建从当前存在的Linux系统创建基于RAM Disk的根文件系统。创建一个Apache网络服务器,只需要把httpd配置文件服务程序放入根文件系统映像,并且加入启动文件即可。下面是具体的操作过程。 (1)首先在Linux创建/minilinux目录,以后以此目录创建根文件系统。 (2)接下来制作RAM Disk映像,启动计算机的时候设置RAM Disk大小至少大于/minilinux目录文件大小。 (3)制

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论