Linux啟動過程及系統初始化

一、前言

    服務器在正常的運行過程中,很少有重啟的機會。在正常的情況下,也很少有出現啟動異常的情況,但是在遭到了人為或者誤操作的情況后,可能會出現啟動異常的情況。為了加深學習系統啟動流程,能夠更加深入理解Linux系統的啟動流程??偨Y了這篇文字。

二、簡述啟動流程

    在服務器被加電后,大體流程如下:POST—->MBR(bootloader)—->kernel(ramdisk)—->掛載rootfs(ro)—->運行/sbin/init—->運行系統初始化腳本—->啟動終端

1、第一階段POST(POWER ON and SELF TEST即加電自檢)是主板上的BIOS系統在加電后自動檢測硬件設備比如:cpu、內存、主板等等,加載各種硬件運行參數,確保硬件正常運行,保護硬件的作用。如果在此過程中出現故障,一般會有提示音。或者會在屏幕上面顯示故障信息,提醒用戶處理;如果正常,則進入下一步,根據BIOS的設定的啟動順序(BootLoader),找到第一序列的啟動設備,一般是的啟動設備就是硬盤(在特定的情況下也有光盤或者U盤)。

2、在找到第一啟動設備后,系統會去讀該設備的MBR(Master Boot Record),然后系統就可以根據引導加載程序(Boot Loader)開始執行以下的工作:

    BootLoader主要安裝在啟動設備的第一個扇區.系統會在第一個扇區446bytes加載grub程序成為一個階段,以及在加載2-27扇區的第1.5階段,最后找到/boot/grub,完成第二階段。在Linux系統目錄下,有一個/boot目錄,里面有grub目錄以及VMLinuz(內核)、initramfs等文件。

blob.png

而在grub目錄中,則有grub啟動的第一階段、第1_5階段以及第二階段,還有grub的配置文件(grub.conf)提供啟動配置。

blob.png

    3、grub在啟動的過程中提供啟動菜單、并提供交互式接口;加載用戶選擇的內核或者操作系統;為菜單提供保護機制。同時,編輯grub的配置文件grub.conf能夠改變啟動是提供給用戶的交互接口。grub.conf的內容如下:

blob.png

