linux启动过程---bootloader原理

linux 启动过程学习



/************************************************************************************************/
小知识:如何查看你的MBR内容。如果你希望查看你MBR的具体内容,请用以下命令:
# dd if=/dev/hda of=mbr.bin bs=512 count=1
# od -xa mbr.bin
需要以root身份运行的dd命令,读取你的第一个集成电子驱动器或者IDE驱动器的前512字节,并将他们写入
mbr.bim文件。od命令则是以十六进制和ASCII码形式打印出这个二进制文件
/************************************************************************************************/

为了启动操作系统,BIOS的runtime服务将搜索那些激活状态的或是可引导启动的设备,搜索的顺序则由CMOS设置决定(也就是我们平时所谓的在 BIOS中设置的启动顺序)。一个软驱,一台光驱,一个硬盘上的分区,网络上的设备甚至一个usb 闪存盘都可以作为一个启动设备。
当然,linux通常是从硬盘启动的。硬盘上的MBR(主启动记录)包含有基本的boot loader,它是一个512字节大小的扇区,位于磁盘的第一个扇区(0磁头0磁道1扇区)。当MBR被装载到RAM中后,BIOS就会将控制权转交给MBR。
位 于MBR中的主boot loader是一个512字节的镜像,其中不仅包含了程序代码,还包含了一个小的分区表,如图2所示。最初的446字节是主boot loader,它里面就包含有可执行代码以及错误消息文本。接下来的64字节是分区表,其中包含有四个分区的各自的记录(一个分区占16字节)
主boot loader的工作是寻找并加载第二boot loader。它通过分析分区表,找出激活分区来完成这个任务,当它找到一个激活分区时,它将继续扫描剩下的分区表中的分区,以便确认他们都是未激活的。确认完毕后,激活分区的启动记录从设备中被读到RAM,并被执行。起着次作用,或者说是第二boot loader,可以更加形象得被称为内核加载程序。这个阶段的任务就是加载linux内核,以及可选的初始化内存盘。

分析:
        之所以要分成两阶段bootloader,是因为从硬盘启动跟从光驱等其他启动设备启动是不一样的。硬盘有分区,其他启动设备没有(它只是一个固有设备)。这样也就决定了,在硬盘的MBR里有第一阶段的启动程序和分区信息,此启动程序要分析分区信息并寻找第一个激活分区将其启动记录从设备中读到RAM。接下来从第二bootloader开始就跟从光驱等其他启动设备引导启动系统一样了。
而把 第一阶段和第二阶段的boot loaders联合起来,就是在x86个人电脑中,我们所说的linux loader(LILO)或者GRand Unified Bootloader(GRUB)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值