【Linux】Linux开机启动流程

所谓开机启动流程,是指计算机从通电开机到进入登录界面的过程。熟悉开机启动流程,了解其背后的原理,可以更好的深入了解Linux的核心工作原理。

1、加载BIOS

BIOS(basic input output system),直译为“基本输入输出系统”。
bios信息极为重要,包含了CPU、设备启动顺序、硬盘、内存、时钟等各种计算机重要属性的基本信息。
bios一般搭载在计算机的主板上,一般可以按F12、FN等快捷键进入bios管理系统,各个硬件品牌可能有所不同。
通过读取bios信息,计算机选择读取存放了Linux系统的硬盘,将控制权交给该硬盘的第一个扇区,Linux开始控制系统。

2、读取MBR

MBR(Master Boot Record),主引导记录。
位于硬盘的第一个扇区,大小为512字节,存放了预启动信息、分区表信息。由引导区(446字节)和分区表(64字节)组成。
引导区的作用之一是找到标记为活动(ACTIVE)的分区,并将活动分区的引导区读入内存。
分区表则记录硬盘的分区信息。
系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0×7c00地址所在的物理内存中。其实被复制到物理内存的内容就是Boot Loader,而具体到你的电脑,那就是lilo或者grub了。

3、运行Boot Loader

boot loader是调用操作系统内核前运行的一个小程序,其作用为初始化硬件系统,将其调整到一个合适的状态为运行内核操作系统做准备。
Boot Loader有若干种,其中Grub、Lilo和spfdisk是常见的Loader,这里以Grub为例。
系统读取内存中的grub配置信息(一般为menu.lst或grub.lst),并依照此配置信息来启动不同的操作系统。

4、调用内核

根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。
系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。

5、运行init程序

内核被加载后,第一个运行的程序便是/sbin/init,该进程会完成很多工作,这里一一列举:
首先该文件会读取/etc/inittab文件,并依据此文件设定Linux的运行等级。
然后执行/etc/rc.d/rc.sysinit脚本程序,设定PATH、 设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。
线程init的最终完成状态是能够使得一般的用户程序可以正常地被执行,从而真正完成可供应用程序运行的系统环境。

6、启动内核模块,根据执行等级启动相应的脚本程序

7、执行/etc/rc.d/rc.local

这一步非常有用,是可以进行个性化的地方,比如你想开机自启动一个程序,可以将该程序的启动路径粘贴至改文件下,这样就能实现开机自启动。

8、登录

执行/bin/login程序,进入登录状态,输入账号密码后进入操作系统

你可能感兴趣的:(Linux,linux)