zoukankan      html  css  js  c++  java
  • Linux系统启动详解(三)

    上节已系统initramfs已启动完成,将系统控制权交给了真正的rootfs的/sbin/init,下面就是/sbin/init干活的时间了。

    4       /sbin/init

      initramfs的init脚本,通过switch_root命令,切换到真正的root fs后,执行的第一个程序就是root fs下的/sbin/init,

    4.1     switch_root

      swith_root newroot init [arg]

    eg:

             initramfs中切换到真正的rootfs命令是switch_root /sysroot /sbin/init

             其中root fs挂载到了/sysroot目录下

    4.2     /sbin/init

    /sbin/init:它是系统第一个执行的程序,即使用pa auxf查看,PID为1的程序即是它,它可以理解为系统所有进程的父进程。

    通过rpm -qf /sbin/init,查看系统中的/sbin/init程序来自于upstart,upstart的详细说明可参见upstart官网[6]。

    传统的操作系统的/sbin/init是由System V init来管理,而upstart原来是为ubuntu系统开发的,现在被越来越多linux系统所使用。关于System Vinit和upstart的区别,可参见文档[7]。

    /sbin/init主的要流程:

    1、    执行/etc/rc.sysinit。

    2、    执行/etc/rc,rc脚本会根据传入的runlevel,选择运行对应目录下的脚务脚本。

    3、    执行/etc/rc.local

    4.3     rc.sysinit

      大体完成以下几类任务:

    1、  文件系统挂载(通过grub传入参数,及配置文件,挂载/修复文件系统)。

    2、  模块加载(通过udev规则,加载模块,如网卡、用户自定义规则等)。

    3、  SELINUX相关(未了解)。

    下面两个链接也有一些说明:

    http://linux.chinaunix.net/techdoc/beginner/2009/01/21/1059280.shtm

    http://www.cnblogs.com/image-eye/archive/2011/10/21/2220344.html

    4.4     rc*.d

     所有服务脚本目录,不同级别对应不同目录的脚本会被执行,这里就不再详细说明。

    # Default runlevel. The runlevels used are:

    #   0 - halt (Do NOT set initdefault to this)

    #   1 - Single user mode

    #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)

    #   3 - Full multiuser mode

    #   4 - unused

    #   5 - X11

    #   6 - reboot (Do NOT set initdefault to this)

    有一种女人,叫37℃程序'媛'。平凡但不平庸;严谨但不无趣;不愠不火...
  • 相关阅读:
    用两个栈实现队列
    *重建二叉树
    *链表中环的入口结点
    *复杂链表的复制
    替换空格
    python多线程文件拷贝
    进程、线程、协程
    文件处理工具sed、awk
    CentOs软件安装
    python logging模块
  • 原文地址:https://www.cnblogs.com/fangyuan1004/p/4091887.html
Copyright © 2011-2022 走看看