没有合适的资源?快使用搜索试试~ 我知道了~
(2) 执行setup_arch(),对系统结构进行设置 (3)执行sched_init(),对系统的调度机制进行初始化 (4)执行parse_early_pa
资源详情
资源评论
资源推荐
开机过程指的是从打开计算机电源直到 LINUX 显示用户登录画面的全过程。分析 LINUX 开机
过程也是深入了解 LINUX 核心工作原理的一个很好的途径。
启动第一步--加载 BIOS
当你打开计算机电源,计算机会首先加载 BIOS 信息,BIOS 信息是如此的重要,以至于
计算机必须在最开始就找到它。这是因为 BIOS 中包含了 CPU 的相关信息、设备启动顺序信
息、硬盘信息、内存信息、时钟信息、PnP 特性等等。在此之后,计算机心里就有谱了,知
道应该去读取哪个硬件设备了。在 BIOS 将系统的控制权交给硬盘第一个扇区之后,就开始
由 Linux 来控制系统了。
启动第二步--读取 MBR
硬盘上第 0 磁道第一个扇区被称为 MBR,也就是 Master Boot Record,即主引导记录,
它的大小是 512 字节,可里面却存放了预启动信息、分区表信息。可分为两部分:第一部分
为引导(PRE-BOOT)区,占了 446 个字节;第二部分为分区表(PARTITION PABLE),共有 66 个
字节,记录硬盘的分区信息。预引导区的作用之一是找到标记为活动(ACTIVE)的分区,并将
活动分区的引导区读入内存。
系统找到 BIOS 所指定的硬盘的 MBR 后,就会将其复制到 0×7c00 地址所在的物理内存
中。其实被复制到物理内存的内容就是 Boot Loader,而具体到你的电脑,那就是 lilo 或者
grub 了。
启动第三步--Boot Loader
Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们
可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状
态,以便为最终调用操作系统内核做好一切准备。通常,BootL oade:是严重地依赖于硬件
而实现的,不同体系结构的系统存在着不同的 Boot Loader。
Linux 的引导扇区内容是采用汇编语言编写的程序,其源代码在 arch/i386/boot 中(不
同体系的 CPU 有其各自的 boot 目录),有 4 个程序文件:
◎bootsect.S,引导扇区的主程序,汇编后的代码不超过 512 字节,即一个扇区的 大
小
◎setup.S, 引导辅助程序
◎edd.S,辅助程序的一部分,用于支持 BIOS 增强磁盘设备服务
◎video.S,辅助程序的另一部分,用于引导时的屏幕显示
Boot Loader 有若干种,其中 Grub、Lilo 和 spfdisk 是常见的 Loader,这里以 Grub 为
例来讲解吧。
系统读取内存中的 grub 配置信息(一般为 menu.lst 或 grub.lst),并依照此配置信息
来启动不同的操作系统。
启动第四步--加载内核
根据 grub 设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,
屏幕一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK,
booting the kernel”。
系统将解压后的内核放置在内存之中,并调用 start_kernel()函数来启动一系列的初
始化函数并初始化各种设备,完成 Linux 核心环境的建立。至此,Linux 内核已经建立起来
了,基于 Linux 的程序应该可以正常运行了。
start_kenrel()定义在 init/main.c 中,它就类似于一般可执行程序中的 main()函数,
系统在此之前所做的仅仅是一些能让内核程序最低限度执行的初始化操作,真正的内核初始
化过程是从这里才开始。函数 start_kerenl()将会调用一系列的初始化函数,用来完成内
核本身的各方面设置,目的是最终建立起基本完整的 Linux 核心环境。
易烫YCC
- 粉丝: 23
- 资源: 315
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0