其他
ggad
分类
全站
搜索
21 Jan.2012

次序linux的指导过程和发动过程解析拾掇自收集过程

作者: 3wjj   分类:软文教程   出处:本站原创            | |
次序  内核  装备  系统  开端  内存  硬盘  位址  形式  代码  指令  局部  过程  地址  大年夜  功用  部分  要害  比拟  方才  时分  肇端  罕见  举动  浩繁  依据  权利  电源  参数  中央  别的  寄存器  如许  映象  终端  控制权  软盘  假定  初始化  俗称  测验  源代码  路程  网卡  函数  不当  源码  正当  落后  装置
linuxDe∴Zhi∴Dao∴Guo∴Cheng∴He∴Fa∴Dong∴Guo∴Cheng∴Jie∴Xi∴Shi∴Duo∴Zi∴Shou∴Ji我们罕见的使用Intel或者AMD的芯片的电脑当我们接通PC机的电源以后!CPU会施行第壹条指令!第壹条指令通常为使CPU能腾踊到BIOS的出口地址上!然后BIOS就开端停止开机自检!包含对内存等硬件停止检测!假设具有其它装备的也自带有BIOS!也会施行它们完成自检后的BIOS会依据设定好的发动装备和发动次序递次来发动真实的操纵系统!如Linux   对于PC机!有以下几种装备能够作为发动装备来使用 1) 硬盘     2) 软盘 3) 光盘驱动器 4) USB盘 5) 网卡的Boot ROM 不管系统挑选了哪壹种发动装备!它都将会往将该装备肇端地址的形式读进内存!假设妳的发动装备是IDE硬盘!系统就会往往读取硬盘的第壹个扇区!并将这个扇区的形式读进内存!然后运转它到这壹步的时分是指导Linux操纵系统的要害了!这壹步将测验考试往发动Linux的指导次序递次!假设找不到指导次序递次!将没法指导Linux很多人正在没法发动Linux的时分!实在大年夜多都是指导次序递次保护或者是建设不当所形成的Linux的指导次序递次有很多种!最为罕见是lilo和grub 假设指导次序递次胜利后!Linux内核就接收了系统!开端了Linux的发动过程  正在方才开机时 ! 因为 80x86 的特征 ! CS   这个寄存器中局部都放着 1 ! 而 IP  这个寄存器  中局部都放着 0 ! 换句话说 ! CS=FFFF 而 IP=0000 ! 此时 ! CPU 就依据  CS 及 IP 的值 ! 到 FFFF0H 往施行阿谁中央所放的指令 . 这时候分 ! 因为  FFFF0H 曾经到了高位址的顶端 ! 所以 ! FFFF0H 这个中央 ! 总是会放壹个  JMP 指令 ! 跳到比拟低的位址 . 接著 ! ROM BIOS 就会作壹些检查的举动  像内存 ! 键盘等...... 并正在我们俗称的 UMB   当中扫描 ! 看看可否有正当的 ROM 具有  .  假设有 ! 就到外面往施行壹些东西 ! 施行完以后再继续方才才的路程 . 到了  最后 ! 读取硬盘上的第壹个 sector . 正在这里 ! 我假定各位由硬盘发动  因此 ! 就硬盘的结构而言 ! 它的第壹个 sector 称为 MBR  . 因为壹个 sector 是 512 bytes ! 而 MBR 这 512 bytes 可分  为两个部分 ! 第壹个部分为 Pre-Boot 区 ! 占了 446 bytes 。 第贰部分  是 Partition Table ! 占了 66 bytes . Pre-Boot 区的感化之壹 ! 就是  往看看阿谁 Partition 被标成 Active ! 然后往读阿谁 Partition 的 Boot  区 .  -------------------------------------------------- --------------------------------------------------- - 当用户打开PC的电源!BIOS开机自检!按BIOS中设置的发动装备发动!接着发动装备上装置的指导次序递次lilo或者grub开端指导Linux!Linux起首停止内核的指导!接上往施行init次序递次!init次序递次调用了rc.sysinit和rc等次序递次!rc.sysinit和rc当完成系统初始化和运转效劳的权利后!前往initinit发动了mingetty后!打开了终端供用户登录系统!用户登录胜利落后进了Shell!如许就完成了从开机到登录的全部发动过程       下面就将逐壹引见此中几个要害的局部  第壹局部外核的指导 Red Hat9.0能够使用lilo或者grub等指导次序递次开端指导Linux系统!当指导次序递次胜利完成指导权利后!Linux从它们手中接收了CPU的控制权!然后CPU就开端施行Linux的核心映象代码!开端了Linux发动过程这里使用了几个汇编次序递次来指导Linux!这壹步泛及到Linux源代码树中的"arch/i386/boot"下的这几个文件bootsect.S!setup.S!video.S等 此中bootsect.S是天生指导扇区的汇编源码!它完成加载举动后间接跳转到setup.S的次序递次出口setup.S的主要功用就是将系统参数拷贝到特地内存中!以便以后这些参数被保护形式下的代码来读取别的!setup.S还将video.S中的代码包含进来!检测和设置浮现器和浮现形式最后!setup.S将系统转换到保护形式!并跳转到 0x100000 那么0x100000这个内存地址中寄存的是甚么代码而这些代码又是从何而来的呢 0x100000这个内存地址寄存的是解压后的内核!因为Red Hat供给的内核包含了浩繁驱动和功用而显得比拟大年夜!所以正在内核编译中使用了"makebzImage"方法!从而天生压缩过的内核!正在RedHat中内核经常被定名为vmlinuz!正在Linux的最后指导过程当中!是经过"arch/i386/boot/compressed/"中的head.S应用misc.c中定义的decompress_kernel函数!将内核vmlinuz解压到0x100000的我们罕见的使用Intel或者AMD的芯片的电脑当我们接通PC机的电源以后!CPU会施行第壹条指令!第壹条指令通常为
黑客资源网  http://www.hkzy.info
发表评论
  昵称 [注册]
  密码 (游客无需密码)
  网址
  电邮
OpenID登入 权限选项 表情