POST(加電自檢)-->bootsequence(引導(dǎo)次序,,BIOS)-->Boot Loader(MBR)-->Kernel+ramdisk(臨時(shí)根,,initrd,,initramfs)-->mount rootfs(根切換)-->/sbin/init(配置文件,CentOS 5:/etc/inittab, CentOS6 /etc/init/*.conf)
設(shè)置默認(rèn)運(yùn)行級(jí)別-->指定系統(tǒng)初始化腳本-->初始化額外的硬件設(shè)備并加載驅(qū)動(dòng)程序-->啟動(dòng)(關(guān)閉)服務(wù)(/etc/rc.d/rc#.d,,/etc/rc.d/init.d/)-->/etc/rc.d/rc.local-->設(shè)置CtrlAltDel組合的功能-->啟動(dòng)終端(mingetty),,并在終端附加登錄程序(login)-->如果級(jí)別為5,則要啟動(dòng)X server,;
一,、POST加電自檢: 當(dāng)我們打開(kāi)計(jì)算機(jī)電源,計(jì)算機(jī)首先會(huì)讀取BIOS信息,,BIOS中記錄了CPU,、內(nèi)存、設(shè)備啟動(dòng)序列,、硬盤等信息,;然后對(duì)系統(tǒng)啟動(dòng)關(guān)鍵硬件設(shè)備進(jìn)行檢測(cè),如果出現(xiàn)嚴(yán)重故障則停機(jī),;如果是一般故障,,會(huì)發(fā)出報(bào)警提示,等待故障清楚,;如果沒(méi)有故障,,加電自檢完成。 BIOS(Basic Input Output System)是保存于主板CMOS芯片中的程序代碼,; CMOS(ComplementaryMetal Oxide Semiconductor):是主板上的ROM芯片,;
二、獲取引導(dǎo)次序,,讀取MBR: 加電自檢完成之后:CPU會(huì)讀取BIOS信息中的設(shè)備啟動(dòng)序列,,按照次序引導(dǎo),按次序找引導(dǎo)設(shè)備,,第一個(gè)有引導(dǎo)程序(MBR)的設(shè)備即為啟動(dòng)PC server所用到的設(shè)備,; 可作為啟動(dòng)設(shè)備:光驅(qū),便攜式移動(dòng)設(shè)備,,硬盤,,網(wǎng)卡(系統(tǒng)引導(dǎo),,PXE) PXE實(shí)現(xiàn)系統(tǒng)引導(dǎo):DHCP,tftp(kernel+ramdisk)
MBR(主引導(dǎo)記錄,,Master BootRecord): MBR位于磁盤的0磁道0扇區(qū),,占用512個(gè)字節(jié): 1 2 3 | 446bytes:Boot Loader,主程序,;
64bytes:PartitionTable,,硬盤分區(qū)表,每16bytes標(biāo)記一個(gè)分區(qū),,一共4分區(qū),;3個(gè)主分區(qū),,1個(gè)擴(kuò)展分區(qū),,擴(kuò)展分區(qū)還可以劃分為若干個(gè)邏輯分區(qū);
2bytes:MBR有效性標(biāo)記,;
|
三,、Boot Loader: 操作系統(tǒng)內(nèi)核運(yùn)行之前的一段小程序,選擇要啟動(dòng)的內(nèi)核(在當(dāng)前磁盤的某或某些分區(qū)上),;
1,、Boot Loader比較常見(jiàn)的有GRUB和LILO: 1 2 3 4 5 | LILO:LInux Loader
0-1023范圍內(nèi)的柱面構(gòu)成的分區(qū)的內(nèi)核文件,通常應(yīng)用與嵌入式計(jì)算機(jī),;
GRUB:GRand Unified Bootloader
CentOS 5&6:Grub 0.97
CentOS7:Grub2 1.96
|
2,、GRUB:GRand Unified Bootloader 1)、grub程序由兩段組成: 1 2 3 | stage1:位于MBR中(0柱面 0磁道 1扇區(qū)),;
stage1_5:位于MBR隨后的扇區(qū),;
stagr2:讀取grub.conf配置文件,并實(shí)現(xiàn)引導(dǎo)功能的擴(kuò)展,;
|
grub目錄和配置文件位置:
2),、grub的功能: 1 2 3 4 5 6 7 8 9 10 | 1、提供菜單,,并提供交互式接口,;
e:進(jìn)入編輯模式;
a:直接修改內(nèi)核參數(shù),;
c:進(jìn)入grub命令行模式,;
2、允許用戶選擇要啟動(dòng)的內(nèi)核或系統(tǒng),;
允許傳遞引導(dǎo)參數(shù)給內(nèi)核,;
選擇界面可隱藏;
3,、為編輯功能提供保護(hù)機(jī)制,;
啟用內(nèi)核文件:選擇運(yùn)行制定的內(nèi)核需要先輸入密碼;
傳遞參數(shù):使用e命令需要先輸入密碼;
|
在菜單選擇倒計(jì)時(shí)界面按任意鍵進(jìn)入grub菜單:
按e鍵進(jìn)入編輯菜單可以看到kernel和initrd:
3),、grub命令行接口: 1 2 3 4 5 6 7 8 9 10 11 | >root(DEVICE):指定哪個(gè)分區(qū)為接下來(lái)要啟動(dòng)的系統(tǒng)或內(nèi)核文件所在的分區(qū),;
所有硬盤都識(shí)別為hd;
不同的硬盤基于數(shù)字標(biāo)識(shí):如hd0,hd1等,;
同一個(gè)硬盤上的不同分區(qū),,也使用數(shù)字標(biāo)識(shí),如hd0,0 hd1,5,;
> find (DEVICE) /path/to/file :查找文件
>kernel:指定要運(yùn)行的內(nèi)核文件,;
>initrd:為要運(yùn)行的內(nèi)核指定其可用的ramdisk文件;
>boot:?jiǎn)?dòng)此前配置好的內(nèi)核或系統(tǒng),;
|
按c鍵進(jìn)入grub命令行接口:
4),、配置文件grub.conf: 文件位置:/boot/grub/grub.conf
參數(shù): 1 2 3 4 5 6 7 8 | default=:選擇第幾個(gè)title配置的內(nèi)核或系統(tǒng),各title從0開(kāi)始編號(hào),;
timeout= #:菜單顯示的超時(shí)時(shí)長(zhǎng),;
splashimage= /path/to/some_image_file :指定菜單的背景圖片;此圖片只能為14bits色,,xpm格式,, gzip 壓縮;
hiddenmenu:隱藏菜單
titleTILTE STRING:顯示于菜單中的標(biāo)題,;
root:指定引導(dǎo)分區(qū),;
kernel:指定kernel位置;
initrd:指定initramfs位置,;
|
在grub菜單按a鍵可在內(nèi)核加載前編輯內(nèi)核參數(shù):
常用參數(shù): 1 | single:?jiǎn)斡脩裟J絾?dòng),;
|
5)、grub保護(hù)機(jī)制: 1 2 3 4 5 6 | 1,、生成密碼:
#grub-md5-crypt
2,、保護(hù)編輯功能,則需要title之外的添加:
#password--md5 密碼串
3,、保護(hù)使用某內(nèi)核,,則需要內(nèi)核對(duì)應(yīng)的title之下添加:
#password--md5 密碼串
|
6)、安裝grub的方式: 1 2 3 4 5 6 7 8 | 使用grub- install 命令:
#grub-install [--root-directory=/path/to/somewhere] DEVICE
--root-directory= /path/to/somewhere
/path/to/somewhere :內(nèi)核及initrd文件所在的分區(qū)的掛載點(diǎn)的父目錄,,且此掛載點(diǎn)必須叫boot,;
例如: /dev/sdb1 : /mnt/boot
#grub-install --root-directory=/mnt /dev/sdb
|
四、kernel+ramdisk: 根據(jù)grub設(shè)定的內(nèi)核映像所在路徑,,系統(tǒng)讀取內(nèi)核文件,,并進(jìn)行解壓縮操作;系統(tǒng)將解壓縮后的內(nèi)核放在內(nèi)存中,,完成內(nèi)核自身初始化,;探測(cè)所能識(shí)別的硬件設(shè)備,,并加載驅(qū)動(dòng)程序,完成核心環(huán)境建立,;
要讀取內(nèi)核文件必須訪問(wèn)根文件系統(tǒng)要加載根文件系統(tǒng)所在的設(shè)備,,而此時(shí)根文件系統(tǒng)沒(méi)有掛載,要掛載根文件系統(tǒng)需要根文件系統(tǒng)所在設(shè)備的驅(qū)動(dòng)程序,。為解決這個(gè)問(wèn)題,,grub在加載內(nèi)核同時(shí),也把ramdisk加載到內(nèi)存中并運(yùn)行,;
展開(kāi)ramdisk鏡像文件:
ramdisk在內(nèi)存中表現(xiàn)為一個(gè)虛擬根文件系統(tǒng)initfs,,里面有如同Linux根目錄下的bin、sbin,、dev,、etc、lib,、proc,、usr,、var,、tmp等目錄;initfs將內(nèi)核與真實(shí)根建立聯(lián)系,,內(nèi)核通過(guò)initfs加載驅(qū)動(dòng)程序,,然后進(jìn)行根切換,掛載真實(shí)根目錄,;至此內(nèi)核加載完成,;
1、kernel: 內(nèi)核的功能:進(jìn)程管理,、文件系統(tǒng),、硬件驅(qū)動(dòng)(在內(nèi)核模式下運(yùn)行)、內(nèi)存管理,、安全功能(SELinux),、網(wǎng)絡(luò)子系統(tǒng);
1),、內(nèi)核設(shè)計(jì)流派: 1 2 3 4 5 6 7 8 9 10 | 單內(nèi)核體系結(jié)構(gòu):
linux:支持模塊化,,模塊可以動(dòng)態(tài)裝卸載
linux內(nèi)核:核心+外圍模塊
核心: /boot/vmlinux-VERSION-release
模塊: /lib/modules/VERSION-release
.ko:kernel object
ramdisk: /boot/initramfs-VERSION-release .img
在內(nèi)核啟動(dòng)過(guò)程中裝載根文件系統(tǒng)時(shí)有用;模塊間有可能存在依賴關(guān)系,;
微內(nèi)核體系結(jié)構(gòu):
windows,、solaris
|
2)、內(nèi)核的某些功能: 1 2 3 | 編譯進(jìn)內(nèi)核本體 [*]
編譯成內(nèi)核模塊 [M]
不選擇使用 [ ]
|
3),、內(nèi)核模塊管理: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #lsmod:顯示內(nèi)核已裝載模塊
動(dòng)態(tài)裝卸載模塊:
#modprobe -rMOD_NAME:卸載,;
#modprobe MOD_NAME:裝載,;
#insmod/path/to/module_file:裝載;
#rmmod MOD_NAME:卸載,;
查看某模塊的詳細(xì)信息:
#modinfo MOD_NAME
檢查并生成模塊間依賴關(guān)系的命令:
#depmod
|
2,、ramdisk: 1 2 3 4 5 6 | CentOS 5:SysV,init,; /etc/inittab-- > /etc/rc .d /rc .sysinit,;
CentOS 6:upstart,init,; /etc/init/ *.conf( /etc/inittab ) --> /etc/rc .d /rc .sysinit
#chkconfig
CentOS 7:systemd,, init; /usr/lib/systemd/system/ ,;借鑒MAC OS X,;
#systemctl
|
五、/sbin/init: 內(nèi)核加載完成之后,,第一個(gè)運(yùn)行的程序就是/sbin/init,,該文件會(huì)先讀取/etc/init/rcS.conf文件:
設(shè)定系統(tǒng)運(yùn)行級(jí)別: 1 2 3 4 5 6 7 8 9 10 | 0-6:7個(gè)運(yùn)行級(jí)別:
0:關(guān)機(jī);
1:single usermode,,single,,s,S,,不啟動(dòng)網(wǎng)絡(luò)功能,,不啟動(dòng)用戶認(rèn)證,單用戶模式(維護(hù)模式),;
2:multi usermode,,不支持NFS功能;
3:完全多用戶模式,,文本接口,,不啟動(dòng)圖形界面;
4:未使用,;預(yù)留級(jí)別,;
5:完全多用戶模式,圖形接口,;
6:重啟,;
#init:切換運(yùn)行級(jí)別;
|
六,、/etc/rc.d/rc.sysinit:系統(tǒng)初始化腳本 查看/etc/rc.d/rc.sysinit文件部分內(nèi)容:
初始化設(shè)置流程: 1 2 3 4 5 6 7 8 9 10 11 | 設(shè)定主機(jī)名:讀取 /etc/sysconfig/network 文件中的HOSTNAME參數(shù),,并以之設(shè)定主機(jī)名;
打印文本歡迎信息:
激活SELinux和udev,;
掛載 /etc/fstab 文件中定義的其他文件系統(tǒng),;
激活swap,;
檢測(cè)根文件系統(tǒng),并以讀寫方式重新掛載,;
設(shè)置系統(tǒng)時(shí)鐘,;
根據(jù) /etc/sysctl .conf設(shè)置內(nèi)核參數(shù);
激活LVM和RAID設(shè)備,;
加載額外設(shè)備的驅(qū)動(dòng)程序,;
清理操作;
|
七,、啟動(dòng)內(nèi)核模塊: 依據(jù)/etc/modprobe.d/*.conf文件裝載內(nèi)核模塊:
八,、執(zhí)行指定運(yùn)行級(jí)別的腳本程序: /etc/rc.d/rc#.d/:?jiǎn)?dòng)指定的默認(rèn)級(jí)別的默認(rèn)為啟動(dòng)的服務(wù),停止指定的級(jí)別下默認(rèn)為關(guān)閉的服務(wù),;
查看/etc/rc.d/rc3.d/目錄:
1,、目錄中為鏈接文件指向服務(wù)腳本: 1 2 3 4 | S ##:默認(rèn)啟動(dòng)的服務(wù);
K ##:默認(rèn)停止的服務(wù),;
##:01-99,,數(shù)字越小,越優(yōu)先啟動(dòng)或關(guān)閉,;
先啟動(dòng)的后關(guān)閉(自動(dòng)解決依賴關(guān)系),;
|
2、chkconfig:創(chuàng)建或改變連接文件,; 1 2 3 4 5 6 7 8 9 10 11 | #chkconfig --add SRV_SCRIPT:創(chuàng)建,;
#chkconfig --del SRV_SCRIPT:刪除;
#chkconfig SRV_SCRIPT {on|off}:開(kāi)機(jī)自動(dòng){啟動(dòng)|關(guān)閉},;
默認(rèn)為2345級(jí)別;
--level ######
腳本如果期望能夠被chkconfig命令使用,,要在腳本中添加如下行:
#chkconfig:- 85 15
-:當(dāng)此腳本由chkconfig控制時(shí),,默認(rèn)哪些級(jí)別就是開(kāi)啟的;
85:?jiǎn)?dòng)優(yōu)先級(jí),;
15:關(guān)閉優(yōu)先級(jí),;
|
九、/etc/rc.d/rc.local: 是一個(gè)腳本,,通常為系統(tǒng)啟動(dòng)完成的最后運(yùn)行一個(gè)腳本,; 定義一些組合鍵的功能:通常是Ctrl+Alt+Delete; 初始化字符終端,; 如果有需要,,啟動(dòng)圖形終端;
十,、/bin/logon: 登陸程序:顯示登陸提示符,,等待用戶輸入username和passwd,;
本文出自 “小馬的學(xué)習(xí)記錄” 博客,請(qǐng)務(wù)必保留此出處http://masachencer.blog.51cto.com/8683770/1672797
|