相應的配置:

    default=#: 設定默認啟動的菜單項;落單項(title)編號從0開始
    timeout=#:指定菜單項等待選項選擇的時長
    splashimage=(hd#,#)/PATH/TO/XPM_FILE:菜單背景圖片文件路徑
    hiddenmenu:隱藏菜單
    password [–md5] STRING: 啟動菜單編輯認證
    title TITLE:定義菜單項“標題” , 可出現多次
    root (hd#,#)grub查找stage2kernel文件所在設備分區;為grub“根”
    kernel /PATH/TO/VMLINUZ_FILE [PARAMETERS]:啟動的內核
    initrd /PATH/TO/INITRAMFS_FILE: 內核匹配的ramfs文件
    password [–md5] STRING: 啟動選定的內核或操作系統時進行認證

    在啟動的時候,grub提供的界面如下:

blob.png

供用戶選擇在配置文件grub.conf里面設置啟動選項,通過下面的提示符,可以進入某一個選項,里面的配置如下:

blob.png

是不是和在配置文件里面看到的一樣。如果在配置文件里面加入password字段的話,要進入這個界面是需要密碼的,這也提供了很好的保護機制,不是每個人都有權利進入這個界面的。

    當啟動流程進入這個步驟后,下一步就是grub程序的引導下找到/boot目錄下找到內核文件以及為服務加載內核的文件initramfs。然后就是將內核文件成功的加載到內存中。

    4、內核加載完成后,就可以掛載根文件系統(rootfs)。但是要加載rootfs,就必須要其下的設備,而設備的驅動是在根文件系統中,而根文件系統現在還沒有掛載就沒辦法取得設備的驅動,這就形成了一個死循環。而/boot下面的initramfs文件就是解決這一問題的。為加載后的內核提供根文件系統的所在設備的驅動,讓能正常掛載。initramfs文件里面的內容如下:

blob.png

可以看見它提供了很多為掛載根文件系統的很多程序以及驅動。將initramfs加載后,相當于運行了一個過度系統,該系統有根文件系統的設備驅動,能夠將其掛載上,但是,此時掛載的根文件系統是以只讀的方式。到此內核空間的任務完成,開始進入用戶空間的進程。

    5、進入用戶空間流程,執行的第一個程序就是/sbin/init,該程序完成了用戶空間的啟動流程,完成后啟動/etc/inittab文件,初始化用戶空間。/顎突出/inittab如下:

blob.png

設定啟動的默認模式,默認的是多用戶命令行模式:

    0:關機

    1:單用戶模式

    2:不帶網絡文件系統個功能的多用戶模式

    3:多用戶模式

    4:未設置

    5:圖形界面模式

    6:重新啟動

blob.png

上圖中小框的內容是系統初始化腳本:

     (1)設置主機名

    (2) 設置歡迎信息

    (3) 激活udev和selinux

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

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

    (6) 設置系統時鐘

    (7) 激活swap設備

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

    (9) 激活lvm及software raid設備

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

    (11) 清理操作

大框內的內容是設定不同啟動模式下的服務啟動配置:在/etc/rc.d目錄下的文件是這樣的

blob.png

rc#.d中的數字#代表是7中啟動模式,每個目錄定義的是在不同的啟動模式下啟動或關閉的服務的設置,里面的文件如下:

blob.png

里面的文件按都是以S#和K#開頭的文件,且都是軟連接的文件,它們都指向/etc/init.d目錄下的文件,K即kill,代表在該模式下停止服務,S為start,代表在不同的模式下啟用服務,數字定義服務開啟或者關閉的順序。而每個文件的格式如下:

blob.png

框內的為固定格式,chkconfig后面的3組數字分別代表在3、4、5模式下的動作(啟動或者關閉)、啟動順序和關閉順序。

blob.png

上圖從上到下分別定義:

    a、定義ctrl+alt+delete組合鍵的功能

    b、定義在斷電是ups電源的設定

    c、設置虛擬終端,可以通過修改這些設置添加或者減少虛擬終端

    d、定義圖像界面啟動設置

在/etc/rc.d中有一個腳本rc.local,在開機最后加載,可以根據自己的需求將一些執行命令或是腳本寫到里面,當開機時,就可以加載。

blob.png

最后,完成所有用戶空間的設置,進入登錄提示界面,啟動完成。

總結,在整個啟動過程中,至關重要的文件有:

    A、boot 一般將這個目錄單獨分區掛載為簡單分區

    B、grub以及grub.conf文件

    C、vmlinuz以及initrd文件

    D、/etc/inittab腳本

    E、/etc/rc.d/rc.sysinit腳本等

原創文章,作者:王更生,如若轉載,請注明出處:http://www.www58058.com/60456

(0)
王更生王更生
上一篇 2016-11-22
下一篇 2016-11-23

相關推薦

  • Linux下的文件管理系統

    一、文件系統的FHS標準     因為Linux的屬于開源系統,開發人員多,為了統一開發標準,Linux有一個文件系統標準,也就是FHS(Filesystem HierarchyStandard)標準。有了這個標準,那些獨立的軟件開發商、系統開發人員以及系統的使用者就能方便的在系統上操作。 二、文件系統  &…

    Linux干貨 2016-08-02
  • 馬哥教育網絡班22期+第十一周課程練習

    1、詳細描述一次加密通訊的過程,結合圖示最佳。第一階段:ClientHello:    客戶端(通常是瀏覽器)先向服務器發出加密通信的請求,這被叫做ClientHello請求。客戶端向服務器提供以下信息:        支持的協議版本,比如TLS 1.2 &n…

    Linux干貨 2016-12-27
  • N22-℡浮生.若夢 ╮第一周作業

    1.描述計算機的組成及其功能  組成:     硬件       (1).CPU: 是計算機的主要設備之一,功能主要是解釋計算機指令以及處理計算機軟件中的數據.       (2).存儲器:內存,硬盤,存儲器的功能是存儲程序、數據和各種信號…

    Linux干貨 2016-09-19
  • 第一周作業

    描述計算機的組成及其功能。 由馮~諾伊曼提出計算機體系結構,計算機主要由控制器、運算器、存儲器、輸入設備、輸出設備五大硬件組成。 控制器(Controller):是整個計算機的中樞神經,其功能是對程序規定的控制信息進行解釋,根據其要求進行控制,調度程序、數據、地址,協調計算機各部分工作及內存與外設的訪問等。 運算器(Datapath):運算器的功能是對數據進…

    Linux干貨 2017-02-07
  • Linux的用戶組和權限管理之特殊權限及ACL的使用

    用戶組和權限管理 一、了解和使用批量新建用戶和批量修改用戶密碼: ##用戶創建的模板和配置文件的存放位置:/etc/default/useradd;/etc/skel/* ;/etc/login.defs## 批量新建用戶(newusers):適合用于新老機器轉換時,遷移系統上的用戶。 使用格式: newusers  passwd  fi…

    Linux干貨 2016-08-04
  • 字符串切片和yum的用法和rpm的編譯安裝

    1、冒泡法對數組內數據排序 2、源碼安裝http2.2.29     1.配置/etc/yum.repos.d/base.repo              2.安裝group組:Development too…

    Linux干貨 2016-08-30
欧美性久久久久