Chinaunix首页 | 论坛 | 博客
  • 博客访问: 34791
  • 博文数量: 10
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 80
  • 用 户 组: 普通用户
  • 注册时间: 2013-11-20 21:22
文章分类

全部博文(10)

文章存档

2014年(7)

2013年(3)

我的朋友

分类: LINUX

2014-03-02 17:47:36

linux启动流程

1.加载BIOS的硬件信息与进行自我测试,并依据设置取得第一个可启动设备

  启动整个系统就得要让系统去加载BIOS,并通过BIOS程序去加载CMOS的信息,取得这些信息后,BIOS还会进行开机自检。然后开始执行硬件检测的初始化,之后在定义出可启动的设备顺序,接下来就会开始进行启动设备的数据读取。

2.读取并执行第一个启动设备内MBR的boot loader(即是grub,spdisk)

   boot loader的主要功能:提供菜单,用户可以选择不同的启动选项,这也是多重引导的重要功能;加载内核模块文件,直接指向可启动的程序区段来开始操作系统;转交其他loader,将引导装载功能转交给其他loader负责。

3.依据boot loader的设置加载Kernel,Kernel会开始检测硬件与加载驱动程序

   内核会以自己的功能重新检测一次硬件,而不一定会使用BIOS检测到的硬件信息,也就是说,内核从此接管BIOS后的工作。虚拟文件系统,一般使用文件名为/boot/initrd,通过该程序来加载启动过程中所需的内核模块,通常这些模块是USB,RAID,LVM,SCSI等文件系统与磁盘接口的驱动程序

4.在硬件驱动成功后,Kernel会主动调用init进程,而init会取得run-level信息

   /sbin/init最主要的功能就是准备软件执行的环境,包括系统的主机名,网络设置,语系处理,文件系统格式及其他服务的启动。init的配置文件为/etc/initable

   init的处理流程:1.先取得runlevel即默认执行等级的相关等级。

                  2.使用/etc/rc.d/rc.sysinit进行系统初始化

                  3.设置好ctrl+alt+del组合键功能

                  4.设置不断电系统的pf,pr两种机制

                  5.启动mingetty的6个终端机

                  6.最终以/etc/X11/perfdm-nodaemon 启动图形界面

5.init执行/etc/rc.d/rc.sysinit文件来准备软件执行的操作环境(如网络、时区等)

     rc.sysinit主要工作:1.取得网络环境与主机配置

                        2.测试与挂载内存设备/proc及USB设备/sys

                        3.决定是否启动selinux

                        4.启动系统的随机数生成器

                        5.设置终端机字体

                        6.设置启动过程中的欢迎界面

                        7.设置系统时间与时区设置

                        8.设置设备的检测与PnP参数的测试

                        9.用户自定义模块的加载(用户可以在/etc/sysconfig/modules/*.modules中加入自定义的模块,则在此时会被加载到系统中)

                        10.加载内核的相关配置(读取/etc/sysctl.conf这个文件的设置值)

                        11.设置主机名与初始化电源管理模块(ACPI)

                        12.初始化软件磁盘阵列:主要是通过/etc/mdadm.conf来设置好的

                        13.初始化LVM的文件系统功能

                        14.以fsck检验磁盘文件系统:会进行filesystem check

                        15.进行磁盘配额quota的转换(非必要)

                        16.重新以可读写模式挂载系统磁盘

                        17.启动quota功能:所以我们不需要自定义quotaon的操作

                        18.启动系统伪随机数生成器

                        19.清除启动过程中的临时文件

                        20.将启动相关信息加载/var/log/dmesg

6.init执行run-level的各个服务的启动(script方式)

      通过外部第一号参数$1来取得第一号参数($1)来取得想要执行的脚本目录,即由/etc/rc.d/rc 5可以取得/etc/rc5.d/这个目录来准备处理相关的脚本程序。

      找到/etc/rc5.d/K??开头的文件,并进行/etc/rc5.d/K??* stop的操作

      找到/etc/rc5.d/S??*开头的文件,并进行/etc/rc5.d/S??* start的操作

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

8.init执行终端机模拟程序mingetty来启动login进程,最后等待用户登录

 

阅读(1241) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~