打印
[ZLG-ARM]

系统启动

[复制链接]
846|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
reeper|  楼主 | 2009-4-2 15:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
系统的启动顺序及相关文件仍在核心源码目录下,看以下几个文件:
  ./arch/$ARCH/boot/
  bootsect.s
  ./arch/$ARCH/boot/setup.s
  ./init/main.c
  bootsect.S 及 setup.S
  这个程序是Linux kernel的第一个程序,包括了Linux自己的bootstrap程序,但是在说明这个程序前,必须先说明一般IBM PC开机时的动作(此处的开机是指“打开PC的电源”)。
  一般PC在电源一开时,是由内存中地址FFFF:0000开始执行(这个地址一定在ROM BIOS中,ROM BIOS一般是在FEOOOh到FFFFFh中),而此处的内容则是一个jump指令,jump到另一个位于ROM BIOS中的位置,开始执行一系列的动作。
  紧接着系统测试码之后,控制权会转移给ROM中的启动程序(ROM bootstrap routine)。这个程序会将磁盘上的第零轨第零扇区读入内存中,至于读到内存的哪里呢? --绝对位置07C0:0000(即07C00h处),这是IBM系列PC的特性。而位于Linux开机磁盘的boot sector上的,正是Linux的bootsect程序。
  把大家所熟知的MS DOS 与Linux的开机部分做个粗浅的比较。MS DOS 由位于磁盘上boot sector的boot程序负责把IO.SYS载入内存中,而IO.SYS则负有把DOS的kernel --MSDOS.SYS载入内存的重任。而Linux则是由位于boot sector 的bootsect程序负责把setup及Linux的kernel载入内存中,再将控制权交给setup。

相关帖子

沙发
msleep| | 2009-4-2 17:30 | 只看该作者

启动代码可以自己编写的吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

139

主题

185

帖子

0

粉丝