MINIX3的BootLoader分析
2007-09-22 21:00
99 查看
1. BIOS
当PC加电自检后,将根据BIOS中的设置,判断指定存储介质的主引导扇区的最后两个字节是否为0xAA55。如果是,则将该扇区载入到地址LOADOFF(0x7C00)处,并开始执行。这一步是由PC的BIOS自动完成的,与操作系统无关。
2. 主引导分区
masterboot.s的代码存放在主引导扇区中,会将自身拷贝到地址BUFFER处并跳转到那里开始执行。该段代码会通过搜索分区表查找出活动扇区,将其主引导扇区的代码拷贝到地址LOADOFF处并执行。
3. bootstrap
这段代码即为bootstrap(存放在bootblock.s文件中),会将boot monitor拷贝到地址BOOTSEG处,并跳转到BOOTSEG:BOOTOFF处执行。
4. boot monitor
boot monitor由boothead.s、boot.c、bootimage.c和rawfs.c四个文件组成,会载入Minix或其他系统。
4.1 boothead.s
boothead.s中的代码将首先被执行,会检测内存、CPU类型、视频模式等,最后调用boot.c中的boot函数。此外,boothead.s还提供了退出monitor、检测设备参数、标准I/O、实模式和保护模式转换等函数。
4.2 boot.c
boot.c提供了monitor的高级函数。boot函数会调用initialize函数来重定位monitor,以防止其被内核覆盖。initialize函数还会调用以下函数:
boot.c中的get_parameters函数,获取并设置环境变量;
rawfs.c中的r_super函数,确认系统使用的是Minix文件系统,并设置文件系统的相应参数。
在这两个函数返回后,boot monitor会执行用户输入的命令,其中最重要的是引导系统。
4.3 bootimage.c
最主要的函数是通过用户输入的命令来执行的bootminix函数,会调用select_image函数来查找需要的系统镜像,调用exec_image函数来加在系统镜像到内存中,以及boothead.s中minix函数将CPU切换到保护模式下执行,并将控制交递给内核执行。在Minix结束运行(如执行shutdown命令)后,bootminix函数才会返回。
4.4 rawfs.c
该文件提供了一个最简单的文件系统,以方便加载Minix内核。
当PC加电自检后,将根据BIOS中的设置,判断指定存储介质的主引导扇区的最后两个字节是否为0xAA55。如果是,则将该扇区载入到地址LOADOFF(0x7C00)处,并开始执行。这一步是由PC的BIOS自动完成的,与操作系统无关。
2. 主引导分区
masterboot.s的代码存放在主引导扇区中,会将自身拷贝到地址BUFFER处并跳转到那里开始执行。该段代码会通过搜索分区表查找出活动扇区,将其主引导扇区的代码拷贝到地址LOADOFF处并执行。
3. bootstrap
这段代码即为bootstrap(存放在bootblock.s文件中),会将boot monitor拷贝到地址BOOTSEG处,并跳转到BOOTSEG:BOOTOFF处执行。
4. boot monitor
boot monitor由boothead.s、boot.c、bootimage.c和rawfs.c四个文件组成,会载入Minix或其他系统。
4.1 boothead.s
boothead.s中的代码将首先被执行,会检测内存、CPU类型、视频模式等,最后调用boot.c中的boot函数。此外,boothead.s还提供了退出monitor、检测设备参数、标准I/O、实模式和保护模式转换等函数。
4.2 boot.c
boot.c提供了monitor的高级函数。boot函数会调用initialize函数来重定位monitor,以防止其被内核覆盖。initialize函数还会调用以下函数:
boot.c中的get_parameters函数,获取并设置环境变量;
rawfs.c中的r_super函数,确认系统使用的是Minix文件系统,并设置文件系统的相应参数。
在这两个函数返回后,boot monitor会执行用户输入的命令,其中最重要的是引导系统。
4.3 bootimage.c
最主要的函数是通过用户输入的命令来执行的bootminix函数,会调用select_image函数来查找需要的系统镜像,调用exec_image函数来加在系统镜像到内存中,以及boothead.s中minix函数将CPU切换到保护模式下执行,并将控制交递给内核执行。在Minix结束运行(如执行shutdown命令)后,bootminix函数才会返回。
4.4 rawfs.c
该文件提供了一个最简单的文件系统,以方便加载Minix内核。
相关文章推荐
- Bootloader启动流程分析
- MINIX3 系统任务分析
- 20、Bootloader(4) -- U-Boot第二阶段分析
- 分析minix3之中CPU是怎样在各进程之间切换
- 专题4-我是bootloader设计师-uboot工作流程分析+G-boot构架设计
- Bootloader分析
- WinCE6.0 BootloaderMain源码分析之OEMPlatformInit
- U-boot在开发板上移植过程详解(1)---bootloader架构分析
- 启动程序BootLoader的分析
- bootloader中USB下载的简单分析
- arm-linux内核start_kernel之前启动分析(1)-接过bootloader的衣钵
- Exynos 4412 bootloader分析
- 自己写bootloader笔记2---start.S分析
- Android Bootloader分析
- Bootloader学习分析
- bootloader与linux中位置无关代码(PIC)的分析理解
- Bootloader分析
- bootloader---1.u-boot Makefile分析
- 2410 bootloader分析(二)