linux启动步骤详解.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
linux启动步骤详解

Linux启动流程分析 以个人计算机架设的Linux主机为例,简单来说,系统启动过程如下: 加载BIOS的硬件信息与进行自我测试,并依据设置取得第一个可启动的设备; 读取并执行第一个启动设备内MBR的boot Loader(即是grub,spfdisk等程序); 依据boot loader的设置加载Kernel,Kernel会开始检测硬件与加载驱动程序; 在硬件驱动成功后,Kernel会主动调用init进程,而init会取得run-level信息; Init执行/etc/rc.d/rc.sysinit文件来准备软件执行的操作环境(如网络、时区等); Init执行run-level的各个服务的启动(script方式); Init执行/etc/rc.d/rc.local文件; Init执行终端机模拟程序mingetty来启动login进程,最后就是等待用户登陆。 (鸟哥的私房菜) BIOS,开机自我测试与MBR 在个人计算机架构下,想要启动整个系统首先就得让系统去加载BIOS,并通过BIOS程序去加载CMOS的信息,并且通过CMOS内的设置取得主机的各项硬件配置,例如CPU与接口设备的通讯频率、启动设备的查找顺序、硬盘的大小与类型、系统时间、各周边总线是否启动 plug and play(即插即用设备)、各接口设备的I/O地址以及与CPU通信的IRQ中断等的信息。 在取得这些信息后,BIOS还会进行开机自检,然后开始执行硬件检测的初始化,并配置PnP设备,之后再定义出可启动的设备顺序,接下来就会开始进行启动设备的数据读取了,即MBR相关的任务开始。 由于系统软件大多放置到硬盘中,所以BIOS会指定启动的设备好让我们可以读取磁盘中的操作系统内核文件。但由于不同的操作系统的文件系统格式的不同,因此我们必须要以一个引导装载程序来处理内核文件加载的问题,这个引导装载程序就被称为Bootloader。这个Bootloader程序安装在启动设备的第一个扇区(sector)内,也就是MBR(MasterBoot Record,主引导分区) BIOS是通过硬件的INT 13中断功能读取MBR的,也就是说,只要BIOS能够检测到你的磁盘,那它就有办法通过INT 13这条信道来读取该磁盘的第一个扇区内的MBR。这样,boot loader 也就能够顺利执行。 Boot Loader的功能 其主要功能是要认识操作系统的文件按格式并据以加载内核到内存中去执行。由于不同操作系统的文件格式不一致,因此每种操作系统都有自己的boot loader。用自己的loader才有办法载入内核文件。那在多操作系统中,系统的MBR只有一个,怎样来实现双系统呢?(见书)。 加载内核检测硬件与initrd的功能。 当我们通过boot loader的管理而开始读取内核文件后,接下来,Linux就会将内核解压缩到内存中,并且利用内核的功能,开始测试与驱动各个周边设备,包括存储设备、CPU、网卡、声卡等。此时Linux内核会以自己的功能重新检测一次硬件,而不一定会使用BIOS检测到得硬件信息。也就是说,内核此时才开始接管BIOS后的工作了。内核文件一般放置到/boot里面,并且取名/boot/vmlinuz。 为了硬件开发商与其他内核功能开发者的便利,因此Linux内核是可以通过动态加载内核模块的(就请想成驱动程序即可),这些内核模块就放置在/lib/modules/目录内。 由于模块放置到磁盘根目录内(记得/lib 不可以与/分别放在不同的分区),因此在启动的过程中内核必须要挂载根目录,这样才能够读取内核模块提供加载驱动程序的功能,而且为了担心影响到磁盘的文件系统,因此启动过程中根目录是以只读的方式来挂载的。 通常,非必要的功能可以编译成为模块的内核功能,因此USB、STAT、SCSI等磁盘设备的驱动程序通常都是以模块的方式来存在的。例如,你的linux是安装在SATA磁盘上面的,可以通过BIOS的INT13取得Boot loader 与kernel文件来启动,然后kernel会开始接管系统并且检测硬件及尝试挂载根目录来取得额外的驱动程序。 问题是,内核根本不认识SATA磁盘,所以需要加载SATA磁盘的驱动程序,否则根本就无法挂载根目录。但是SATA的驱动程序在/lib/modules/目录内,根本无法挂载根目录,又怎么读取到/lib/modules/目录内的驱动程序呢?此时,通过虚拟文件系统来处理这个问题。 虚拟文件系统一般使用的文件名为/boot/initrd,这个文件的特色是,它也能通过Boot loader来加载到内存中,然后这个文件会被压缩并且在内存当中仿真成一个根目录,且此仿真在内存当中的文件系统能够提供一个可执行的程序,通过该程序来加载启动过程中所需要的内核模块,通

文档评论(0)

561190791 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档