CentOS 5,6 系統啟動流程詳解

    一、linux 組成介紹

         1.linux 組成:

            ? Linux: kernel+rootfs(根文件系統)

                kernel: 進程管理、內存管理、網絡管理、驅動程序、文件系統、安全功能

                rootfs: 程序和glibc

                庫:函數集合, function, 調用接口(頭文件負責描述)

                過程調用: procedure,無返回值

                函數調用: function

                程序:二進制執行文件

         2.內核設計流派:

            單內核(monolithic kernel): Linux

                把所有功能集成于同一個程序

            微內核(micro kernel): Windows, Solaris

                每種功能使用一個單獨子系統實現

        

        3. Linux內核特點:

                支持模塊化: .ko(內核對象)

                如:文件系統,硬件驅動,網絡協議等

                支持內核模塊的動態裝載和卸載

            ? 組成部分:

                核心文件: /boot/vmlinuz-VERSION-release (出廠時,直接從光盤中拷貝而得)

                ramdisk:輔助的偽根系統

                (包含各類驅動,以供啟動時加載真正的根文件系統)

                /boot/initramfs-######.img   (系統安裝之時才會生成)

            CentOS 5,6 系統啟動流程詳解

            e23bb6978458453397f31764d16dc60f.jpg

      =============================================================================================================

            

        centos 6.8-initramfs-2.6.32-642.el6.x86_64.img  簡析:

            CentOS 5,6 系統啟動流程詳解315917dbfc364fe1927a0cc50e384af6.jpg

            (initramfs-2.6.32-642.el6.x86_64.img 以gzip格式壓縮,解壓時候,需要在尾部添加.gz后綴)

            解壓后:

            CentOS 5,6 系統啟動流程詳解a0681fc8d1d04b84ba883327b2192b41.jpg

            使用cpio 解壓: (  cpio -id < initramfs-2.6.32-642.el6.x86_64.img.cpio)

            CentOS 5,6 系統啟動流程詳解1a39ed0610614f7e866e249cec8effc7.jpg

            initramfs 作為臨時偽根文件系統,有類似于根的各類所需文件、驅動,可供啟動時候加載真正的根文件系統

      ==============================================================================================================

            

        

            CentOS 5: /boot/initrd-VERSION-release.img

                    修復:

                    救援模式下,

                    chroot /mnt/sysimage

                    cd /boot

                    mkinitrd initrd-`uname -r`.img  `uname -r`     (centos5 )

                    (第二個uname -r ,是作為initrd 的參數)

                    exit 

            CentOS 6,7: /boot/initramfs-VERSION-release.img

                    修復: (centos 6 )

                    救援模式下,

                    chroot /mnt/sysimage

                    cd /boot

                    mkinitrd initramfs-`uname -r`.img  `uname -r`    (centos6)

                    exit 

           

            ( centos 7 需要進入grub 修復:)

            模塊文件: /lib/modules/VERSION-release

                命令補充:   lsmod 查看加載的模塊;

                        moinfo 查看指定模塊信息

                        modprobe 加載模塊;

                        rmmod  / modprobe -r  卸載模塊

            CentOS 5,6 系統啟動流程詳解

       ===============================================================================================================

