标签:利用 开启 设备驱动 色彩显示 分区 用户控件 安装 方式 不难
启动流程总览以我们个人计算机架设的Linux主机为例,当我们按下电源后计算机硬件会主动读取BIOS来加载硬件信息及进行硬件系统的自我测试,之后系统会主动的读取第一个可启动的设备(由BIOS设置的),此时就可以读入引导装载程序了。引导装载程序可以指定使用哪个内核文件启动,并实际加载内核到内存当中解压缩与执行,此时内核就可以在内存当中去活动,并检测所有的硬件信息与加载适当的驱动程序来使主机开始运行,等到内核检测硬件与加载驱动程序完毕后,我们的操作系统便开始在pc上跑起来了。主机系统开始运行后,此时Linux才会调用外部程序开始准备软件执行环境,并且实际加载所有系统运行所需要的软件程序。所以系统的启动过程精简如下:
由上面总括的流程总览,我们不难发现,系统的启动流程可以概括为两大项:
一: 启动硬件设备
二:设置操作环境
第一项,启动硬件设备,我们需要经过BIOS的自检,boot loader的引导以及kernel的加载。
BISO自检
我们要想启动整个系统首先要让系统去加载BIOS(basic input output system),并通过BIOS程序去加载CMOS信息,并且通过CMOS内的设置值取得主机的各项硬件配置信息,然后BIOS会进行开机自检,开始执行硬件检测的初始化,进行启动设备的数据读取,及开始MBR与相关的任务。
boot loader
BIOS在加载的过程中指定启动的设备来让我们可以读取磁盘中的操作系统内核文件,但不同的操作系统的文件系统格式不同,因此我们需要一个引导装载程序来处理内核文件加载的问题。这个引导装载程序就就是bootloader,存放在了启动设备的第一个扇区内,也就是我们说的MBR(主引导分区),通过boot loader的引导,我们可以加载那内核。但是在这里有一个问题,在一个多操作系统的机器上,每个系统内核的加载,都需要使用自己的loader引导,而系统的MBR只有一个,那么我们是如何同时在一台主机上安装windows系统和Linux系统呢?
其实磁盘的每个分区上都留由一块引导扇区(boot sector)提供操纵系统安装boot loader。所以若是一个多操作系统,那么每个操作系统都会默认安装一个boot loader在自己的boot sector内,如下图所示:
但是问题依然没解决,要怎么样使得操作系统通过过自己的boot loader来加载内核呢? 这个就靠我们的boot loader自己了。boot loader主要功能有三个:1、提供启动菜单;2、加载内核文件;3、转交其他的loader。所以我们可以直接利用boot loader提供的菜单选项,选择要安装的操作系统,也就是选择其所对应的boot loader,来加载对应的内核。
知道了boot loader的功能后,我们变很好理解boot loader在启动流程中发挥的作用,但实际上,因为boot loader功能太多,而MBR之分给boot loader 446B的空间,这是完全不够的,所以Linux是将boot loader的程序运行与配置加载分为三个阶段(stage)来运行:
stage1:运行boot loader主程序(这部分存在于MBR的前446自己中),目的是识别要启动的系统的文件系统类型。
stage1_5:根据1识别的文件系统类型,加载相应的文件系统驱动,stage1_5中的文件系统驱动如图
stage2: 加载所有配置文件及相关的环境参数信息。读取grub.conf配置文件,加载驱动。grub.conf配置文件内容入如下:
内核加载阶段
在boot loader的引导下,成功读到grub.conf文件,开始加载内核
grub.conf:配置文件中重要设置如下:
title:定义各个操作系统的名称
root::表示内核文件存放的位置,这里指定的是分区位置,而非根目录。
kernel:内核的名称以及一些启动时的核心参数。由于启动过程中需要挂载根目录,因此就需要指定根目录所在的分区。rhgb表示色彩显示,quiet表示静默模式加载内核。
initrd(centos 5):一个伪系统,支持内核在这个虚拟的根系统上加载内核程序,来加载硬盘等设备。
grub.conf文件被读完之后,内核驱动开始加载。此时的系统就已经可以启动了。
在内核、硬件及驱动信息加载完毕后,内核会呼叫用户控件的第一个执行程序/sbin/init,init程序主要功能是准备软件运行环境,包括系统的主机名称、网络配置、文件系统格式等其他的服务的启动管理。而这些所有的操作都是通过initi的配置文件来定义
init的配置文件
标签:利用 开启 设备驱动 色彩显示 分区 用户控件 安装 方式 不难
原文地址:http://blog.51cto.com/13866567/2164277