Linux系統啟動詳解(三),linux系統啟動詳解

來源:互聯網
上載者:User

Linux系統啟動詳解(三),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)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.