二、linux 系統啟動流程詳解:

         1. Centos  6  啟動流程

            CentOS 5,6 系統啟動流程詳解27b38a54c18c47e1939b71bc855584ff.jpg

           

         2. centos6 啟動流程

                    1.加載BIOS的硬件信息,獲取第一個啟動設備。

                    2.讀取第一個啟動設備MBR的引導加載程序(grub)的啟動信息

                    3.加載核心操作系統的核心信息,核心開始解壓縮,(加載initramfs.img)并嘗

                    試驅動所有的硬件設備。

                    4.核型執行init程序并獲取運行信息。

                    5.Init執行/etc/rc.d/rc.sysinit文件。

                    6.啟動核心的外掛模塊(/etc/modprobe.conf)。

                    7.Init執行運行的各個批處理文件(scripts).

                    8.Init執行/etc/rc.d/rc.local. (出現登陸界面)

                    9.執行/bin/login程序,等待用戶登錄。

                    10.登錄之后開始以Shell控制主機。

            

        3.  啟動流程詳解:

            ? 系統整體初始化流程:

                POST –> BootSequence (BIOS) –>

                Bootloader(MBR) –>(進入/boot) kernel(ramdisk) –> rootfs(只讀) —

                > init( systemd)

            ? POST: Power-On-Self-Test,加電自檢,是BIOS功能的一個主要部

                分。負責完成對CPU、主板、內存、硬盤子系統、顯示子系統、 串并行接

                口、鍵盤、 CD-ROM光驅等硬件情況的檢測。

             ROM: BIOS, Basic Input and Output System,保存著有關計

                算機系統最重要的基本輸入輸出程序,系統信息設置、 開機加電自檢程序和

                系統啟動自舉程序等。

                 RAM: CMOS互補金屬氧化物半導體,保存各項參數的設定

                按次序查找引導設備,第一個有引導程序的設備為本次啟動設備

            ? bootloader: 引導加載器,引導程序 (MBR第一個扇區)

                windows: ntloader,僅是啟動OS

                Linux:功能豐富,提供菜單,允許用戶選擇要啟動系統或不同的內

                    核版本;把用戶選定的內核裝載到內存中的特定空間中,解壓、展開,并把

                    系統控制權移交給內核

                    LILO: LInux LOader(早期)

                    GRUB: GRand Unified Bootloader

                    GRUB 0.X: GRUB Legacy, GRUB2

            ? MBR:

                446: bootloader, 64: 分區表, 2: 55AA

                (446字節內可尋找到bootloader所在盤區)

            ? GRUB:(grub 目錄下,存放著各階段的備份文件)

                    primary boot loader :

                        1st stage–》 加載bootloader

                        1.5 stage–> 進入/boot目錄,加載vmlinux,initramfs

    

                    secondary boot loader :

                        2nd stage, 讀取分區根文件系統

            ? kernel:

                自身初始化:

                    探測可識別到的所有硬件設備

                    加載硬件驅動程序(可能借助于ramdisk加載驅動)

                    以只讀方式掛載根文件系統

                    運行用戶空間的第一個應用程序: /sbin/init

           4.init程序的類型

                ? SysV: init, CentOS 5之前

                    配置文件: /etc/inittab

                ? Upstart: init,CentOS 6

                    配置文件: /etc/inittab, /etc/init/*.conf

                ? Systemd: systemd, CentOS 7

                    配置文件: /usr/lib/systemd/system

                            /etc/systemd/system

                ? ramdisk:

                    內核中的特性之一:使用緩沖和緩存來加速對磁盤上的文件訪問

                    ramdisk –> ramfs 提高速度

                    CentOS 5: initrd, 工具程序: mkinitrd

                    CentOS 6: initramfs, 工具程序: mkinitrd,  dracut(實際調用文件)

         5. 運行級別

                ? 運行級別配置路徑: /sbin/init   (CentOS 5 )

                    (/etc/inittab 下可以定義默認啟動界面A)

                ? 運行級別:為系統運行或維護等目的而設定; 0-6: 7個級別

                    0:關機

                    1:單用戶模式(root自動登錄), single, 維護模式

                    2: 多用戶模式,啟動網絡功能,但不會啟動NFS;維護模式

                    3:多用戶模式,正常模式;文本界面

                    4:預留級別;可同3級別

                    5:多用戶模式,正常模式;圖形界面

                    6:重啟

                ? 默認級別: 3, 5

                ? 切換級別: init #

                ? 查看級別: runlevel ; who -r


             6.init 初始化過程詳解

                1) init 初始化流程:

                    init讀取其初始化文件: /etc/inittab

                    初始運行級別(RUN LEVEL)

                    系統初始化腳本

                    對應運行級別的腳本目錄

                    捕獲某個關鍵字順序

                    定義UPS電源終端/恢復腳本

                    在虛擬控制臺生成getty

                    在運行級別5初始化X

                2) CentOS5的inittab文件詳解:

                    ? 配置文件路徑: /etc/inittab

            ———————————————————————————-

            Centos 5.4 —–/etc/inittab:

            # inittab       This file describes how the INIT process should set up

            #               the system in a certain run-level.

            #

            # Author:       Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>

            #               Modified for RHS Linux by Marc Ewing and Donnie Barnes

            #

            # Default runlevel. The runlevels used by RHS 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)

            #

            id:5:initdefault:

            # System initialization.

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

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

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

            l2:2:wait:/etc/rc.d/rc 2

            l3:3:wait:/etc/rc.d/rc 3

            l4:4:wait:/etc/rc.d/rc 4

            l5:5:wait:/etc/rc.d/rc 5

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

            # Trap CTRL-ALT-DELETE

            ca::ctrlaltdel:/sbin/shutdown -t3 -r now

            # When our UPS tells us power has failed, assume we have a few minutes

            # of power left.  Schedule a shutdown for 2 minutes from now.

            # This does, of course, assume you have powerd installed and your

            # UPS connected and working correctly.

            pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

            # If power was restored before the shutdown kicked in, cancel it.

            pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown

            Cancelled"

            # Run gettys in standard runlevels

            1:2345:respawn:/sbin/mingetty tty1

            2:2345:respawn:/sbin/mingetty tty2

            3:2345:respawn:/sbin/mingetty tty3

            4:2345:respawn:/sbin/mingetty tty4

            5:2345:respawn:/sbin/mingetty tty5

            6:2345:respawn:/sbin/mingetty tty6

            # Run xdm in runlevel 5

            x:5:respawn:/etc/X11/prefdm -nodaemon

            ———————————————————————————

           

            centos 6—–/etc/inittab:

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

            #

            id:5:initdefault:

            ——————————————————————————————

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

            id:runlevel:action:process

            id:它是每個登記項的標識符,用于唯一標識每個登記項,不能重復

            runlevels:系統的運行級別,表示process的action要在哪個級別下運行,該段中可以定義多個運行級別,

                  各級別之間直接寫不用分隔符;如果為空,表示在所有的運行級別運行。Linux的運行級別有:

                        0:表示關機

                        1:表示單用戶模式,在這個模式中,用戶登錄不需要密碼,默認網卡驅動是不被

                        加載,一些服務不能用。

                        2:表示多用戶模式,NFS服務不開啟

                        3,表示命令行模式

                        4,這個模式保留未用

                        5,表示圖形用戶模式

                        6,表示重啟系統


            action:表示對應登記項的process在一定條件下所要執行的動作。

                具體動作有:

                     respawn:當process終止后馬上啟動一個新的

                wait:當進入指定的runlevels后process才會啟動一次,并且到離開這個

                runlevels終止

                initdefault:設定默認的運行級別,即我們開機之后默認進入的運行級別,

                        不能是0,6

                sysinit:系統初始化,只有系統開機或重新啟動的時候,

                        這個process才會被執行一次

                 powerwait:當init接收到電源失敗信號的時候執行相應的process,

                     并且如果init有進程在運行,會等待這個進程完成之后,再執行相應的process

                            powerfail:當init接收到電源失敗信號的時候執行相應的process,并且如果

                      init有進程在運行,不會等待這個進程完成,它會直接執行相應的process

                powerokwait:電源已經故障,但是在等待執行對應操作的時候突然來電了就執行對應

                        的process

                powerfailnow:當電源故障并且init被通知UPS電源已經快耗盡執行相對應的process

                ctrlaltdel:當用戶按下ctrl+alt+del這個組合鍵的時候執行對應的process

                boot:只有在引導過程中,才執行該進程,但不等待該進程的結束;當該進程死亡時,

                    也不重新啟動該進程

                bootwait:只有在引導過程中,才執行該進程,并等待進程的結束;當該進程死亡時,

                    也不重新啟動該進程

                off:如果process正在運行,那么就發出一個警告信號,等待20秒后,

                    再通過殺死信號強行終止該process。如果process并不存在那么就忽略該登記項

                once:啟動相應的進程,但不等待該進程結束便繼續處理/etc/inittab文件中的下一個

                    登記項;當該進程死亡時,init也不重新啟動該進程

             process:表示啟動哪個程序或腳本或執行哪個命令等


            —————————————————————————————–

            centos 5.4 –/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

            ca::ctrlaltdel:/sbin/shutdown -t3 -r now  #定義快捷鍵操作

            # 按下快捷鍵3秒后重啟系統

            ——————————————————————————————

              3)  CentOS6 /etc/inittab和相關文件

            CentOS6中,已經不再定義其他內容,進有默認開機啟動流程,轉用下列腳本來完成

              原有執行操作

                ? /etc/inittab

                    設置系統默認的運行級別

                    id:3:initdefaut:

                   ? /etc/init/control-alt-delete.conf    # 定義快捷鍵操作

                   ? /etc/init/tty.conf   #tty 終端配置腳本

                   ? /etc/init/start-ttys.conf       #登錄腳本

                   ? /etc/init/rc.conf #運行級別配置腳本

                   ? /etc/init/prefdm.conf     #定義級別5中的圖形界面啟動的腳本

               4) /etc/rc.d/rc.sysinit

                   ? /etc/rc.d/rc.sysinit: 在所有運行級別下,init 依賴/rc.sysinit 進行系統初始化

                    作用:

                    (1) 設置主機名

                    (2) 設置歡迎信息

                    (3) 激活udev和selinux

                    (4) 掛載/etc/fstab文件中定義的文件系統

                    (5) 檢測根文件系統,并以讀寫方式重新掛載根文件系統

                    (6) 設置系統時鐘

                    (7) 激活swap設備

                    (8) 根據/etc/sysctl.conf文件設置內核參數

                    (9) 激活lvm及software raid設備

                    (10) 加載額外設備的驅動程序

                    (11) 清理操作

            5)rc 腳本

                ? 說明: rc N –> 意味著讀取/etc/rc.d/rcN.d/下腳本

                    (服務若在指定模式下為開啟,在對應級別的rc#.d 中,為S開頭,反之為K開頭)

                    (K/S后以字符順序排列)

                    (目錄下全部文件均為軟鏈接,源為init.d下的對應腳本)

                    K*: K##*: ##運行次序;數字越小,越先運行;數字

                    越小的服務,通常為依賴到別的服務

                    S*: S##*: ##運行次序;數字越小,越先運行;數字

                    越小的服務,通常為被依賴到的服務

                    s|k 開頭腳本內容示例:

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

                    $srv stop

                    done

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

                    $srv start

                    done

      =================================================================================================================================

    三、chkconfig命令

               ? chkconfig命令

                (設置開啟 | 關閉狀態后,會在對應級別中生成 s| k 開頭的服務文件)

               ? 查看服務在所有級別的啟動或關閉設定情形:

                chkconfig [–list] [name]

            ? 添加:(可添加自編服務腳本)

                1.SysV的服務腳本放置于/etc/rc.d/init.d (/etc/init.d)

                (無需在結尾添加.sh)

                2.服務腳本內容示例:

                CentOS 5,6 系統啟動流程詳解6e63376f88014baaa411a633fba108e0.jpg

                    #!/bin/bash

                    # chkconfig: LLLL nn mm

                    #LLLL 表示初始在哪個級別下啟動, -表示都不啟動

                     nn : 啟動順序號(建議自編服務號為較大數字)

                    mm : 關閉時的順序號

                3.chmod +x …..

                4.chkconfig –add service_name

                5.service ## start 即可測試添加服務腳本

            ? 刪除:

                chkconfig –del name

            

            ? 修改指定的鏈接類型

                chkconfig [–level levels] service_name <on|off|reset>

                –level LLLL: 指定要設置的級別;省略時表示2345

                eg:

                chkconfig –level 5 atd on | off

            ? ntsysv命令 :(交互式服務調整,一次只能進入一個模式,默認為當前模式)

                    –level=#  可進入指定模式下調整

            CentOS 5,6 系統啟動流程詳解1d206eb76d63431d98235540f00bb615.jpg

   =====================================================================================================================================

   四、xinetd管理服務與自定義服務

           (xinetd: 超級守護進程 , 7已經取消,僅在5、6中還存在)

            配置文件: /etc/xinetd.conf

            瞬態( Transient)服務(非獨立服務,不可獨立工作)被xinetd進程所管理:

                啟動|關閉:  由xinetd 檢查chkconfig中對應服務配置,管理其自啟動狀態

                工作(監聽):  依賴于xinetd運行,對應服務的請求,首先被xinetd代理監聽,

                        xinetd收到請求才喚醒對應服務

            chkconfig –list 中 xinetd 管理的瞬態服務項目:

                CentOS 5,6 系統啟動流程詳解

CentOS 5,6 系統啟動流程詳解

                修改服務自啟動:/etc/xinetd.d/<service>:

                修改disable 即可

                CentOS 5,6 系統啟動流程詳解CentOS 5,6 系統啟動流程詳解

                或者使用chkconfig 開啟也可以。

                與libwrap.so文件鏈接

                用chkconfig控制的服務:

                    chkconfig tftp on

           ? service 命令:手動管理服務

                service 服務 start|stop|restart

                service –status-all

   ==========================================================================================================================================

    五、/etc/rc.d/rc.local腳本

            ? 注意:正常級別下,最后啟動一個服務S99local沒有鏈接至

                /etc/rc.d/init.d一個服務腳本,而是指向了

                /etc/rc.d/rc.local腳本

            ? 不便或不需寫為服務腳本放置于/etc/rc.d/init.d/目錄,且

            又想開機時自動運行的命令,可直接放置于

            /etc/rc.d/rc.local文件中

                ? /etc/rc.d/rc.local在指定運行級別腳本后運行

                ? 可以根據情況,進行自定義修改

            centos 5—tty 終端配置(/etc/inittab中的內容)

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

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

                ? …

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

                mingetty會自動調用login程序

                ? x:5:respawn:/etc/X11/prefdm -nodaemon

          

    六、破解root口令

            啟動菜單–》 按“a”–> 輸入: 1|S |s |single –>進入單用戶模式(root) ,此模式下,直接以root身份登錄,

            且無需輸入密碼,使用passwd命令即可修改密碼

        

           

            

原創文章,作者:ldt195175108,如若轉載,請注明出處:http://www.www58058.com/45442

(0)
ldt195175108ldt195175108
上一篇 2016-09-11 15:42
下一篇 2016-09-11 16:42

相關推薦

  • 第五周作業

    1、顯示當前系統上root,fedora或user1用戶的默認shell。 [root@hostname ~]# grep -E ‘^(root|fedora|user1)’ /etc/passwd | cut -d: -f1,7 root:/bin/bash 2、找出/etc/rc.d/init.d/functions文件中某詞后面跟一組小括號的行,形如:…

    Linux干貨 2017-08-04
  • linux用戶與用戶組

    一.用戶 用戶是能夠獲取系統資源的權限的集合. 二.linux用戶組的分類: a.管理員root  :具有使用系統所有權限的用戶,其UID為0. b.Centos 6普通用戶:即一般用戶,其使用系統的權限受限,其UID為500-60000之間Centos7UID為1000-60000之間。 c.Centos 6系統用戶:保障系統運行的用戶,一般不提…

    Linux干貨 2016-10-24
  • btr文件系統與網絡基礎

    btrfs文件系統技術預覽版Btrfs (B-tree, Butter FS, Better FS), GPL, Oracle, 2007, CoW核心特性:多物理卷支持:btrfs可由多個底層物理卷組成;支持RAID,以及聯機“添加”、“移除”,“修改”寫時復制更新機制(CoW):復制、更新及替換指針,而非“就地”更新數據及元數據校驗碼:checksum子…

    Linux干貨 2016-09-02
  • bash腳本變量的使用

    bash腳本的變量使用詳解 變量的類型包括整數、字符串和數組,但在bash腳本編程中不需要指定類型就可以直接賦值,默認均為字符型,其參與運算會自動進行隱式類型轉換。 變量的賦值方式為:name='value',其中“=”兩邊一定不能有空格,如果變量值中包含有空格則需要使用引號引起來,需要注意的是強引用和弱引用的區分。此外變量的賦值也可以引…

    Linux干貨 2016-08-15
  • 0805 作業

     201608051、當天課程內容筆記2、當天練習3、預習4、取本機ip地址 5、取各分區利用率的數值 6、統計/etc/init.d/functions 文件中每個單詞出現的次數,并按頻率從高到低顯示 7、/etc/rc.d/init.d/functions或/etc/rc.d/init.d/functions/"  取目錄名…

    Linux干貨 2016-08-07
  • 1019作業

    1019作業 柴震 軟連接 硬連接 軟連接和硬鏈接的區別 屬性與定義: 硬鏈接:新建的文件是已經存在的文件的一個別名,所以創建時鏈接數遞增;而且當原文件刪除時,新建的鏈接文件仍然可以使用,因其直接對應于數據塊。 軟鏈接:也稱為符號鏈接。新建的鏈接文件以“路徑”的形式來表示另一個文件,其大小為指向的路徑字符串的長度,不增加或減少目標文件in…

    Linux干貨 2016-10-19

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-09-20 10:00

    文章內容很充實了,需要在邏輯上進行一個層次化的梳理,否者整個給人的感覺太凌亂了。

欧美性久久久久