CentOS 5與6的啟動流程

來源:互聯網
上載者:User

標籤:centos 啟動

Linux主要組成部分:kernel+rootfs+庫+程式

    kernel(核心):進程管理、記憶體管理、網路管理、驅動程式、檔案系統、安全功能等

    rootfs(根檔案系統):glibc(庫檔案)等

    庫:函數集合,function,調用介面

        procedure:程序呼叫,無傳回值

        function:函數調用,有傳回值

核心設計流派:

    單核心設計:所有功能整合於同一個程式中。例如:Linux

    微核心設計:每種功能使用給一個單獨子系統實現。例如:windows,solaris

Linux核心特點:

    支援模組化: .ko

    支援模組的動態裝載和卸載

Linux核心組成部分:

    核心檔案:/boot/vmlinux-VERSION-release

    ramdisk:輔助裝載硬碟驅動

        centos5:類比成硬碟/boot/initrd-VERSION-resease.img

        centos6:類比成檔案系統/boot/initramfs-VERSION-resease.img    

        650) this.width=650;" src="http://s5.51cto.com/wyfs02/M00/7A/26/wKiom1ajecXjX4z0AAA1-nlNfGY259.png" title="1.png" alt="wKiom1ajecXjX4z0AAA1-nlNfGY259.png" />         

        模組檔案:/lib/modules/VERSION-release/

650) this.width=650;" src="http://s5.51cto.com/wyfs02/M01/7A/25/wKioL1aje5yD57QJAAA7h_Sq4qg670.png" title="2.png" alt="wKioL1aje5yD57QJAAA7h_Sq4qg670.png" />


