Linux系統初始化流程:系統初始化相關基礎知識

Linux系統初始化流程:系統初始化相關基礎知識

內核簡介

  • 內核的功能

    1. 進程管理:通過task_struct, scheduler 實現
    2. 內存管理
    3. I/O管理:中斷以及中斷處理
    4. 文件系統管理:ext3,ext4,xfs 等
    5. 驅動程序
    6. 安全相關:SELinux,各種加密庫
    7. 通用軟件,平臺相關軟件
  • 內核設計流派

    1. 單內核:單一體系結構

      • linux 為單一內核
      • 模塊化設計:核心+外圍功能性模塊
      • 外圍模塊:,ko結尾的 kernel object。通常在/lib/modules 下面的各目錄中
      • 內核支持動態裝在模塊
    2. 微內核:多內核子系統 (windows, solaris)
    3. fork() 用戶空間內核的管理:

      • init :負責用戶空間進程的管理
      • init :PID 為1,第一個用戶空間的任務
      • 所在目錄: /sbin/init:

系統初始化流程

Linux系統初始化流程:系統初始化相關基礎知識

  • POST:硬件開機自檢,探測硬件設備,初始化內存,CPU等。
  • BIOS:按照bios中的分區啟動順序啟動
  • MBR (Master Boot Record):讀取主引導記錄

    • Boot loader ( 446 bytes ):用于加載內核并讀取分區信息的程序
    • Partition Table ( 64 bytes ):分區記錄
    • SA:MBR有效標志位
  • kernel 裝載:

    • bootloader 裝載boot所在分區的內核到內存中,bootloader只有基本磁盤分區文件系統驅動,只能識別基本分區
    • initrd (centos5) /initramfs (centos6 ):內存模擬根文件系統,讀取并裝載真正根文件系統所需要的驅動
    • 真正根文件系統成功識別后,替換掉臨時根文件系統
  • init :真正根文件系統掛載成功后,init將開始運行初始化用戶空間的程序與服務

    • SysV 風格:Centos5 的init腳本

      1. 串行話:需按照依賴關系順序初始化進程,A–B–C
      2. 前一個進程初始化完成后,才能初始化后一個
    • Upstart :由ubuntu 研發

      1. dbus:可以在前一個進程啟動一部分時就開始下一個進程啟動
      2. 速度比SysV快
    • SystemD :參考so x的初始化過程,速度更快

系統運行級別

  • linux系統包含 0-6 共7個運行級別

    1. 0:關機
    2. 1:單用戶模式,直接以root用戶登陸,用戶破譯密碼
    3. 2:多用戶模式,不支持NFS文件系統
    4. 3:完全多用戶模式,文本shell
    5. 4:預留級別
    6. 5:完全多用戶模式,圖形shell
    7. 6:重啟
  • SysV 風格的/sbin/init的配置文件, /etc/inittab, 每一行指定一種操作

Linux系統初始化流程:系統初始化相關基礎知識

  1. id : 操作的ID
  2. runlevels:設置在哪些運行級別下執行此操作,不寫為所有級別
  3. action:[ACTION_CMD] 動作,指定如何進行操作的操作

    • initdefault:設置默認運行級別,無需定義操作
    • sysinit:指定系統初始化腳本例如:si::sysinit:/etc/rc.d/rc.sysinit
    • wait:等到系統切換到次級別時運行一次
    • ctrlaltdel:指定組合件所執行的命令
    • respawn:當制定操作進程被關閉后立即再從啟一次
  4. process :操作,具體運行的程序

init 命令的主要任務

  • init 的主要任務:

    1. 設置默認運行級
    2. 指定系統運行的初始化腳本
    3. 啟動指定級別下要啟動的服務,開關閉需要停止的服務

      • /etc/init.d/:服務腳本所在位置
        Linux系統初始化流程:系統初始化相關基礎知識
      • /etc/rc.d/rcN.d (0-6)/ :不同級別下要操作的服務文件夾

        • S## 需要在##開啟
        • K## 需要在##關閉
          Linux系統初始化流程:系統初始化相關基礎知識
    4. 定義組合鍵CtrlAltDel的動作
    5. 初始化字符終端,對應設備為:

      • /dev/tty#, /dev/ttyS#, /dev/console, /dev/pts/#
      • 調用:login–>/etc/issue
    6. 啟動圖形中斷:x-windows
  • 系統初始化腳本的 /etc/rc.d/rc.sysinit

    1. 設置主機名
    2. 打印歡迎信息
    3. 激活SELinux和udev
    4. 激活swap
    5. 掛載/etc/fstab定義的本地文件系統
    6. 檢測根文件系統并對其以讀寫方式重新掛載
    7. 設置系統時鐘
    8. 裝載鍵盤映射
    9. 根據/etc/sysctl.conf設置內核參數
    10. 激活RAID和LVM設備
    11. 清理操作

