linux 启动 引导

来源:互联网 发布:mac怎么删除应用 编辑:程序博客网 时间:2024/06/07 23:08

裁剪
  把Linux系统拆开自己将各个组件组装,然后完成一个微型的Linux系统。
内核的引导
   引导Linux系统的过程将以引导X86PC为例。引导X86PC上的linux的过程和引导嵌入式系统上的Linux的过程基本类似。不过在X86PC上有
一个从BIOS(Basic Input-Output System)转移到Bootloader的过程,而嵌入式系统往往 复位后就直接运行Bootloader。
   BIOS --微机基本输入输出系统,其内容集成在微机主板上的一个ROM芯片上,主要保存着有关微机系统最重要的基本输入输出程序,系
统信息设置、开机上电自检程序和系统启动自举程序等。  


1 系统上电或者复位时,CPU会将PC指针赋值为一个特定地址0xFFFF0并执行该地址处的指令。在PC中这个地址位于BIOS中,保存在主板
  上的ROM或者Flash中。
2 BIOS运行时按照CMOS(互补金属氧化物半导体-用它制造RAM芯片)的设置定义的启动设备顺序来搜索处于活动状态并且可以引导的设备。
  若从硬盘启动,BIOS会将硬盘MBR(主引导记录)中的内容加载到RAM。MBR是个512字节大小的扇区,位于磁盘上的第一个扇区中(
  0道0柱面1扇区)。当MBR被加载到RAM之后,BIOS就将控制权交给MBR。
3 主引导加载程序查找并加载次引导加载程序。
4 次引导加载程序加载Linux内核和可选的初始初始RAM磁盘,将控制权交给Linux内核源代码。
5 运行被加载的内核,并启动用户空间应用程序。

嵌入式系统中linux引导过程与之类似,但一般更加简洁。

Bootloader特征:

  a,可以在系统上电或复位的时候以某种方式执行,这些方式包括被BIOS引导执行,直接在NOR Flash中执行,NAND Flash中的代码被

         MCU自动拷入内部或外部RAM执行等。

  b,能将U盘,磁盘,光盘,NOR/NAND Flash,ROM,SD卡等存储介质,或者网口,串口中的操作系统加载到RAM并把控制权交给操作

        系统源代码执行。

著名的Linux Bootloader包括应用于PC的LILO和GRUB,应用于嵌入式系统中的U-Boot,RedBoot等。

  BGRUB本身能理解EXT2,EXT3文件系统,因此可在文件系统中加载Linux,而LILO只能识别“裸盘”。    

  U-Boot的定位为“universal Bootloader”,其功能比较强大,涵盖了包括PowerPC,ARM,mips,x86在内的绝大多数处理器架构

    提供网卡,串口flash等外设驱动

    提供必要的网络协议(bootp,dhcp,tftp)

    能识别多种文件系统(cramfs,fat,jffs2和registerfs等)并附带调试,脚本,引导等工具,应用广泛。

内核阶段:内核映像被加载到RAM之后,Bootloader的控制权被释放,内核阶段就开始了。内核映像不是完全可直接执行的目标代码,而是一

    个压缩过的小内核(zlmage)或大内核(bzImage)。但是内核中不是全部被压缩,有一部分是没有被压缩的,这部分包括解压缩程序,解压

    缩程序会解压映像中的被压缩的部分,是用gzip压缩的,也就是说解压缩程序是gzip解压缩程序。

    当bzImage被调用时,它从/arch/i386/boot/head.s的start汇编例程开始执行,这个程序执行一些基本的硬件设置。

具体调用过程如下



0 0
原创粉丝点击