引导流程解析_第1页
引导流程解析_第2页
引导流程解析_第3页
引导流程解析_第4页
引导流程解析_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

引导流程解析PHPChina工作室第一页,共四十六页。系统引导流程解析固件------硬件识别BootLoader------载入操作系统内核------初始化和控制转移init进程和初始化脚本liming第二页,共四十六页。固件设置实例liming第三页,共四十六页。系统引导流程“bootloader”这个术语是“bootstrapOperationSystemloader”的简称,即“自举操作系统载入器”。何谓“自举”,Merriam-Webster在线字典[注释4]的说法,首次使用bootstrap(自举)这个词是在1926年。它的来源确实是一个试图通过拉自己的鞋带(bootstrap),从而将自己举高。这也是“自力更生”(pullyourselfupbyyourbootstraps)这一谚语的来历。通常,“自举”意味着利用尽量可能少量的外部介入和资源,从而让某种东西工作起来。对于计算机来说,它的“自举”意味着使用少量的、独立的、内部的功能,从而初始化,并将控制权转交给主操作系统。

第四页,共四十六页。bootloader存放的位置:bootloader存放的位置有2个,一个是在MBR,先前已经提过,主引导记录,还有一个位置在于任何一个分区的第一个扇区。 bootloader存在于2个位置:MasterBootRecord(主引导记录),位于磁盘的0柱面0磁道的0扇区。这是一个特殊的位置,当系统启动的时候,BIOS会自动读取此处。IDE硬盘,软盘,SCSI硬盘等都有MBR。另外一个位置位于每个分区的第一个扇区。系统引导流程第五页,共四十六页。系统引导流程第六页,共四十六页。bootloader的种类,有许多,稍微列举几个SystemCommander 一个多重系统引导程序

NTLDR(windows) 用的引导程序

LILO (LInuxLOader) 一个过时的Linux引导程序

GRUB(GRandUnifiedBootloader)

一个时下非常流行的Linux引导程序系统引导流程第七页,共四十六页。使用GRUB而不使用LILO的原因:GRUB支持1024柱面以后的扇区的读取。 GRUB安装,使用比LILO更为灵活,方便,简单。系统引导流程第八页,共四十六页。GRUB的简介

GRUB的主配置文件/boot/grub/grub.conf.

在/etc/grub.conf是/boot/grub/grub.conf的软链接. 在/boot/grub目录下还有一些其他GRUB工作所需的文件. 系统引导流程第九页,共四十六页。GRUB的配置假设当前硬盘的分区情况/dev/hda1 /boot/dev/hda2 //dev/hda3 LinuxSwap/dev/hda4 ExtendedPartition/dev/hda5 NTFS系统引导流程第十页,共四十六页。假设当前的配置文件default=0timeout=10titleRedHat(2.4.22-3Thiz) root(hd0,0) kernel/vmlinuz-2.4.22-3Thizroroot=LABEL=/ initrd/initrd-2.4.22-3Thiz.imgtitleWindows root(hd0,4) chainloader+1系统引导流程第十一页,共四十六页。default——标示了当用户不做任何操作的情况下,将选择哪一个操作系统。title依次编号,从0开始。timeout——GRUB将会等待用户作一些操作,如果超过了时间,用户依旧没有动作,那么将自动进入default所指定的那个操作系统。timeout的时间单位为秒。设置时间为-1,表示无限等待,直到用户作出选择。title——开机用户选择操作系统时,所能看到标题,选择了相应的title后,将会执行该title到下一个title间所有grub命令。如果是最后一段title,就一直执行到文件结尾。当执行完每段title后grub会自动执行boot命令。系统引导流程第十二页,共四十六页。root(hd0,0)GRUB命令:root作用:挂载boot目录所在的分区。 hd0是根据/boot/grub/device.map所映射出来的。逗号后面的0就是hda1的分区号1减1所得到的结果。 如果是(hd0,1),那么就是将结果hda2的分区号2减1所得到的结果。其余依次类推。系统引导流程第十三页,共四十六页。kernel/vmlinuz-2.4.22-3Thizroroot=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/initrd-2.4.22-3Thiz.imgGRUB命令:initrd作用:1.挂载初始化RAMDisk,主要用于加载没有编译进内核的文件系统的驱动程序。2.可以用gzip来解压初始化RAMDisk,会发现里面有一个简单的文件系统和文件系统的驱动。系统引导流程第十七页,共四十六页。RAMDisk的制作:mkinitrd命令[root@thizserverroot]#mkinitrd/boot/initrd-2.4.22-3Thiz.custom.img2.4.22-3mkinitrd后面需要跟上2个参数。 第一个是生成初始化RAMDisk的具体位置以及文件名,文件名可以随便取,但是我们也要做到规范。initrd告诉别人是什么文件,然后跟上版本号,最后可以跟上一些自己的个性化名,最后加上.img收尾,告诉别人这是loop文件。

系统引导流程第十八页,共四十六页。第二个参数是你所要生成的初始化RAMDisk的内核版本号,这个版本号必须符合/lib/modules目录下的版本号。当前内核版本号可以通过uname-r查看[root@thizserverroot]#uname-r2.4.22-3Thiz系统引导流程第十九页,共四十六页。GRUB对于Windows的引导:

