Linux系統初始化
概述:
BIOS初始化
引導裝載程序
內核初始化
Init初始化
BIOS初始化
1,外圍設備的檢測
2,選擇引導設備
3,讀取引導設備的MBR
MBR: 全稱爲Master Boot Record,即主引導記錄. 硬盤的0柱面0磁頭1扇區也叫主引導扇區.
(此圖片來自百度)
主引導程序(BootLoader): 負責從活動分區中裝載,並運行系統引導程序佔446byte
分區表(DPT,Disk Partition Table): 四個分區項每個佔16字節,總共佔64byte
結束標誌字: 硬盤有效標誌固定爲55AA,如果該標誌錯誤系統就不能啓動.佔2byte
MBR = BootLoader + DPT + Magic Number = 512byte
引導裝載程序
調用引導裝載程序:
兩種方式:
1,BIOS將控制權交給安裝在MBR中的初始化程序裝載器(IPL)
2,BIOS將控制權交給另一個引導裝載程序,再由這個裝載程序將控制權移交給IPL
RedHat Enterprise Linux下默認使用GRUB這個引導裝載程序.
由於BootLoader佔用了MBR的446byte,所以IPL的大於就不能超過446byte.
引導裝載程序:
第一階段 GRUB的IPL找到並裝載第二階段的引導裝載程序.(即初始化引導裝載器)
第二階段 GRUB讀取/boot/grub/grub.conf配置文件,加載啓動分區,內核與RAMDISK文件.
(GRUB在安裝時系統會選擇性的將一部分安裝在MBR或引導分區/boot上,將剩下的部分安裝在引導分區/boot中,以文件的形式存在.)
如下圖,GRUB被安裝在/boot引導分區上
stage1剛好512字節,它唯一的工作就是找到並裝載stage2
stage2藉助stage1_5驅動文件系統,並查找grub.conf,顯示啓動菜單供用戶選擇,然後根據用戶的選擇或默認配置加載操作系統內核,並將控制權交給操作系統內核,由內核完成操作系統的啓動。
GRUB特色:
1,引導提示時可以使用命令行界面,方便靈活.
2,可引導的文件系統ext2/ext3 ReiserFS JFS FAT minix FFS
3,支持MD5密碼保護. (使用工具:#grub-md5-crypt)
4.如果/dev/sda中的MBR損壞,使用以下命令即可重新安裝引導裝載程序.
#/sbin/grub-install /dev/sda
/boot/grub/grub.conf
注:grub.conf裏”0” 表示第一個
全局定義部分:
Default 指定默認啓動項,這裏默認是選擇第一個啓動項,這裏也就一個啓動項.
Timeout 指定給用戶選擇的時間,這裏是5秒
Splashimage指定GRUB啓動時的背景畫面.
Hiddenmenu 隱藏選單 password GRUB密碼, --md5參數爲啓用MD5加密.
開機選項部分:
Title 啓動選項標題
Root 指定要加載的根,也就是/boot啓動分區
Kernel 要加載的內核文件, ro 只讀的方式加載root=/根分區, 傳遞內核參數…
Initrd 指定要加載到內存中的RAMDISK文件(加載系統啓動所需的驅動模塊)
引導windows xp :
title windows xp
rootnoverify (hd0,1)
chainloader +1
rootnoverify (hd0,1)
chainloader +1
內核初始化
1,設備檢測
2,設備驅動程序程序初始化
3,以只讀的方式掛載根文件系統
4,載入初始進程: init (PID:1,系統第一個啓動的進程,所有進程的父進程.)
Initrd映像文件裏包含了系統開機需要加載的模塊,如果所需的驅動程序沒有編譯在內核裏,那必須存在於initrd映像文件中,內核會將initrd映像暫時掛載到RAMDISK上,以便初始化程序使用.(內核初始化過程存放在/var/log/dmesg)
Init初始化
1,初始化運行級別
2,系統初始化腳本
3,對應運行級別的腳本目錄,根據某個關鍵字順序啓動相關服務
4,定義UPS電源中斷/恢復腳本
5,在虛擬控制檯生成getty
6,如果是運行級別5則初始化X
Init 讀取的初始化文件: /etc/inittab
系統默認運行級別:
0: 關機 1: 單用戶模式 2: 不帶NFS 的多用戶模式 3: 完全多用戶模式 4: 保留無定義
5: 圖形登錄 6: 重啓
S , s , single 備用單用戶模式
Emergency 緊急模式 (繞過 rc.sysinit, sulogin,)所以只能只讀的方式掛載根.
/etc/rc.d/rc.sysinit的主要工作:
1,激活udev 和selinux
2,依據/etc/sysctl.conf文件設定內核參數
3,設定系統時鐘
4,裝載鍵盤設置
5,啓用交換分區
6,設置主機名
7,檢查並重新掛載根文件系統
8,激活RAID和LVM設備
9,啓用磁盤配額
10,檢查並掛載其他文件系統
11,清理過時的鎖和PID文件
/etc/fstab
掛載設備(設備名,UUID,LABEL) 掛載點 文件系統類型 掛載參數 dump項(0:從不備份,上次備份則顯示距今天的天數) fsck項(/始終爲1即第一個檢查,0爲不檢查)
system V 運行級別:
每個運行級別都有對應的目錄: /etc/rc.d/rcX.d ,而system V init腳本放在
/etc/rc.d/init.d目錄中,運行級別目錄中的符號鏈接使用start和stop參數調用
Init.d目錄內的腳本.
S: start K: kill 數字爲優先級,優先級大的先開後關,以數小爲大.
/etc/rc.d/rc.local 爲system V 初始化的最後階段.
在系統進入運行級別時執行,通常用於自定義開機執行需要的進程.