Linux启动流程剖析以个人计算机架设的Linux主机为例,简单来说,系统启动过程如下:1.加载BIOS的硬件信息与进行自我测试,并根据设置取得第一个可启动的设备;2.读取并执行第一个启动设备内MBR的bootLoader(即是grub,spfdisk等程序);3.根据bootloader的设置加载Kernel,Kernel会开始检查硬件与加载驱动程序;4.在硬件驱动成功后,Kernel会主动调用init进程,而init会取得run-level信息;5.Init执行/etc/rc.d/rc.sysinit文件来打算软件执行的操作环境(如网路、时区等);6.Init执行run-level的各个服务的启动(script形式);7.Init执行/etc/rc.d/rc.local文件;8.Init执行终端机模拟程序mingetty来启动login进程,最后就是等待用户登录。(鸟哥的私房菜)BIOS,开机自我测试与MBR在个人计算机构架下linux环境变量,想要启动整个系统首先就得让系统去加载BIOS,并通过BIOS程序去加载CMOS的信息,但是通过CMOS内的设置取得主机的各项硬件配置,比如CPU与插口设备的通信频度、启动设备的查找次序、硬盘的大小与类型、系统时间、各周边总线是否启动plugandplay(即插即用设备)、各插口设备的I/O地址以及与CPU通讯的IRQ中断等的信息。
在取得这种信息后,BIOS就会进行开机自检,之后开始执行硬件监测的初始化,并配置PnP设备,然后再定义出可启动的设备次序,接出来都会开始进行启动设备的数据读取了,即MBR相关的任务开始。因为系统软件大多放置到硬碟中,所以BIOS会指定启动的设备好让我们可以读取c盘中的操作系统内核文件。但因为不同的操作系统的文件系统格式的不同,因而我们必需要以一个引导装载程序来处理内核文件加载的问题,这个引导装载程序就被称为Bootloader。这个Bootloader程序安装在启动设备的第一个磁道(sector)内,也就是MBR(MasterBootRecordlinux启动流程图,主引导分区)BIOS是通过硬件的INT13中断功能读取MBR的,也就是说linux启动流程图,只要BIOS才能测量到你的c盘,那它就有办法通过INT13这条信道来读取该c盘的第一个磁道内的MBR。这样,bootloader也就能否顺利执行。BootLoader的功能其主要功能是要认识操作系统的文件按格式并据以加载内核到显存中去执行。因为不同操作系统的文件格式不一致,因而每种操作系统都有自己的bootloader。
用自己的loader才有办法载入内核文件。那在多操作系统中,系统的MBR只有一个,如何来实现双系统呢?(见书)。加载内核检查硬件与initrd的功能。当我们通过bootloader的管理而开始读取内核文件后,接出来,Linux都会将内核解压缩到显存中,而且借助内核的功能中文linux操作系统,开始测试与驱动各个周边设备,包括储存设备、CPU、网卡、声卡等。此时Linux内核会以自己的功能重新检查一次硬件,而不一定会使用BIOS检查到得硬件信息。也就是说,内核此时才开始接管BIOS后的工作了。内核文件通常放置到/boot上面,但是起名/boot/vmlinuz。为了硬件开发商与其他内核功能开发者的便利,因而Linux内核是可以通过动态加载内