您好,欢迎访问三七文档
引导流程解析系统引导流程解析固件------硬件识别BootLoader------载入操作系统内核------初始化和控制转移init进程和初始化脚本liming系统引导流程“bootloader”这个术语是“bootstrapOperationSystemloader”的简称,即“自举操作系统载入器”。何谓“自举”,Merriam-Webster在线字典[注释4]的说法,首次使用bootstrap(自举)这个词是在1926年。它的来源确实是一个试图通过拉自己的鞋带(bootstrap),从而将自己举高。这也是“自力更生”(pullyourselfupbyyourbootstraps)这一谚语的来历。通常,“自举”意味着利用尽量可能少量的外部介入和资源,从而让某种东西工作起来。对于计算机来说,它的“自举”意味着使用少量的、独立的、内部的功能,从而初始化,并将控制权转交给主操作系统。存放的位置:bootloader存放的位置有2个,一个是在MBR,先前已经提过,主引导记录,还有一个位置在于任何一个分区的第一个扇区。bootloader存在于2个位置:MasterBootRecord(主引导记录),位于磁盘的0柱面0磁道的0扇区。这是一个特殊的位置,当系统启动的时候,BIOS会自动读取此处。IDE硬盘,软盘,SCSI硬盘等都有MBR。另外一个位置位于每个分区的第一个扇区。系统引导流程的种类,有许多,稍微列举几个SystemCommander一个多重系统引导程序NTLDR(windows)用的引导程序LILO(LInuxLOader)一个过时的Linux引导程序GRUB(GRandUnifiedBootloader)一个时下非常流行的Linux引导程序系统引导流程的原因:GRUB支持1024柱面以后的扇区的读取。GRUB安装,使用比LILO更为灵活,方便,简单。系统引导流程的主配置文件/boot/grub/grub.conf.在/etc/grub.conf是/boot/grub/grub.conf的软链接.在/boot/grub目录下还有一些其他GRUB工作所需的文件.系统引导流程的配置假设当前硬盘的分区情况/dev/hda1/boot/dev/hda2//dev/hda3LinuxSwap/dev/hda4ExtendedPartition/dev/hda5NTFS系统引导流程=0timeout=10titleRedHat(2.4.22-3Thiz)root(hd0,0)kernel/vmlinuz-2.4.22-3Thizroroot=LABEL=/initrd/initrd-2.4.22-3Thiz.imgtitleWindowsroot(hd0,4)chainloader+1系统引导流程——标示了当用户不做任何操作的情况下,将选择哪一个操作系统。title依次编号,从0开始。timeout——GRUB将会等待用户作一些操作,如果超过了时间,用户依旧没有动作,那么将自动进入default所指定的那个操作系统。timeout的时间单位为秒。设置时间为-1,表示无限等待,直到用户作出选择。title——开机用户选择操作系统时,所能看到标题,选择了相应的title后,将会执行该title到下一个title间所有grub命令。如果是最后一段title,就一直执行到文件结尾。当执行完每段title后grub会自动执行boot命令。系统引导流程(hd0,0)GRUB命令:root作用:挂载boot目录所在的分区。hd0是根据/boot/grub/device.map所映射出来的。逗号后面的0就是hda1的分区号1减1所得到的结果。如果是(hd0,1),那么就是将结果hda2的分区号2减1所得到的结果。其余依次类推。系统引导流程=LABEL=/GRUB命令:kernel作用:挂载Linux的内核映像文件。/vmlinuz-2.4.22-3Thiz为Linux内核映像文件ro以只读方式挂载,防止在初始化时破坏了系统根分区。root=LABEL=/以卷标方式挂载真正的根分区。root=/dev/hda2与卷标具有同样的效果,挂载真正的根分区。系统引导流程卷标名的使用作用:卷标名相当于该分区的一个别名,但在使用前必须写上LABEL=,然后加一个存在的卷标名,使用的时候等号左右不许有空格。卷标名长度为16,不许有空格等特殊字符。用命令e2label可以给磁盘指定或者查看一个卷标名[root@thizserverroot]#e2label/dev/hda2/键入命令后加一个分区,可以查看当前的卷标名。系统引导流程取消一个分区的卷标名,就给该分区,赋2个双引号,里面为空。[root@thizserverroot]#e2label/dev/hda2“”[root@thizserverroot]#e2label/dev/hda2给该分区负一个卷标名。卷标名可以随意取,只要在使用的时候,调用了正确的卷标名即可。[root@thizserverroot]#e2label/dev/hda2realroot[root@thizserverroot]#e2label/dev/hda2realroot系统引导流程命令:initrd作用:1.挂载初始化RAMDisk,主要用于加载没有编译进内核的文件系统的驱动程序。2.可以用gzip来解压初始化RAMDisk,会发现里面有一个简单的文件系统和文件系统的驱动。系统引导流程的制作:mkinitrd命令[root@thizserverroot]#mkinitrd/boot/initrd-2.4.22-3Thiz.custom.img2.4.22-3mkinitrd后面需要跟上2个参数。第一个是生成初始化RAMDisk的具体位置以及文件名,文件名可以随便取,但是我们也要做到规范。initrd告诉别人是什么文件,然后跟上版本号,最后可以跟上一些自己的个性化名,最后加上.img收尾,告诉别人这是loop文件。系统引导流程的内核版本号,这个版本号必须符合/lib/modules目录下的版本号。当前内核版本号可以通过uname-r查看[root@thizserverroot]#uname-r2.4.22-3Thiz系统引导流程的引导:root(hd0,4)挂载windows系统盘所在的那个分区,最容易判断的是,该分区下有NTLDR这个文件。chainloader+1把引导权从MBR手中转移到hda5这个分区的第一个扇区,由该扇区里的引导程序来继续执行引导过程。系统引导流程在开机时的一些功能:当GRUB出现操作系统选择菜单时,我们会有一些选项出现。ThizServer(2.4.22-3Thiz)Windows系统引导流程的纯命令模式,将出现grub的提示符,该模式下可以直接键入GRUB命令,最后键入boot,来完成引导。我们所需键入的那些命令就是grub.conf中title下的那些命令。grub系统引导流程对光标行进行编辑。我们首先看见的是title,选择了一个title后,按e,表示编辑该title,会把该title下的grub命令显示出来。root(hd0,0)kernel/vmlinuz-2.4.22-3Thizroroot=LABEL=/initrd/initrd-2.4.22-3Thiz.img系统引导流程命令行进行编辑。对于编辑完该命令行后,可以按ESC放弃保存并退出或者按Enter保存并退出。当编辑完后,要按编辑完的方案启动,按b。grubeditkernel/vmlinuz-2.4.22-3Thizroroot=LABEL=/系统引导流程删除光标所在行。o在光标下插入新行。O在光标前出入新行。注意GRUB中不允许存在空行。root(hd0,0)kernel/vmlinuz-2.4.22-3Thizroroot=LABEL=/initrd/initrd-2.4.22-3Thiz.img系统引导流程目录下的其他文件。stage1该文件就是装载在MBR里的一个文件,即前述的bootstrapstage*1_5这些都是GRUB的文件系统的驱动,正是它们,能使GRUB支持各种文件系统,使stage1能够顺利的装载stage2。stage2GRUB通过stage2来加载内存和初始化RAMDisk。前述的GRUB命令行都是由该程序提供的。系统引导流程的工作init启动后读取inittab文件,执行缺省运行级别,从而继续引导过程。在UNIX系统中,init时第
本文标题:09 引导流程解析
链接地址:https://www.777doc.com/doc-630867 .html