MBR ( Master Boot Record)中bootloader介紹

  • MBR 中的 bootloader 程序

    • LILO:LInux LOder 早起的bootloader :不能引導位于1024 Cylinder 以后分區中的os逐漸過時
    • GRUP:GRand Unified Bootloader ,啟動時候有兩個階段

      1. 1st stage:位于MBR中, 為了引導2nd stage
      2. 1.5st stage :位于boot基本磁盤分區中國,為識別內核文件所在的文件系統識別和拓展
      3. 2nd stage :位于boot基本磁盤分區GRUB的引導程序

        • boot分區大小:CentOS5 100M, Centos6 200M
        • 所在目錄: /boot/grub/ stage2的配置文件,grub.conf
  • Grub的功能:

    1. 選擇啟動的內核或系統, 可以隱藏選擇界面
      Linux系統初始化流程:系統初始化相關基礎知識
    2. 提供交互式接口,e 進入編輯模式
      Linux系統初始化流程:系統初始化相關基礎知識
    3. 基于密碼保護

      • 啟動內核映像時:定義在配置文件中相應的title下
      • 傳遞參數(進入編輯模式時):定義在全局字段中
  • grub接口:
    • title:操作系統或者內核的標題
    • root:設置內核文件所在的分區作為grub的跟,無論硬盤是什么,都以hd#.#表示
    • kernel :定義要使用的內核文件,后面可以附加傳遞
    • initrd:指定為內核提供額外驅動等功能的ram disk或ram fs
  • init 運行級別參數傳遞,級別為1時為單用戶模式,用戶密碼修改

    • 表示方法: 1,s,single,S

                    Linux系統初始化流程:系統初始化相關基礎知識

    • 單用戶模式幾乎不會啟動任何服務,且不需要用戶登錄,但是會執行/etc/rc.d/rc.sysinit腳本;
    • 如是連/etc/rc.d/rc.sysinit文件也不加載,則傳遞 emergency
      單用戶啟動后,無需身份認證,直接root,此時可以進行設置密碼的操作
      Linux系統初始化流程:系統初始化相關基礎知識
  • grub的配置文件,grub.conf 語法格式
    Linux系統初始化流程:系統初始化相關基礎知識

title  
 root (hd0,0) 
     (Device,Part) :  
     Device 在grub中,統統以hd開頭,并緊跟一個數字做各磁盤設備的標記,從0開始編號 
     Part 代表分區,從0開始編號 
 kernel :指定內核文件以及傳遞給內核的參數 
     內核文件位置:/vmlinux (這里的根是boot目錄) 
     參數:ro root=/path/to/DEVICE quiet 
 initrd : 文件:通常為cpio歸檔,并使用gzip壓縮;通常以.img作為文件名后綴; 
     /initrafs (這里的根是boot目錄) 

  • grub 的安裝,如果MBR中簽446bytes 損壞,則需要修復bootloader,通常需要系統啟動盤,在緊急救援模式下進行,需要版本對應。以下以手工破壞MBR為例 演示,重啟后,系統已經無法掛載
    Linux系統初始化流程:系統初始化相關基礎知識

         Linux系統初始化流程:系統初始化相關基礎知識

第一種方式:插入系統光盤后以緊急救援模式啟動,如果分區信息沒有損壞原系統根目錄會自動掛在到/mnt/sysimage

        Linux系統初始化流程:系統初始化相關基礎知識Linux系統初始化流程:系統初始化相關基礎知識

        chroot /mnt/sysimage
        grub-install --root-directory=/ /dev/sda

        這里的–root-directory 變量應該指向boot目錄的上一層目錄, 后面接需要安裝bootloader的硬盤設備

第二種方式: 直接進入grub命令行接口進行安裝

        Linux系統初始化流程:系統初始化相關基礎知識

    chroot /mnt/sysimage
    grub ## 進入grub 命令行接口
    grub> root (hd#,#)
    grub> setup (hd#)
    grub> quit

原創文章,作者:以馬內利,如若轉載,請注明出處:http://www.www58058.com/432

(0)
以馬內利以馬內利
上一篇 2015-02-28 16:52
下一篇 2015-03-02 09:23

相關推薦

  • Linux權限管理與grep命令應用(第四周)

    第四周作業 1.復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限 [root@localhost ~]# cp -r /etc/skel/ /home/tuser1 [root@localhost ~]# ch…

    Linux干貨 2016-09-15
  • rpm軟件包管理

    軟件包管理 軟件運行環境 API   應用程序開發接口 ABI   二進制接口 Rpm包命名方式 Name-version-release-arch-rpm 例如 zziplib-devel-0.13.162-5.el7.i686.rpm zziplib :主包名 dewel:次包名 0.13.162: 主版…

    Linux干貨 2016-08-24
  • 變量的高級操作

                                                  一  字符串切片 &nbsp…

    Linux干貨 2017-04-16
  • N26-博客作業-week14

    系統的INPUT和OUTPUT默認策略為DROP; 1、限制本地主機的web服務器在周一不允許訪問;新請求的速率不能超過100個每秒;web服務器包含了admin字符串的頁面不允許訪問;web服務器僅允許響應報文離開本機; 配置系統INPUT和OUTPUT默認策略為DROP# iptables -P INPUT DROP# iptables -P OUTPU…

    Linux干貨 2017-06-22
  • 0805隨堂練習

    文本處理練習: 1.找出本機ip地址  [root@localhost ~]# ifconfig |head -2 |tail -1 |tr -s ' ' ':' |cut -d: -f3  10.1.252.221 2.查看本機分區最大的利用率  [root@localhost ~]# …

    Linux干貨 2016-08-07
  • shell腳本編程之判斷語句

    一、單分支if語句     格式:if 判斷條件;then        statement1        statement2          …     &nb…

    Linux干貨 2016-01-01

評論列表(2條)

  • 追馬
    追馬 2015-02-28 17:51

    總結的很詳細,贊一個

  • stanley
    stanley 2015-02-28 18:03

    文檔功底及認真的態度可見一斑,只是本地遷移到在線格式上稍亂了些,贊 加油 :mrgreen:

欧美性久久久久