![点击分享此内容可以赚币 分享](/master/images/share_but.png)
嵌入式Linux启动流程分析.doc
《嵌入式Linux启动流程分析.doc》由会员分享,可在线阅读,更多相关《嵌入式Linux启动流程分析.doc(12页珍藏版)》请在咨信网上搜索。
1、嵌入式Linux启动流程分析(转)linux嵌入式脚本actionlogin终端当Bootloader将控制权交给内核的引导程序时,第一个执行的程序就是head.S,它完毕了加载内核的大部分工作;misc.c则提供加载内核所需要的子程序,其中解压内核的子程序是head.S调用的重要程序,此外内核的加载还须知道系统的硬件信息,该硬件信息在hardware.h中定义并被head.S所引用。本系统中内核的启动流程如图1所示。本系统中,head.S一方面配置S3C4510B的系统寄存器SYSCFG、初始化系统的Flash、SDRAM以及总线控制寄存器,将Flash和SDRAM的地址范围分别设立为0x0
2、-0x1fffff和0x1000000-0x1ffffff;根据本系统的功能特点,重新定义了中断优先级以及I/O口的配置;为了提高内核的运营速度,将2M的内核映像文献从Flash拷贝到SDRAM;通过操作一些系统寄存器,进行系统的存储器重映射,将Flash和SDRAM的地址区间分别重映射为0x1000000-0x11fffff和0x0-0xffffff;然后初始化系统堆栈;接着调用misc.c中的函数decompress_kernel,对拷贝到SDRAM的内核映像文献进行解压缩;最后跳转到执行调用内核函数call_kernel,调用call_kernel函数事实上是执行main.c中的star
3、t_kernel函数,该函数完毕的功能涉及解决器结构的初始化、中断的初始化、定期器的初始化、进程相关的初始化以及内存初始化等初始化工作;最后内核创建一个init线程,在该线程中调用init进程,完毕系统的启动当用户打开PC的电源,BIOS开机自检,按BIOS中设立的启动设备(通常是硬盘)启动,接着启动设备上安装的引导程序lilo或grub开始引导Linux,Linux一方面进行内核的引导,接下来执行init程序,init程序调用了rc.sysinit和rc等程序,rc.sysinit和rc当完毕系统初始化和运营服务的任务后,返回init;init启动了mingetty后,打开了终端供用户登录系
4、统,用户登录成功后进入了Shell,这样就完毕了从开机到登录的整个启动过程。-power on-BIOS-Lilo/Grub-Kernerl boot-init(rc.sysinit, rc)-mingetty(login)-Shell-下面就将逐个介绍其中几个关键的部分:第一部分:内核的引导(核内引导)Red Hat9.0可以使用lilo或grub等引导程序开始引导Linux系统,当引导程序成功完毕引导任务后,Linux从它们手中接管了CPU的控制权,然后CPU就开始执行Linux的核心映象代码,开始了Linux启动过程。这里使用了几个汇编程序来引导Linux,这一步泛及到Linux源代码树
5、中的“arch/i386/boot”下的这几个文献:bootsect.S、setup.S、video.S等。其中bootsect.S是生成引导扇区的汇编源码,它完毕加载动作后直接跳转到setup.S的程序入口。setup.S的重要功能就是将系统参数(涉及内存、磁盘等,由BIOS返回)拷贝到特别内存中,以便以后这些参数被保护模式下的代码来读取。此外,setup.S还将video.S中的代码包含进来,检测和设立显示器和显示模式。最后,setup.S将系统转换到保护模式,并跳转到 0x100000。那么0x100000这个内存地址中存放的是什么代码?而这些代码又是从何而来的呢?0x100000这个内
6、存地址存放的是解压后的内核,由于Red Hat提供的内核包含了众多驱动和功能而显得比较大,所以在内核编译中使用了“makebzImage”方式,从而生成压缩过的内核,在RedHat中内核经常被命名为vmlinuz,在Linux的最初引导过程中,是通过arch/i386/boot/compressed/中的head.S运用misc.c中定义的decompress_kernel()函数,将内核vmlinuz解压到0x100000的。当CPU跳到0x100000时,将执行arch/i386/kernel/head.S中的startup_32,它也是vmlinux的入口,然后就跳转到start_ker
7、nel()中去了。start_kernel()是init/main.c中的定义的函数,start_kernel()中调用了一系列初始化函数,以完毕kernel自身的设立。start_kernel()函数中,做了大量的工作来建立基本的Linux核心环境。假如顺利执行完start_kernel(),则基本的Linux核心环境已经建立起来了。在start_kernel()的最后,通过调用init()函数,系统创建第一个核心线程,启动了init过程。而核心线程init()重要是来进行一些外设初始化的工作的,涉及调用do_basic_setup()完毕外设及其驱动程序的加载和初始化。并完毕文献系统初始化
8、和root文献系统的安装。当do_basic_setup()函数返回init(),init()又打开了/dev/console设备,重定向三个标准的输入输出文献stdin、stdout和stderr到控制台,最后,搜索文献系统中的init程序(或者由init=命令行参数指定的程序),并使用 execve()系统调用加载执行init程序。到此init()函数结束,内核的引导部分也到此结束了,第二部分:运营initinit的进程号是1,从这一点就能看出,init进程是系统所有进程的起点,Linux在完毕核内引导以后,就开始运营init程序,。init程序需要读取配置文献/etc/inittab。i
9、nittab是一个不可执行的文本文献,它有若干行指令所组成。在Redhat系统中,inittab的内容如下所示(以“#开始的中注释为笔者增长的):# inittab This file describes how the INIT process should set up# the system in a certain run-level.# Author: Miquel van Smoorenburg, # Modified for RHS Linux by Marc Ewing and Donnie Barnes# Default runlevel. The runlevels use
10、d by RHS are:# 0 - halt (Do NOT set initdefault to this)# 1 - Single user mode# 2 - Multiuser, without NFS (The same as 3, if you do not havenetworking)# 3 - Full multiuser mode# 4 - unused# 5 - X11# 6 - reboot (Do NOT set initdefault to this)#表达当前缺省运营级别为5(initdefault);id:5:initdefault:#启动时自动执行/etc/
11、rc.d/rc.sysinit脚本(sysinit)# System initialization.si:sysinit:/etc/rc.d/rc.sysinitl0:0:wait:/etc/rc.d/rc 0l1:1:wait:/etc/rc.d/rc 1l2:2:wait:/etc/rc.d/rc 2l3:3:wait:/etc/rc.d/rc 3l4:4:wait:/etc/rc.d/rc 4#当运营级别为5时,以5为参数运营/etc/rc.d/rc脚本,init将等待其返回(wait)l5:5:wait:/etc/rc.d/rc 5l6:6:wait:/etc/rc.d/rc 6#在启
12、动过程中允许按CTRL-ALT-DELETE重启系统# Trap CTRL-ALT-DELETEca:ctrlaltdel:/sbin/shutdown -t3 -r now# When our UPS tells us power has failed, assume we have a few minutes# of power left. Schedule a shutdown for 2 minutes from now.# This does, of course, assume you have powerd installed and your# UPS connected an
13、d working correctly.pf:powerfail:/sbin/shutdown -f -h +2 Power Failure; System Shutting Down# If power was restored before the shutdown kicked in, cancel it.pr:12345:powerokwait:/sbin/shutdown -c Power Restored; Shutdown Cancelled#在2、3、4、5级别上以ttyX为参数执行/sbin/mingetty程序,打开ttyX终端用于用户登录,#假如进程退出则再次运营ming
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 Linux 启动 流程 分析
![提示](https://www.zixin.com.cn/images/bang_tan.gif)
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【人****来】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【人****来】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。