Linux 启动流程

Linux启动流程

POST–>Boot Sequence–>MBR–>Grub–>Kernel(initramfs)–>rootfs–chroot(根切换)–>/sbin/init–>RunLevel–>rc.sysinit—>rc 3(rc.local)–>启动终端

1、Post加电自检

2、运行BIOS程序,选择启动源(硬盘,网络,CD/DVD,USB)

3、MBR 512Byte,(Bootloader,FAT,55AA)

    Bootloader:占446Byte,是Grub的第1阶段,有安装系统时写入到磁盘

    FAT:占64Byte,分区表,一个分区表占16Byte,所以主分区最多4个

    55AA:占2Byte,表示Bootloader是否有效

4、Grub

    Grub第1阶段:MBR中Bootloader程序,加载至内存中运行,可找到Grub第1.5阶段所在位置

    Grub第1.5阶段:透过Grub第1阶段,找到Grub第1.5阶段,使能够挂载Grub第2阶段所在分区(boot分区)

    Grub第2阶段:向内核传递参数,并加载内核运行

5、Kernel(initramfs)

    运行中的内核挂载initramfs文件系统(精简内核将部分文件系统驱动做到此微系统中),使得内核能挂载硬盘真的根文件系统

6、rootfs

    内核挂载硬盘的根文件系统

7、chroot

    根文件系统切换,从initramfs切换至我们安装linux的根分区

8、/sbin/init

    运行init程序

9、Runlevel

    CentOS5:运行起来的init程序会去读取/etc/inittab文件,根据配置文件启动相应运行级别

    id:3:initdefault:        #确定默认运行级别3
    si::sysinit:/etc/rc.d/rc.sysinit	#运行系统初始化脚本,完成系统初始化
    l3:3:wait:/etc/rc.d/rc 3		#以运行级别为3,运行/etc/rc.d/rc脚本

    CentOS6:读取/etc/inittab,执行/etc/init/目录下以.conf结尾的脚本,

[root@neolinux init]# ls
control-alt-delete.conf  plymouth-shutdown.conf  rc.conf             rcS-sulogin.conf     start-ttys.conf
init-system-dbus.conf    prefdm.conf             rcS.conf            serial.conf          tty.conf
kexec-disable.conf       quit-plymouth.conf      rcS-emergency.conf  splash-manager.conf
[root@neolinux init]# cat rc.conf 
# rc - System V runlevel compatibility
#
# This task runs the old sysv-rc runlevel scripts.  It
# is usually started by the telinit compatibility wrapper.
#
# Do not edit this file directly. If you want to change the behaviour,
# please create a file rc.override and put your changes there.
start on runlevel [0123456]
stop on runlevel [!$RUNLEVEL]
task
export RUNLEVEL
console output
exec /etc/rc.d/rc $RUNLEVEL            #运行/etc/rc.d/rc此脚本
[root@neolinux init]# cat rcS.conf
#***********
#**
exec /etc/rc.d/rc.sysinit              #运行/etc/rc.d/sysinit脚本
#**

10、rc.sysinit

    sysinit脚本运行功能:

    a、设置主机名
    b、激活udev,selinux
    c、挂载/etc/fstab中设定的文件系统
    d、根据/etc/sysctl.conf文件设置内核参数
    e、加载额外驱动
    f、....等等,还有很多

11、rc 3(rc.local)–>Service

    运行rc脚本传递运行级别,rc脚本会跟据对应的运行级别去运行/etc/rc.d/目录下以rc.#开头的目录下各种脚本

    K##开头的脚本表示关机时运行,##数字越大越优先关闭

    S##开头的脚本表示开机时运行,##数字越小越优先开启

    以运行级别为3,/etc/rc.d/rc3.d/目录下,以S99开头的链接文件,此脚本链接到/etc/rc.d/rc.local,用户自己有需要开机运行的脚本可以放在此处

12、终端启动

    用户输入用户名密码,认证通过加载配置文件进入bash环境

原创文章,作者:nice_neo_linux,如若转载,请注明出处:http://www.178linux.com/17825

(2)
nice_neo_linuxnice_neo_linux
上一篇 2016-06-09 22:15
下一篇 2016-06-09 22:15

相关推荐

  • 第十周作业

    1、请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情)     CentOS系统启动流程:     1.加电自检:由bios去检测各硬件是否存在且是否正常运行,然后进行硬件初始化     2.选择启动顺序,加载mbr:根据bios设置的设备启动顺序,…

    2017-07-03
  • sed编辑器使用

     简述       sed编辑器被称作流编辑器,和普通的交互式文本编辑器恰好相反。在交互式文本编辑器中(比如vim), 你可以用键盘命令来交互式地插入、删除或替换数据中的文本。流编辑器则会在编辑器处理数据之前基于预先 提供的一组规则来编辑数据流。sed编辑器可以根据命令来处理数据流中的数据,这些命令…

    2017-06-19
  • chrony、sudo、rsyslog

    chrony 程序环境: 配置文件:/etc/chrony.conf 主程序文件:chronyd 工具程序:chronyc unit file: chronyd.service 配置文件:chrony.conf server:指明时间服务器地址; allow NETADD/NETMASK allow all:允许所有客户端主机; deny NETADDR/N…

    Linux干货 2017-06-13
  • N25期–第十七周作业

    1、  结合图形描述LVS的工作原理; 针对高可伸缩、高可用网络服务的需求,给出了基于IP层和基于内容请求分发的负载平衡调度解决方法,并在Linux内核中实现了这些方法,将一组服务器构成一个实现可伸缩的、高可用网络服务的虚拟服务器。 虚拟服务器的体系结构如图所示,一组服务器通过高速的局域网或者地理分布的广域网相互连接,在它们的前端有一个负载调度器(…

    2017-05-08
  • Linux磁盘管理 and 文件系统管理

     磁盘管理     主要有以下几部分:        磁盘结构        分区类型        管理分区        管理文件系统     &…

    Linux干货 2016-09-01
  • 优云运维安全专家实践:使用802.1X+FreeRadius+LDAP实现网络准入方案

    本文,将为大家分享运维前沿在网络准入管理方面的实践经验。 网络准入业界常用方案 为了保证网络资源的安全,拒绝非法入侵,现代IT网络总需要一定的网络准入方案,而目前业界常用的网络准入方案有: 而今天给大家介绍的802.1X+FreeRadius+LDAP网络准入方案,则避免了上述方案中的缺点,是一套低成本,控制能力强,符合行业标准的一套网络准入认证体系。 什么…

    安全运维 2016-07-10