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

相关推荐

  • iptables的DNAT、SNAT配置

    DNAT:目的地址转换。当外网主机访问内网的某台服务器的时候,如果直接暴露服务器的IP于公网,可能会遭受各种各样的攻击,而DNAT的主要作用就是在服务器前面添加一台防火墙。将防火墙的地址公布出去,让外网客户端通过访问防火墙的地址就可以访问到本地服务器。这样就起到了保护服务器的目的; SNAT:源地址转换。内网主机在访问互联网的时候所有源地址都转换为防火墙的外…

    2017-06-12
  • N26-第四周-孙逸

    1、  复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 cp –r /etc/skel /home/tuser1 chmod –R 700 /home/tuser1 2、  编辑/etc/group文件,添加组hadoop。 group文件的内容格式: &…

    2017-03-10
  • Recycled和Recycler的故事

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jeffyyko.blog.51cto.com/28563/156012      首先说明一下,这里不是英语课堂,本文也不是来辨析Recycled和Recycler这两个单词的含义。Recy…

    Linux干货 2015-03-25
  • 如何在CentOS上构架一个简易的局域网web服务器

    首先,要取得适用你系统版本的http源码包,这里推荐两个网站: httpd.apache.org www.kernel.org 根据自己系统的版本下载相应的源码包; CentOS7 下载 httpd-2.4.25.tar CentOS6 下载 httpd-2.2.32.tar 以CentOS 6 示例: 首先,我们先来为http…

    2017-03-09
  • Linux三剑客之grep

    grep(Globel Search Regular Expression and Printing out the line)全面搜索正则表达式并把行打印出来)是一个强大的文本搜索工具,使用正则表达式搜索文本的文本,并把结果打印出来。Unix家族包括grep、egrep和fgrep。egrep是扩张的正则表达式它支持更多的字符,fgrep是fast gre…

    Linux干货 2016-08-12