CentOS 5 系統啟動流程

    POST --> Bootsequence(BIOS) --> bootloader(MBR)--> kernel(ramdisk) -->  rootfs(唯讀) --> /sbin/init --> (/etc/inittab) --> 設定預設運行層級 (id:3:initdefault:) --> 運行系統初始化指令碼、完成系統初始化(si::sysinit:/etc/rc.d/rc.sysinit) --> 關閉和啟動對應層級寫需要關閉的服務(l#:#:wait:/etc/rc.d/rc #) --> 設定登入終端(tty1:2345:respawn:/usr/sbin/mingetty tty1)

(1) POST:加電自檢

(2) BIOS:Basic Input and Output System

        Boot Sequence:按次序尋找各引導裝置,第一個有引導程式的裝置即為本次啟動用到的裝置;

        (3) bootloder:引導載入器

Linux包含兩個bootloder,分別為LILO(LInux LOader)和 GRUB(Grand Uniform Bootloader) 

                功能:提供一個菜單,允許使用者選擇要啟動系統或不同的核心版本,把使用者選定的核心裝載到記憶體中的特定空間中,解壓、展開,並把系統控制權移交給核心

(4) kernel:(載入根時必須為唯讀方式,在系統初始化指令碼/etc/rc.d/rc.sysinit中重掛)

自身初始化:

    探測可識別到的所有硬體裝置

    載入硬體驅動程式(有可能會藉助於ramdisk載入驅動)

    以唯讀方式掛載根檔案系統(rootfs唯讀)

    運行使用者空間的第一個應用程式:/sbin/init 

                init程式的類型:

        SysV:init (CentOS5中使用,設定檔:/etc/inittab)

    Upstart:init (CentOS6中使用併兼容centos5,設定檔:/etc/inittab,/etc/init/*.conf)

    systemd:systemd (centos7設定檔:/usr/lib/systemd/system,/etc/systemd/system)

                        ramdisk類型:

                            ramdisk:initrd (centos5系統安裝後由mkinitrd產生

    ramfs:initramfs (centos6系統安裝後後由dracut產生)

        (5) /sbin/init

            運行層級:為了系統的運行或維護等應用目的而設定

                0-6:

                #   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)

    0:關機

    1:單一使用者模式(root,無需登入),single,維護層級

                    2:多使用者模式:會啟動網路功能,但不會啟動NFS,維護模式

    3:多使用者模式:正常模式,預設為文本介面

    4:預留層級:可同3層級

    5:多使用者模式:正常模式:圖形介面

    6:重啟

                切換層級:init #

                查看層級:runlevel,who -r

                設定檔:/etc/inittab

                    id:3:initdefault:

    si::sysinit:/etc/rc.d/rc.sysinit

                    l0:0:wait:/etc/rc.d/rc 0

    l1:1:wait:/etc/rc.d/rc 1

    ...

    l6:6:wait:/etc/rc.d/rc 6

                    每一行定義一種action以及與之對應的process

    id:runlevel:action:process

        action:

wait:切換至此層級運行一次

respawn:此process終止,就重新啟動之

initdefault:設定預設運行層級:process省略

sysinit:設定系統初始化方式,此處一般為指定/etc/rc.d/rc.sysinit

...

                    note:rc 0-->意味著讀取/etc/rc.d/rc0.d/[K*|S*]

                K*:K##*

S*:S##* 連結檔案,源檔案位於/etc/rc.d/init.d/

    ##:數字越小越優先,取決於服務的依賴關係

                        按次序終止K開頭服務,啟動S開頭服務

    for srv in /etc/rc.d/rc0.d/K*;do

$srv stop

    done

                            for srv in /etc/rc.d/rc0.d/S*;do

        $srv start

    done

                    chkconfig:管理服務

                --list :查看所有服務在所有層級的on/off狀態

--add name:添加SysV類型放置於/etc/rc.d/init.d(/etc/init.d)的服務指令碼

                        --del name :刪除

--level ### name on/off/reset:修改指定層級的連結類型

    --level:省略為2345

7個層級的S或K取決有服務指令碼中的chkconfig行

    #!/bin/bash

    #

    #chkconfig:LLL NN nn

                                LLL:哪個層級為S(0-6)

NN:S中的次序

nn:K中的次序

                    NOTE:正常層級下,最後啟動的一個服務S99local不是連結至/etc/rc.d/init.d的一個服務指令碼,而是指向於/etc/rc.d/rv/local指令碼;因此,不便或不需寫為服務指令碼放置於/etc/rc.d/init.d目錄,且有想開機自動啟動並執行命令,可直接放置於/etc/rc.d/rc.local檔案中


tty1:2345:respawn:/usr/sbin/mingetty tty1

tty2:2345:respawn:/usr/sbin/mingetty tty2

tty3:2345:respawn:/usr/sbin/mingetty tty3

tty4:2345:respawn:/usr/sbin/mingetty tty4

tty5:2345:respawn:/usr/sbin/mingetty tty5

tty6:2345:respawn:/usr/sbin/mingetty tty6

                mingetty會自動調用login程式


                tips:

                    /etc/rc.d/rc.sysinit:系統初始化指令碼

        (1) 設定主機名稱

        (2) 設定歡迎資訊

        (3) 啟用udev和selinux

        (4) 掛載/etc/fstab檔案中定義的檔案系統

        (5) 檢測根檔案系統,並以讀寫方式重新掛載根檔案系統(核心掛載為唯讀模式,此處需重新掛載)

        (6) 設定系統時鐘

        (7) 啟用swap裝置

        (8) 根據/etc/sysctl.conf檔案設定核心參數

        (9) 啟用lvm及software raid裝置

        (10) 載入額外裝置的驅動程式

        (11) 清理操作

CentOS 6的系統啟動過程與5大致相同,但其init程式為upstart,其設定檔為/etc/inittab,/etc/init/*.conf,並非單個的/etc/inittab檔案。

    

    [[email protected] init]# ll

    total 68

    -rw-r--r--. 1 root root  412 Apr  9  2015 control-alt-delete.conf

    -rw-r--r--. 1 root root  130 Mar 12  2014 init-system-dbus.conf

    -rw-r--r--. 1 root root  463 Apr  9  2015 kexec-disable.conf

    -rw-r--r--. 1 root root  560 Apr  9  2015 plymouth-shutdown.conf

    -rw-r--r--. 1 root root  357 Apr  9  2015 prefdm.conf

    -rw-r--r--. 1 root root  505 Apr  9  2015 quit-plymouth.conf

    -rw-r--r--. 1 root root  417 Apr  9  2015 rc.conf

    -rw-r--r--. 1 root root 1046 Apr  9  2015 rcS.conf

    -rw-r--r--. 1 root root  430 Apr  9  2015 rcS-emergency.conf

    -rw-r--r--. 1 root root  725 Apr  9  2015 rcS-sulogin.conf

    -rw-r--r--. 1 root root 2915 Nov 23  2013 readahead-collector.conf

    -rw-r--r--. 1 root root 1559 Nov 23  2013 readahead.conf

    -rw-r--r--. 1 root root  726 Nov 23  2013 readahead-disable-services.conf

    -rw-r--r--. 1 root root 1302 Apr  9  2015 serial.conf

    -rw-r--r--. 1 root root  791 Apr  9  2015 splash-manager.conf

    -rw-r--r--. 1 root root  473 Apr  9  2015 start-ttys.conf

    -rw-r--r--. 1 root root  335 Apr  9  2015 tty.conf

    [[email protected] init]#






本文出自 “機智少年普朗克” 部落格,謝絕轉載!

CentOS 5與6的啟動流程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.