
1.加载 BIOS
计算机在接通电源之后首先由BIOS进行POST自检,然后依据BIOS内设置的引导顺序从硬盘、软盘或CDROM中读入引导块。BIOS的第1个步骤是加电POST自检。POST的工作是对硬件进行检测。BIOS的第2个步骤是进行本地设备的枚举和初始化。BIOS由两部分组成:POST代码和运行时的服务。
BIOS运行时会按照CMOS的设置定义的顺序来搜索处于活动状态并且可以引导的设备。引导设备可以是软盘、CD-ROM、硬盘上的某个分区、网络上的某个设备甚至是USB闪存。通常,Linux系统都是从硬盘上引导的,其中主引导记录(MBR)中包含主引导加载程序。
1.加载 BIOS
计算机在接通电源之后首先由BIOS进行POST自检,然后依据BIOS内设置的引导顺序从硬盘、软盘或CDROM中读入引导块。BIOS的第1个步骤是加电POST自检。POST的工作是对硬件进行检测。BIOS的第2个步骤是进行本地设备的枚举和初始化。BIOS由两部分组成:POST代码和运行时的服务。
BIOS运行时会按照CMOS的设置定义的顺序来搜索处于活动状态并且可以引导的设备。引导设备可以是软盘、CD-ROM、硬盘上的某个分区、网络上的某个设备甚至是USB闪存。通常,Linux系统都是从硬盘上引导的,其中主引导记录(MBR)中包含主引导加载程序。
2.读取 MBR
硬盘上第 0磁道第一个扇区被称为MBR,也就是 Master
Boot Record,即主引导记录,它的大小是 512字节,存放了预启动信息、分区表信息。
系统找到BIOS所指定的硬盘的MBR后,就会将其复制到物理内存中。其实被复制到物理内存的内容就是 Boot
Loader。
2.读取 MBR
硬盘上第 0磁道第一个扇区被称为MBR,也就是 Master
Boot Record,即主引导记录,它的大小是 512字节,存放了预启动信息、分区表信息。
系统找到BIOS所指定的硬盘的MBR后,就会将其复制到物理内存中。其实被复制到物理内存的内容就是 Boot
Loader。
3.Boot Loader
Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。
Boot Loader有若干种,其中Grub、 Lilo和spfdisk是常见的Loader。以grub为例,系统读取内存中的grub配置信息(一般为menu.lst或 grub.lst),并依照此配置信息来启动不同的操作系统。
4.加载内核
根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成 Linux核心环境的建立。
5.init依据inittab文件设定运行等级
内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。
其实/etc/inittab文件最主要的作用就是设定Linux的运行等级。Linux 的运行等级设定如下:
3.Boot Loader
Boot Loader 就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。
Boot Loader有若干种,其中Grub、 Lilo和spfdisk是常见的Loader。以grub为例,系统读取内存中的grub配置信息(一般为menu.lst或 grub.lst),并依照此配置信息来启动不同的操作系统。
4.加载内核
根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成 Linux核心环境的建立。
5.init依据inittab文件设定运行等级
内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。
其实/etc/inittab文件最主要的作用就是设定Linux的运行等级。Linux 的运行等级设定如下:
6.init进程执行rc.sysinit
在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,完成设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等。
7.启动内核模块
具体是依据/etc/modules.conf文件或/etc/modules.d 目录下的文件来装载内核模块。
8.执行不同运行级别的脚本程序
根据运行级别的不同,系统会运行 rc0.d到rc6.d 中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。
9.执行 /etc/rc.d/rc.local
rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。
10.执行/bin/login程序,进入登录状态
6.init进程执行rc.sysinit
在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,完成设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等。
7.启动内核模块
具体是依据/etc/modules.conf文件或/etc/modules.d 目录下的文件来装载内核模块。
8.执行不同运行级别的脚本程序
根据运行级别的不同,系统会运行 rc0.d到rc6.d 中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。
9.执行 /etc/rc.d/rc.local
rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。
10.执行/bin/login程序,进入登录状态