Linux啟動(dòng)流程簡(jiǎn)述:
前言:
? ? ? ? 本文主要針對(duì)CenOS6系統(tǒng)的啟動(dòng)流程作簡(jiǎn)介快鱼。
? ? ? ? ?Linux的系統(tǒng)啟動(dòng)分為幾個(gè)階段,由于運(yùn)行中的系統(tǒng)分為用戶空間層面和內(nèi)核空間層面纲岭,所以一個(gè)完整的系統(tǒng)啟動(dòng)也是先啟動(dòng)內(nèi)核文件抹竹,然后在啟動(dòng)用戶層面的各種應(yīng)用程序。Linux系統(tǒng)的設(shè)計(jì)屬于單內(nèi)核設(shè)計(jì)止潮,但是各功能模塊卻支持動(dòng)態(tài)的裝載和卸載窃判,極大的壓縮了內(nèi)核的體積,讓內(nèi)核的啟動(dòng)也更加快捷和迅速喇闸。
啟動(dòng)階段1:內(nèi)核的啟動(dòng)
過程簡(jiǎn)述:
1.POST(加電自檢):主要負(fù)責(zé)檢測(cè)系統(tǒng)外圍關(guān)鍵設(shè)備(如:CPU袄琳、內(nèi)存询件、顯卡、I/O唆樊、鍵盤鼠標(biāo)等)是否正常宛琅。
2.boot sequence(選擇啟動(dòng)設(shè)備):按次序查找各引導(dǎo)設(shè)備,第一個(gè)有引導(dǎo)程序的設(shè)備即為本次啟動(dòng)要用到的設(shè)備逗旁;
上述兩個(gè)功能都由BIOS來完成夯秃,BIOS(Basic Input / Output System),又稱基本輸入輸出系統(tǒng)痢艺,是一個(gè)固化在ROM中的軟件仓洼,是操作系統(tǒng)輸入輸出管理系統(tǒng)的一部分。
3.bootloader(引導(dǎo)加載器):
Linux下的引導(dǎo)加載器有g(shù)rub leancy和grub2兩種堤舒,Cenos6中使用的是前者色建。
MBR(主引導(dǎo)記錄):
MBR的共由512字節(jié)組成,前446字節(jié)存放的即是bootloader舌缤。所以在選定啟動(dòng)設(shè)備后箕戳,收件是讀取MBR中的bootloader,打開grub菜單国撵。
grub:
功能:提供一個(gè)菜單陵吸,允許用戶選擇要啟動(dòng)的系統(tǒng)或不同的內(nèi)核版本; 把用戶選定的內(nèi)核裝載到RAM中的特定空間中介牙,解壓壮虫、展開,而后把系統(tǒng)控制權(quán)移交給內(nèi)核环础;
gurb的實(shí)現(xiàn)共有3個(gè)階段:
1st stage:位于MBR的BootLoader中囚似,用來加載2nd stage到內(nèi)存中。
1.5? stage:1和2的橋梁线得,用來驅(qū)動(dòng)文件系統(tǒng)來使1階段過渡到2階段饶唤。
2nd stage:grub核心,/boot/grub贯钩,存放在磁盤分上募狂,用于加載內(nèi)核文件。
4.加載內(nèi)核
分四個(gè)步驟:
探測(cè)可識(shí)別到的所有硬件設(shè)備角雷;
加載硬件驅(qū)動(dòng)程序祸穷;(有可能會(huì)借助于ramdisk加載驅(qū)動(dòng))
以只讀方式掛載根文件系統(tǒng);即rootfs
運(yùn)行用戶空間的第一個(gè)應(yīng)用程序:/sbin/init谓罗。
內(nèi)核文件:/boot//vmlinuz-VERSION-release粱哼,ramdisk文件/boot/initramfs-VERSION-release.img。
啟動(dòng)階段2:?jiǎn)?dòng)用戶空間
? ? ? ? 在上述的內(nèi)核啟動(dòng)后檩咱,后續(xù)的操作都交給init程序來完成揭措。/sbin/init程序是用戶空間的第一個(gè)程序胯舷,主要完成系統(tǒng)初始化,步驟如下:
設(shè)置默認(rèn)運(yùn)行級(jí)別:
? ? ? ? ?運(yùn)行級(jí)別的配置文件為/etc/inittab绊含,共0-6七個(gè)運(yùn)行級(jí)別桑嘶,可以在該文件中自主定義,下次啟動(dòng)默認(rèn)進(jìn)入指定的運(yùn)行級(jí)別躬充。
?運(yùn)行系統(tǒng)初始化腳本:
? ??????/etc/rc.d/rc.sysinit即為系統(tǒng)的初始化腳本逃顶,系統(tǒng)通過自動(dòng)執(zhí)行該腳本,從而完成對(duì)系統(tǒng)的設(shè)置和信息的初始化充甚。
關(guān)閉對(duì)應(yīng)級(jí)別下需要停止的服務(wù)以政,啟動(dòng)對(duì)應(yīng)級(jí)別下需要開啟的服務(wù):
? ? ? ? 這里主要是指通過chkconfig所配置的開機(jī)自動(dòng)啟動(dòng)或者關(guān)閉的各類服務(wù)。
設(shè)置登錄終端:
?啟動(dòng)圖形終端:級(jí)別5需要啟動(dòng)
grub簡(jiǎn)介
GRand Unified Bootloader伴找,系統(tǒng)啟動(dòng)后會(huì)首先打開一個(gè)grub菜單盈蛮,上圖所示,可以自主選擇內(nèi)核技矮、定制內(nèi)核參數(shù)抖誉。grub由三個(gè)階段組成,1st stage衰倦,1_5stage以及stage2袒炉,stage2和內(nèi)核文件等通常放置于一個(gè)基本磁盤分區(qū)。
grub主要實(shí)現(xiàn)以下功能:
(1) 提供菜單樊零、并提供交互式接口
e: 編輯模式我磁,用于編輯菜單;
c: 命令模式淹接,交互式接口十性;
a:修改內(nèi)核參數(shù)
(2) 加載用戶選擇的內(nèi)核或操作系統(tǒng)
允許傳遞參數(shù)給內(nèi)核叛溢,可隱藏此菜單
(3) 為菜單提供了保護(hù)機(jī)制
為編輯菜單進(jìn)行認(rèn)證塑悼,為啟用內(nèi)核或操作系統(tǒng)進(jìn)行認(rèn)證
grub有自己的命令行接口:
help: 獲取幫助列表?
find (hd#,#)/PATH/TO/SOMEFILE:查找某個(gè)文件
root (hd#,#)設(shè)置grub的根設(shè)備,即stage2階段所在的分區(qū)設(shè)備楷掉;
initrd /PATH/TO/INITRAMFS_FILE: 設(shè)定為選定的內(nèi)核提供額外文件的ramdisk所在的路徑厢蒜;ramdisk版本必須與內(nèi)核完全匹配。
boot: 引導(dǎo)啟動(dòng)選定的內(nèi)核烹植;
配置文件說明:/boot/grub/grub.conf
按行說明:
1:在grub菜單頁默認(rèn)啟動(dòng)的選項(xiàng)斑鸦,0表示默認(rèn)啟動(dòng)第一個(gè)內(nèi)核
2:設(shè)置超時(shí)時(shí)長,不操作的話5秒后默認(rèn)選擇第一項(xiàng)
3:加載的背景圖片的路徑
4:隱藏菜單
5:定義菜單項(xiàng)標(biāo)題草雕,下面的root巷屿,kernel,initrd即自己指定的啟動(dòng)參數(shù)墩虹,也可以通過命令行自己指定嘱巾。
Kickstart文件制作
kickstart是什么
??????? 許多系統(tǒng)管理員愿意使用自動(dòng)化的安裝方法來安裝linux系統(tǒng)憨琳。為了滿足這種需要,紅帽公司建立了kickstart安裝方法旬昭。使用kickstart自動(dòng)化安裝篙螟,系統(tǒng)管理員可以創(chuàng)建一個(gè)ks文件,該文件包含了在典型的安裝過程中所遇到的問題的答案问拘。
??????? Kickstart文件可以存放在一個(gè)固定的位置上遍略,在安裝過程中被獨(dú)立的機(jī)器所讀取。這個(gè)安裝方法可以支持使用單一kickstart文件在多臺(tái)機(jī)器上安裝Linux系統(tǒng)骤坐,這對(duì)于網(wǎng)絡(luò)和系統(tǒng)管理員來說是個(gè)理想的選擇绪杏。
如何執(zhí)行kickstart安裝
??????? kickstart 安裝可以使用本地光盤,本地硬盤驅(qū)動(dòng)器纽绍,或通過 NFS寞忿、FTP、HTTP 來執(zhí)行顶岸。
??????? 要使用 kickstart腔彰,必須:
??????????????? 1.創(chuàng)建一個(gè)正確的kickstart文件。
??????????????? 2.創(chuàng)建有kickstart文件的引導(dǎo)介質(zhì)或者讓主機(jī)可以通過網(wǎng)絡(luò)訪問該文件辖佣。
??????????????? 3.籌備安裝過程霹抛。
??????????????? 4.開始kickstart安裝。
Kickstart文件部分內(nèi)容格式說明:
install ? (可選) ??? 明確指定系統(tǒng)次次進(jìn)行的是全新安裝系統(tǒng)卷谈;是默認(rèn)項(xiàng)杯拐;
cdrom? (可選) ??? 以本地CD-ROM為源安裝系統(tǒng);
harddrive? (可選) ??? 以硬盤分區(qū)中包含的鏡像為源安裝新系統(tǒng)世蔗;當(dāng)以該種方式安裝系統(tǒng)時(shí)端逼,即使指定clearpart --all項(xiàng),源所在分區(qū)也不會(huì)被重新抹去污淋; ?
nfs?? (可選) ??? 指定從NFS服務(wù)器上獲取安裝源顶滩;? ?
?url ? (可選) ??? 指定通過FTP或HTTP從網(wǎng)絡(luò)獲取安裝源;
bootloader (必需)? ? 設(shè)定boot loader安裝選項(xiàng)寸爆;? ? ?
-append=??? ??? 可以指定內(nèi)核參數(shù)? ? --driveorder=??? 設(shè)定設(shè)備BIOS中的開機(jī)設(shè)備啟動(dòng)順序 ??? --location=??? ??? 設(shè)定引導(dǎo)記錄的位置礁鲁; mbr:默認(rèn)值;partition:將boot loader安裝于包含kernel的分區(qū)超級(jí)快中赁豆;none:不安裝boot loder仅醇。? ??
clearpart (可選) ??? 在建立新分區(qū)前清空系統(tǒng)上原有的分區(qū)表,默認(rèn)不刪除分區(qū)魔种; ??? --all? ??? 擦除系統(tǒng)上原有所有分區(qū)析二; ??? --drives??? 刪除指定驅(qū)動(dòng)器上的分區(qū) ??? --initlabel??? 初始化磁盤卷標(biāo)為系統(tǒng)架構(gòu)的默認(rèn)卷標(biāo) ??? --linux??? ??? 擦除所有的linux分區(qū) ??? --none(default)不移除任何分區(qū)
zerombr? (可選) ??? 清除mbr信息,會(huì)同時(shí)清空系統(tǒng)用原有分區(qū)表
firewall (可選) ??? 配置系統(tǒng)防火墻選項(xiàng)节预; ?
selinux (可選) ??? 設(shè)置系統(tǒng)selinux狀態(tài)叶摄;默認(rèn)為啟用并處于enforcing模式漆改;? ? ?
reboot (可選) ??? 在系統(tǒng)成功安裝完成后默認(rèn)自動(dòng)重啟系統(tǒng)(kickstart方法時(shí));
halt? (可選) ??? 在系統(tǒng)成功安裝完成后關(guān)機(jī)准谚;默認(rèn)為reboot挫剑; ??? 其他選項(xiàng)還有shutdown、poweroff
graphical (可選)? ?默認(rèn)值柱衔,在圖形模式下進(jìn)行kickstart方式安裝樊破;?
text (可選) ??? 以文本方式進(jìn)行kickstart安裝;默認(rèn)為圖形界面
keyboard (必需) ??? 設(shè)置鍵盤類型唆铐;一般設(shè)置為us哲戚;
lang (必需) ??? 設(shè)置安裝過程使用的語言及系統(tǒng)的缺省語言;
timezone (可選)? ? 設(shè)置系統(tǒng)的時(shí)區(qū)艾岂; ???
auth/authconfig? (必需) ??? 設(shè)置系統(tǒng)的認(rèn)證方式顺少;默認(rèn)為加密但不隱藏(shadow); ??? --enablemd5??? 使用MD5加密方式 ??? --useshadow或—enableshadow??? 使用隱藏密碼王浴; ??? --enablenis=???? 使用NIS認(rèn)證方式 ??? --nisdomain=??? NIS域? ?
rootpw (必需)? ? 設(shè)置系統(tǒng)root賬號(hào)的密碼脆炎; ???
network (可選) ??? 配置網(wǎng)絡(luò)信息;在網(wǎng)絡(luò)安裝(NFS/HTTP/FTP)時(shí)必須指定氓辣; ??? --bootproto=dhcp|bootp|static??? 指定ip獲取方式秒裕,默認(rèn)為dhcp/bootp; ??? --device=??? 設(shè)置安裝時(shí)激活來進(jìn)行系統(tǒng)安裝的網(wǎng)卡設(shè)備;該參數(shù)只在kickstart文件為本地文件時(shí)有效钞啸;若kickstart配置文件在網(wǎng)絡(luò)上几蜻,安裝程序會(huì)先初始化網(wǎng)卡然后去尋找kickstart文件; ??? --ip=??? ip設(shè)置 ??? --gateway=?? 網(wǎng)關(guān) ??? --nameserver=? DNS設(shè)置 ??? --nodns??? ???? 不設(shè)置DNS ??? --netmask=?? 掩碼 ??? --hostname= 設(shè)置安裝后主機(jī)名稱 ??? --onboot=??? 設(shè)置是否在系統(tǒng)啟動(dòng)時(shí)激活網(wǎng)卡 ??? --class=??? ??? 設(shè)置DHCP的class值 ??? --noipv4??? ??? 禁用該設(shè)備的ipv4功能 ??? --noipv6??? ??? 禁用該設(shè)備的ipv6功能 ??? 如將網(wǎng)絡(luò)模式設(shè)置為靜態(tài)模式体斩,則必須在一行內(nèi)寫上ip梭稚,netmask、dns絮吵、gateway等信息弧烤;? ?
part/partition? (install模式必須) ??? 建立新分區(qū);?
創(chuàng)建kickstart配置文件的方式:
?? 1.? 文本編輯器編輯生成:vim
?? 2. 用圖形化界面配置:system-config-kickstat(需要安裝system-config-kickstart.noarch包)
創(chuàng)建光盤鏡像
步驟:
創(chuàng)建光盤根目錄
復(fù)制光盤下的isolinux目錄到根目錄下
賦予isolinux里的所有文件和目錄寫權(quán)限(這樣就可以自定義isolinux.cfg文件)
復(fù)制修改好的ks文件到myboot目錄下(這里myboot目錄相當(dāng)于光盤的根目錄)
建立鏡像