Linux系統啓動詳解(三)

上節已係統initramfs已啓動完成,將系統控制權交給了真正的rootfs的/sbin/init,下面就是/sbin/init幹活的時間了。html

4       /sbin/init

  initramfs的init腳本,經過switch_root命令,切換到真正的root fs後,執行的第一個程序就是root fs下的/sbin/init,linux

4.1     switch_root

  swith_root newroot init [arg]ubuntu

eg:this

         initramfs中切換到真正的rootfs命令是switch_root /sysroot /sbin/initspa

         其中root fs掛載到了/sysroot目錄下操作系統

4.2     /sbin/init

/sbin/init:它是系統第一個執行的程序,即便用pa auxf查看,PID爲1的程序便是它,它能夠理解爲系統全部進程的父進程。.net

經過rpm -qf /sbin/init,查看系統中的/sbin/init程序來自於upstart,upstart的詳細說明可參見upstart官網[6]。unix

傳統的操做系統的/sbin/init是由System V init來管理,而upstart原來是爲ubuntu系統開發的,如今被愈來愈多linux系統所使用。關於System Vinit和upstart的區別,可參見文檔[7]。htm

/sbin/init主的要流程:blog

一、    執行/etc/rc.sysinit。

二、    執行/etc/rc,rc腳本會根據傳入的runlevel,選擇運行對應目錄下的腳務腳本。

三、    執行/etc/rc.local

4.3     rc.sysinit

  大致完成如下幾類任務:

一、  文件系統掛載(經過grub傳入參數,及配置文件,掛載/修復文件系統)。

二、  模塊加載(經過udev規則,加載模塊,如網卡、用戶自定義規則等)。

三、  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)

相關文章
相關標籤/搜索