linux的启动原理
作者 佚名技术
来源 Linux系统
浏览
发布时间 2012-03-22
*****************************》start《********************************** Linux的启动过程大致可以分为5各部分 1、 BOIS加电自检 2、 加载主引导程序(MBR) 3、 加载次引导程序(GRUB) 4、 加载linux内核镜像 5、 加载init进程 Linux启动的总揽图:
这5个部分具体是怎么协同工作的呢?? 一、,计算机启动后进行各种硬件设备,然后按照CMOS设置的启动顺序搜索处于活动状态并可以引导的设备.一般主要以硬盘做引导,硬盘中得主引导记录(master boot record)中保存有引导加载程序. MBR是一个512字节的扇区,位于硬盘的第一个扇区中. 可以用命令dd查看: [root@Bruse ~]# dd if=/dev/sda of=mbr.dmp bs=512 count=1 1 0 records in 1 0 records out 512 bytes (512 B) copied, 0.000104006 seconds, 4.9 MB/s [root@Bruse ~]# od -xa mbr.dmp 0000000 48eb 1090 d08e 00bc b8b0 0000 d88e c08e k H dle dle so P < nul 0 8 nul nul so X so @ 0000020 befb 7c00 00bf b906 0200 a4f3 21ea 0006 { > nul | ? nul ack 9 nul stx s $ j ! ack nul 0000040 be00 07be 0438 0b75 c683 8110 fefe 7507 nul > > bel 8 eot u vt etx F dle soh ~ ~ bel u 0000060 ebf3 b416 b002 bb01 7c00 80b2 748a 0203 s k syn 4 stx 0 soh ; nul | 2 nul nl t etx stx 0000100 0080 8000 d441 0000 0800 90fa f690 80c2 nul nul nul nul A T nul nul nul bs z dle dle v B nul 0000120 0275 80b2 59ea 007c 3100 8ec0 8ed8 bcd0 … … 其中dd命令可以读取MBR的内容,然后将读取到的内容写入mbr.dmp文件中.然后以ASCII和十六进制显示文件的内容. BIOS会把MBR中的引导加载程序加载到内存中去,然后把控制权交给引导加载程序继续启动. 二、加载引导程序 Redhat默认的引导程序是GRUB,其引导过程可以分为2各阶段:1、保存在MBR中的主引导加载程序的加载(MBR是一个512字节的映像,其中包括机器的二进制代码和一个小分区表.MBR的任务就是查找并加载保存在硬盘分区上的次引导加载程序.它是通过分区表来查找活动分区,然后将活动分区的次引导加载程序从设备读入到内存中并运行),2、次引导加载程序(也叫内核加载程序),这个阶段只要是加载linux的内核.一旦内核加载成功就会出现下面的界面:
这个界面中可以用上下左右的方向键选择你想启动的系统或者内核.不选择的话,默认过5秒会进入到grub.conf中设置的系统,GRUB确定启动的系统后,他就会定位相应的内核映像所在的/boot/目录. 内核映像文件的格式:/boot/vmlinuz-<内核版本>.例如centOS5.5的内核映像文件就是:/boot/vmlinuz-2.6.18-194.el5 接着GRUB会把内核的映像加载到内存中去.内核映像不是一个可以执行的内核,而是一个压缩的内核映像.GRUB会把这个内核的映像解压,加载到内存中并执行,至此GRUB的任务完成了. 接着我们看一下GRUB的配置: GRUB的配置是通过/boot/grub/grub.conf来完成的,我们看看grub.conf #vim /boot/grub/grub.conf # grub.conf generated by anaconda # # Note that you do not have to rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel and initrd paths are relative to /boot/, eg. # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00 # initrd /initrd-version.img #boot=/dev/sda //位 |
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
关于linux的启动原理的所有评论