Linux启动过程综述

Linux启动过程综述

ID:37847555

大小:44.00 KB

页数:9页

时间:2019-06-01

Linux启动过程综述_第1页
Linux启动过程综述_第2页
Linux启动过程综述_第3页
Linux启动过程综述_第4页
Linux启动过程综述_第5页
资源描述:

《Linux启动过程综述》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、内容:一.Bootloader二.Kernel引导入口三.核心数据结构初始化--内核引导第一部分四.外设初始化--内核引导第二部分五.init进程和inittab引导指令六.rc启动脚本七.getty和login八.bash附:XDM方式登录本文以Redhat6.0Linux2.2.19forAlpha/AXP为平台,描述了从开机到登录的Linux启动全过程。该文对i386平台同样适用。一.Bootloader在Alpha/AXP平台上引导Linux通常有两种方法,一种是由MILO及其他类似的引导程序引导,另一种是由Firmware直接引

2、导。MILO功能与i386平台的LILO相近,但内置有基本的磁盘驱动程序(如IDE、SCSI等),以及常见的文件系统驱动程序(如ext2,iso9660等),firmware有ARC、SRM两种形式,ARC具有类BIOS界面,甚至还有多重引导的设置;而SRM则具有功能强大的命令行界面,用户可以在控制台上使用boot等命令引导系统。ARC有分区(Partition)的概念,因此可以访问到分区的首扇区;而SRM只能将控制转给磁盘的首扇区。两种firmware都可以通过引导MILO来引导Linux,也可以直接引导Linux的引导代码。“arch

3、/alpha/boot”下就是制作LinuxBootloader的文件。“head.S”文件提供了对OSFPAL/1的调用入口,它将被编译后置于引导扇区(ARC的分区首扇区或SRM的磁盘0扇区),得到控制后初始化一些数据结构,再将控制转给“main.c”中的start_kernel(),start_kernel()向控制台输出一些提示,调用pal_init()初始化PAL代码,调用openboot()打开引导设备(通过读取Firmware环境),调用load()将核心代码加载到START_ADDR(见“include/asm-alpha/

4、system.h”),再将Firmware中的核心引导参数加载到ZERO_PAGE(0)中,最后调用runkernel()将控制转给0x100000的kernel,bootloader部分结束。“arch/alpha/boot/bootp.c”以“main.c”为基础,可代替“main.c”与“head.S”生成用于BOOTP协议网络引导的Bootloader。Bootloader中使用的所有“srm_”函数在“arch/alpha/lib/”中定义。以上这种Boot方式是一种最简单的方式,即不需其他工具就能引导Kernel,前提是按照M

5、akefile的指导,生成bootimage文件,内含以上提到的bootloader以及vmlinux,然后将bootimage写入自磁盘引导扇区始的位置中。当采用MILO这样的引导程序来引导Linux时,不需要上面所说的Bootloader,而只需要vmlinux或vmlinux.gz,引导程序会主动解压加载内核到0x1000(小内核)或0x100000(大内核),并直接进入内核引导部分,即本文的第二节。对于I386平台i386系统中一般都有BIOS做最初的引导工作,那就是将四个主分区表中的第一个可引导分区的第一个扇区加载到实模式地址0

6、x7c00上,然后将控制转交给它。在“arch/i386/boot”目录下,bootsect.S是生成引导扇区的汇编源码,它首先将自己拷贝到0x90000上,然后将紧接其后的setup部分(第二扇区)拷贝到0x90200,将真正的内核代码拷贝到0x100000。以上这些拷贝动作都是以bootsect.S、setup.S以及vmlinux在磁盘上连续存放为前提的,也就是说,我们的bzImage文件或者zImage文件是按照bootsect,setup,vmlinux这样的顺序组织,并存放于始于引导分区的首扇区的连续磁盘扇区之中。bootse

7、ct.S完成加载动作后,就直接跳转到0x90200,这里正是setup.S的程序入口。setup.S的主要功能就是将系统参数(包括内存、磁盘等,由BIOS返回)拷贝到0x90000-0x901FF内存中,这个地方正是bootsect.S存放的地方,这时它将被系统参数覆盖。以后这些参数将由保护模式下的代码来读取。除此之外,setup.S还将video.S中的代码包含进来,检测和设置显示器和显示模式。最后,setup.S将系统转换到保护模式,并跳转到0x100000(对于bzImage格式的大内核是0x100000,对于zImage格式的是0

8、x1000)的内核引导代码,Bootloader过程结束。对于2.4.x版内核没有什么变化。二.Kernel引导入口在arch/alpha/vmlinux.lds的链接脚本控制下,链接程序将v

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。