root(hd0,4)挂载windows系统盘所在的那个分区,最容易判断的是,该分区下有NTLDR这个文件。

chainloader+1把引导权从MBR手中转移到hda5这个分区的第一个扇区,由该扇区里的引导程序来继续执行引导过程。系统引导流程第二十页,共四十六页。GRUB在开机时的一些功能:当GRUB出现操作系统选择菜单时,我们会有一些选项出现。ThizServer(2.4.22-3Thiz)Windows系统引导流程第二十一页,共四十六页。命令c 进入GRUB的纯命令模式,将出现grub>的提示符,该模式下可以直接键入GRUB命令,最后键入boot,来完成引导。我们所需键入的那些命令就是grub.conf中title下的那些命令。grub>系统引导流程第二十二页,共四十六页。命令e对光标行进行编辑。我们首先看见的是title,选择了一个title后,按e,表示编辑该title,会把该title下的grub命令显示出来。root(hd0,0)kernel/vmlinuz-2.4.22-3Thizroroot=LABEL=/initrd/initrd-2.4.22-3Thiz.img系统引导流程第二十三页,共四十六页。命令e对选中的GRUB命令行进行编辑。对于编辑完该命令行后,可以按ESC放弃保存并退出或者按Enter保存并退出。当编辑完后,要按编辑完的方案启动,按b。grubedit>kernel/vmlinuz-2.4.22-3Thizroroot=LABEL=/系统引导流程第二十四页,共四十六页。d删除光标所在行。o在光标下插入新行。O在光标前出入新行。注意GRUB中不允许存在空行。root(hd0,0)kernel/vmlinuz-2.4.22-3Thizroroot=LABEL=/initrd/initrd-2.4.22-3Thiz.img系统引导流程第二十五页,共四十六页。/boot/grub目录下的其他文件。 stage1该文件就是装载在MBR里的一个文件,即前述的bootstrapstage*1_5这些都是GRUB的文件系统的驱动,正是它们,能使GRUB支持各种文件系统,使stage1能够顺利的装载stage2。stage2GRUB通过stage2来加载内存和初始化RAMDisk。前述的GRUB命令行都是由该程序提供的。系统引导流程第二十六页,共四十六页。

内核实例liming第二十七页,共四十六页。

init的工作init启动后读取inittab文件,执行缺省运行级别,从而继续引导过程。在UNIX系统中,init时第一个可以存在的进程,它的PID恒为1,但它也必须向一个更高级的功能负责:PID为0的内核调度器(Kernelscheduler),从而获得CPU时间。liming第二十八页,共四十六页。

inittab

文件剖析RedHat也支持7-9的运行级别,但他们是作为由管理员定义的、非标准的状态得以支持的。liming第二十九页,共四十六页。

inittab文件剖析运行级的切换:1.查看当前的运行级2.运行级的切换#init[0123456Ss]或#telinit[0123456Ss]liming第三十页,共四十六页。

inittab

文件剖析在inittab中,所有条目采取以下格式:id:run-levels:action:processid:条目的标识符,包含两个字母或数字run-levels:指定运行级别,可以指定多个action:指定运行状态process:指定要运行的可执行程序的完整路径liming第三十一页,共四十六页。

inittab文件剖析action常用取值如下:initdefault:指定系统缺省启动的运行级别sysinit:在与控制台通信时执行process中指定的命令wait:执行process中指定的命令,并等其结束再运行其他命令once:执行process中指定的命令,不等待其结束ctrlaltdel:按下Ctrl+Alt+Del时执行process指定的命令liming第三十二页,共四十六页。

inittab

文件剖析action常用取值续:powerfail:当出现电源错误时执行process指定的命令,不等待其结束powerokwait:当电源恢复时执行process指定的命令respawn:一旦process指定的命令中止,便重新运行该命令liming第三十三页,共四十六页。

inittab

文件剖析指定系统默认运行级别为3,如果想系统启动后自动运行XWindow,则将上面的3改为5启动脚本/etc/rc.d/rc.sysinit,完成系统服务程序启动,如系统环境变量设置、设置系统时钟、加载字体、检查加载文件系统、生成系统启动信息日志文件等。liming第三十四页,共四十六页。

inittab文件剖析判断默认运行级别,调用/etc/rc.d/rc脚本,执行相应运行级别目录中的服务程序,完成相应运行级别的初始化设置liming第三十五页,共四十六页。

inittab

文件剖析/etc/rc.d/init.d该目录下包含各个运行级别的服务程序脚本liming第三十六页,共四十六页。

inittab

文件剖析/etc/rc.d/rc[0123456].d分别存放对应于运行级别的服务程序脚本的符号链接,链接到init.d目录中的相应脚本liming第三十七页,共四十六页。

添加自启动程序ln-schkconfigntsysvtksysvliming第三十八页,共四十六页。

添加自启动程序liming第三十九页,共四十六页。

添加自启动程序l

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论