Linux 啟動流程

Linux啟動流程

POST–>Boot Sequence–>MBR–>Grub–>Kernel(initramfs)–>rootfs–chroot(根切換)–>/sbin/init–>RunLevel–>rc.sysinit—>rc 3(rc.local)–>啟動終端

1、Post加電自檢

2、運行BIOS程序,選擇啟動源(硬盤,網絡,CD/DVD,USB)

3、MBR 512Byte,(Bootloader,FAT,55AA)

    Bootloader:占446Byte,是Grub的第1階段,有安裝系統時寫入到磁盤

    FAT:占64Byte,分區表,一個分區表占16Byte,所以主分區最多4個

    55AA:占2Byte,表示Bootloader是否有效

4、Grub

    Grub第1階段:MBR中Bootloader程序,加載至內存中運行,可找到Grub第1.5階段所在位置

    Grub第1.5階段:透過Grub第1階段,找到Grub第1.5階段,使能夠掛載Grub第2階段所在分區(boot分區)

    Grub第2階段:向內核傳遞參數,并加載內核運行

5、Kernel(initramfs)

    運行中的內核掛載initramfs文件系統(精簡內核將部分文件系統驅動做到此微系統中),使得內核能掛載硬盤真的根文件系統

6、rootfs

    內核掛載硬盤的根文件系統

7、chroot

    根文件系統切換,從initramfs切換至我們安裝linux的根分區

8、/sbin/init

    運行init程序

9、Runlevel

    CentOS5:運行起來的init程序會去讀取/etc/inittab文件,根據配置文件啟動相應運行級別

    id:3:initdefault:        #確定默認運行級別3
    si::sysinit:/etc/rc.d/rc.sysinit	#運行系統初始化腳本,完成系統初始化
    l3:3:wait:/etc/rc.d/rc 3		#以運行級別為3,運行/etc/rc.d/rc腳本

    CentOS6:讀取/etc/inittab,執行/etc/init/目錄下以.conf結尾的腳本,

[root@neolinux init]# ls
control-alt-delete.conf  plymouth-shutdown.conf  rc.conf             rcS-sulogin.conf     start-ttys.conf
init-system-dbus.conf    prefdm.conf             rcS.conf            serial.conf          tty.conf
kexec-disable.conf       quit-plymouth.conf      rcS-emergency.conf  splash-manager.conf
[root@neolinux init]# cat rc.conf 
# rc - System V runlevel compatibility
#
# This task runs the old sysv-rc runlevel scripts.  It
# is usually started by the telinit compatibility wrapper.
#
# Do not edit this file directly. If you want to change the behaviour,
# please create a file rc.override and put your changes there.
start on runlevel [0123456]
stop on runlevel [!$RUNLEVEL]
task
export RUNLEVEL
console output
exec /etc/rc.d/rc $RUNLEVEL            #運行/etc/rc.d/rc此腳本
[root@neolinux init]# cat rcS.conf
#***********
#**
exec /etc/rc.d/rc.sysinit              #運行/etc/rc.d/sysinit腳本
#**

10、rc.sysinit

    sysinit腳本運行功能:

    a、設置主機名
    b、激活udev,selinux
    c、掛載/etc/fstab中設定的文件系統
    d、根據/etc/sysctl.conf文件設置內核參數
    e、加載額外驅動
    f、....等等,還有很多

11、rc 3(rc.local)–>Service

    運行rc腳本傳遞運行級別,rc腳本會跟據對應的運行級別去運行/etc/rc.d/目錄下以rc.#開頭的目錄下各種腳本

    K##開頭的腳本表示關機時運行,##數字越大越優先關閉

    S##開頭的腳本表示開機時運行,##數字越小越優先開啟

    以運行級別為3,/etc/rc.d/rc3.d/目錄下,以S99開頭的鏈接文件,此腳本鏈接到/etc/rc.d/rc.local,用戶自己有需要開機運行的腳本可以放在此處

12、終端啟動

    用戶輸入用戶名密碼,認證通過加載配置文件進入bash環境

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

(2)
nice_neo_linuxnice_neo_linux
上一篇 2016-06-09
下一篇 2016-06-10

相關推薦

  • linux文本處理三劍客-sed

    sed 是什么? sed是一種流編輯器,它是文本處理中非常中的工具,在linux中被稱為linux文本處理三劍客之一,能夠完美的配合正則表達式使用,功能不同凡響。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文…

    Linux干貨 2017-03-15
  • httpd 安裝配置

    web 服務介紹 web服務時一種應用程序的服務,它所提供的最主要的信息是一種超文本標記語言(HTML)、多媒體資源(如:視頻、圖片、音樂等)。HTML是一種純文字的文本信息,通過所謂的標簽來規范所要顯示的內容格式,在客戶端通過瀏覽器的形式對HTML及多媒體資源進行解析,然后呈現在終端上。主要由http和https協議實現 http協議 HTTP是一個屬于應…

    Linux干貨 2016-11-01
  • http協議簡介

        http:Hyper Text Transfer Protocol,超文本傳輸協議。是互聯網上應用最為廣泛的一種網絡協議。所有的WWW文件都必須遵守這個標準。設計HTTP最初的目的是為了提供一種發布和接收HTML頁面的方法。1960年美國人Ted Nelson構思了一種通過計算機處理文本信息的方法,并稱之為超文本(hyp…

    Linux干貨 2015-11-18
  • javascript快速入門

    標識符多了一個美元符號python中只有字母和下劃線和數字,數字不能開頭數據類型有number(整形和浮點型),boolean,string,null,undefined(聲明未賦值),symbol(新引入),object類型(基本類型和特殊類型外的其他類型) 引入一個變量要先申明,var a,let b常量類型,聲明時定義,python中不存在const …

    Linux干貨 2018-01-15
  • LInux基本常識和幾個基本命令的用法

    1.默認系統管理員root 1)在Linux中,創建系統的同時,會創建一個超級用戶,對系統擁有絕對權限。 2)每個賬戶的文件都被放在各自的家目錄中,管理員家目錄:/root 3)每個帳號會有一個uid號對應,管理員uid=0   cengOS7之前的版本一般用戶uid從500開始   centOS7之后的版本一般用戶uid從1000開始 …

    Linux干貨 2016-07-23
  • sed

    sed Stream EDitor, 行編輯器 sed是一種流編輯器,它一次處理一行內容。處理時,把當前處理的行存儲在臨時緩沖區中,稱為“模式空間”(pattern space),接著用sed命令處理緩沖區中的內容,處理完成后,把緩沖區的內容送往屏幕。接著處理下一行,這樣不斷重復,直到文件末尾。文件內容并沒有改變,除非使用重定向存儲輸出。 Sed主要用來自動…

    Linux干貨 2017-04-26
欧美性久久久久