linux系統(tǒng)啟動流程以及kickstart文件制作

?"1、簡述linux操作系統(tǒng)啟動流程

一圈浇、Linux系統(tǒng)的組成部分:內(nèi)核+根文件系統(tǒng)

1.1內(nèi)核的功能

進程管理:IPC(inter process communication)機制辨萍,有消息隊列项玛、semerphor妙色、shm拌夏、socket(跨主機之間的通信)

內(nèi)存管理:

文件系統(tǒng)管理:

網(wǎng)絡(luò)管理:

硬件驅(qū)動管理:

安全管理:

1.2運行中的系統(tǒng)環(huán)境可以分為內(nèi)核空間和用戶空間

內(nèi)核空間:內(nèi)核代碼推穷,表現(xiàn)為系統(tǒng)調(diào)用

用戶空間:應(yīng)用程序心包,表現(xiàn)為進程或者線程

1.3內(nèi)核設(shè)計流派

單內(nèi)核設(shè)計:把所有功能都集成在單個內(nèi)核內(nèi)

舉例:Linux

微內(nèi)核設(shè)計:將不同的功能分別設(shè)計成不同的內(nèi)核子系統(tǒng)

舉例:Windows,Solaris

1.4Linux內(nèi)核特點

內(nèi)核模塊化:.ko(kernel object)馒铃;例如文件系統(tǒng)蟹腾,硬件驅(qū)動,網(wǎng)絡(luò)協(xié)議等

支持內(nèi)核模塊的動態(tài)裝載和卸載

1.5內(nèi)核的組成部分

1)核心文件是/boot/vmlinuz-VERSION-release;

內(nèi)核官方站點是:https://www.kernel.org

2)模塊文件在:/lib/modules/VERSION-release

進入正題:Linux系統(tǒng)啟動流程

注:以下僅適用于PC架構(gòu)的主機和MBR架構(gòu)的

Linux系統(tǒng)啟動大概有以下步驟:


步驟一:加電自檢:power on system test(POST)

主要檢測硬件設(shè)備是否存在并是否能正常運行区宇,如:CPU娃殖、內(nèi)存、硬盤等议谷;CPU風(fēng)扇是否能夠正常運轉(zhuǎn)炉爆。有些設(shè)備不影響系統(tǒng)的正常啟動,例如鼠標(biāo)鍵盤等卧晓。

這些自檢的功能是由一個軟件程序來提供的芬首,叫BIOS(Basic Iput and Output System),該軟件是在CMOS芯片上的逼裆,通過給CMOS加電進而激活BIOS郁稍,BIOS會根據(jù)CMOS上的一些配置的硬件信息去讀取其他設(shè)備的硬件信息并且檢測其是否能夠正常運行,之后再進行硬件設(shè)備的初始化胜宇。

步驟二:選擇啟動順序耀怜,加載MBR(Boot Sequence)

? ? ? ?在硬件設(shè)備初始化之后,BIOS會列出一些可以啟動的裝置順序桐愉,接下來讀取第一個可以啟動設(shè)備中操作系統(tǒng)的核心文件封寞。就是在第一個可以啟動的硬盤的第一個扇區(qū)之內(nèi),也就是(MBR)仅财,該啟動管理程序叫做Boot Loader狈究。

Boot Loader 的作用就是加載操作系統(tǒng)的核心文件,并提交內(nèi)存當(dāng)中運行,隨后進行操作系統(tǒng)的安裝

Boot Loader的另一個主要功能是提供菜單信息

步驟三:加載系統(tǒng)內(nèi)核kernel抖锥,執(zhí)行系統(tǒng)初始化信息

Boot Loader?加載并將內(nèi)核文件加壓縮到內(nèi)存當(dāng)中亿眠,此時系統(tǒng)根據(jù)內(nèi)核文件會對硬件設(shè)備進行再一次的檢測和加載(網(wǎng)卡、磁盤磅废、CPU)纳像,與之前BIOS完全不同,這時BIOS已經(jīng)完全退出舞臺拯勉。有內(nèi)核程序全權(quán)接管竟趾。內(nèi)核文件通常放在/boot/linuz-VERSION-release.

這里有一個有趣的問題需要探討,類似于先有雞還是先有蛋的問題:因為Boot Loader加載內(nèi)核程序到內(nèi)存后宫峦,內(nèi)核程序就接管了一切事物岔帽,那么他要去加載內(nèi)核文件,而內(nèi)核文件在硬盤當(dāng)中导绷。眾所周知犀勒,也就是必須要有硬盤的驅(qū)動程序才能加載內(nèi)核文件,而硬盤的驅(qū)動又在內(nèi)核文件當(dāng)中妥曲,如此循環(huán)我們是沒辦法加載內(nèi)核文件的贾费。

所以這里也就引進了虛擬文件系統(tǒng)來解決這個問題檐盟。虛擬文件系統(tǒng)(Initail RAM DISK)褂萧,同樣也放在/boot目錄下面,并且是一個以initrd開頭的文件葵萎。

這個文件的特點是:他可以由Boot Loader加載至內(nèi)存并解壓縮导犹,然后模擬一個虛擬的根文件系統(tǒng),進而提供相關(guān)的驅(qū)動程序以只讀方式來加載硬盤設(shè)備中的真正根文件系統(tǒng)陌宿,大功告成之后把歷史舞臺交給根文件系統(tǒng)。

步驟四:啟動用戶空間的第一個執(zhí)行程序/sbin/init

在內(nèi)核波丰、硬件及驅(qū)動程序加載完畢后壳坪,內(nèi)核會呼叫用戶控件的第一個執(zhí)行程序/sbin/init,init主要功能是準(zhǔn)備軟件運行環(huán)境掰烟,包括主機名稱爽蝴、網(wǎng)絡(luò)配置、文件系統(tǒng)格式等其他服務(wù)的管理纫骑。這些操作都是根據(jù)init的配置文件來定義的蝎亚。

init的配置文件;

centos5:由于centos5采用的是SYsV init方式,其特點是啟動用戶空間的服務(wù)程序先馆,通常通過腳本進行发框,有依賴關(guān)系的服務(wù)將被串行啟動,這也就導(dǎo)致centos5啟動非常慢煤墙,其配置文件為 /etc/inittab

centos6:采用Upstart方式梅惯,其特點是守護進程間的通信依賴于D-BUS進行宪拥,因此,可基本實現(xiàn)并行啟動铣减;配置文件:/etc/inittab,/etc/init/*.conf

centos7:采用Systemd方式她君,其特點是服務(wù)只有在第一次被訪問時才會真正啟動起來;因此centos7系統(tǒng)的啟動過程非常之快:其配置文件為/usr/lib/systemd/*

在init中有非常重要的配置項目葫哗,叫系統(tǒng)的啟動級別缔刹。分為以下幾種:

1、0:關(guān)閉所有服務(wù)劣针,即關(guān)機校镐;

2、1:維護模式酿秸,單用戶模式灭翔;此級別允許用戶直接登錄而無需驗證;

3辣苏、2:維護模式晚胡,多用戶模式缺谴;需要用戶認證,會啟動網(wǎng)絡(luò)功能;

4换可、3:正常模式,完全多用戶的文本界面

5讨勤、4:預(yù)留模式

6购裙、5:正常模式,完全多用戶的圖形界面

7萌狂、6:關(guān)閉所有服務(wù)档玻,重啟

通常默認是3級別或者5級別,服務(wù)器上默認3級別茫藏;切換級別使用init 【0-6】误趴,查看級別使用who -r 或者runlevel

init的處理流程

init是通過自上而下的讀取inittab文件來依次執(zhí)行的,因此init處理流程是:

1务傲、讀取默認runlevel凉当,一般默認是3級別

2、使用/etc/rc.d/rc.sysinit進行系統(tǒng)的初始化

3售葡、由于采用的是3級別看杭,因此只進行13:3:wait:/etc/rc.d/rc 3

4、配置好【ctrl】+【alt】+【del】組合鍵的功能

5挟伙、配置不斷電系統(tǒng)pr楼雹、pf兩種機制

6、啟動mingetty6個終端

7、如果是5級別烘豹,則會以/etc/X11/prefdm-nodaemon啟動圖形界面

在init執(zhí)行的第二步執(zhí)行系統(tǒng)的初始化過程瓜贾,init根據(jù)/etc/rc.d/rc.sysinit中定義的內(nèi)容進行系統(tǒng)的初始化,/etc/rc.d/rc.sysinit所做的事情主要有以下幾點:

(1)根據(jù)配置文件中的設(shè)定來設(shè)置主機名(讀取/etc/sysconfig/network文件中的HOSTNAME進行)携悯;

(2)打印文本歡迎信息祭芦;

(3)激活seLINUX和udev;

(4)掛載所有定義在/etc/fstab文件中的文件系統(tǒng)憔鬼;

(5)激活swap設(shè)備

(6)檢測根文件系統(tǒng)龟劲,并實現(xiàn)以讀寫方式重新掛載

(7)設(shè)置系統(tǒng)時鐘

(8)根據(jù)/etc/sysctl.conf文件設(shè)定的內(nèi)核參數(shù)的值

(9)激活LVM和RAID設(shè)備;

(10)加載額外的設(shè)備驅(qū)動程序

(11)清理操作

在/etc/rc.d/rc.sysinit初始化完成系統(tǒng)后轴或,此時系統(tǒng)順利開始工作昌跌,不過此時我們還是啟動各項服務(wù)如:網(wǎng)絡(luò)功能、dhcp服務(wù)等功能照雁、所有以S開頭鏈接文件蚕愤,都被傳遞start參數(shù)以啟動,所有以K開頭的文件饺蚊,都被傳遞stop參數(shù)以停止

啟動相關(guān)服務(wù)之后萍诱,必須啟動登錄終端。

一般啟動6個虛擬終端:

tty1:2345:respawn:/sbin/mingetty tty1

tty2:2345:respawn:/sbin/mingetty tty2

.....

每個終端啟動后污呼,會立即通過此終端附加一個login登錄程序裕坊。

總結(jié):加電自檢-->Boot Sequence(BIOS)-->Boot Loader(MBR)-->Kernel(ramdisk)-->rootfs-->switchroot-->/sbin/init-->(/etc/inittab,/etc/init/*.conf)-->設(shè)置默認的運行級別-->系統(tǒng)初始化腳本-->關(guān)閉或啟動對應(yīng)級別下的服務(wù)-->啟動終端

2、簡述grub啟動引導(dǎo)程序配置及命令行接口詳解??

2.1

在BIOS讀取相關(guān)信息后燕酷,接下來就去第一個可以啟動的設(shè)備當(dāng)中MBR加載Boot Loader主程序籍凝,BootLoader提供具有菜單功能,直接加載內(nèi)核信息苗缩,以及相關(guān)的控制權(quán)轉(zhuǎn)交功能饵蒂。MBR只有512字節(jié),其中446字節(jié)加載Boot Loader酱讶。因為Boot Loader只有446個bytes退盯,所以不可能容納那么多功能,因此Linux將Boot Loader的程序運行和配置項加載分成三個階段(stage)來運行:

stage1:運行Boot Loader主程序浴麻,這個程序必須被安裝在啟動區(qū)得问,即MBR僅安裝Boot Loader的最小主程序囤攀。

stage1_5:在MBR隨后的分區(qū)存放软免,主要用于與stage2所在的分區(qū)的文件系統(tǒng)進行交互

stage2:通過Boot Loader加載的所有配置文件及相關(guān)的環(huán)境參數(shù)信息,這些都存放在磁盤分區(qū)/boot下焚挠。

由此可知/boot/grub中最重要的就是grub.conf以及各種文件系統(tǒng)的定義膏萧,Boot Loader通過讀取這些文件系統(tǒng)后就能識別在/boot下的內(nèi)核文件了。

/boot/grub/grub.conf中各種參數(shù)解析:

default:設(shè)定默認的內(nèi)核文件

timeout:系統(tǒng)隔多久啟動默認操作系統(tǒng)

splashimage:grub菜單背景圖片;

圖片:xpm格式榛泛,壓縮為gzip蝌蹂,14bits顏色,640X480曹锨;

hiddenmenu:隱藏選擇菜單孤个;

title:定義一個操作系統(tǒng)或內(nèi)核

root:指定引導(dǎo)當(dāng)前操作系統(tǒng)的分區(qū)

kernel:指定內(nèi)核文件路徑,根文件系統(tǒng)所在的硬盤設(shè)備沛简,以及相關(guān)的內(nèi)核參數(shù)

initrd:指定輔助內(nèi)核完成啟動的虛擬文件系統(tǒng)路徑

2.2GRUB界面支持命令行接口齐鲤,在GRUB界面按照提示輸入e、b椒楣、c等命令進行相應(yīng)的編輯给郊,輸入c進入命令行模式:

help:獲取幫助信息

find:文件查找,方法find (hd#捧灰,#)/

root kernel initrd boot 同上

3淆九、實現(xiàn)kickstart文件制作與光盤鏡像制作"

kickstart是RedHat/CentOS/Fedora等系統(tǒng)實現(xiàn)無人值守自動化安裝的一種安裝方式,系統(tǒng)管理>員可將安裝過程中需要配置的所有參數(shù)集成于一個kickstart文件中毛俏,而后在系統(tǒng)安裝時炭庙,安裝程>序通過讀取事先給定的這個kickstart文件自動化地完成配置并安裝完成。

制作kickstart文件的方式:

?1)手動編輯拧抖,可以依據(jù)某個模板進行修改煤搜。

? 2)使用kickstart文件創(chuàng)建工具:system-config-kickstart進行配置,同樣可以導(dǎo)入某個模板進行修改唧席。

本文主要介紹使用 kickstart文件創(chuàng)建工具:system-config-kickstart 來定制kickstart:必須確保system-config-kickstart已經(jīng)安裝擦盾,如果沒有安裝可以使用yum安裝:

? ? [root@jacklin ~]# yum install system-config-kickstart

在命令行上運行system-config-kickstart命令即可啟動窗口界面:

? ? [root@jacklin isolinux]# system-config-kickstart

kickstart配置程序:

可以使用Ctrl+O打開文件

1、*如上圖所示*淌哟,首先進行基本配置迹卢,可以配置默認語言、鍵盤徒仓、時區(qū)還有根密碼腐碱,根密碼會在輸入成功后進行加密,高級配置中的目標(biāo)體系有三個選項掉弛,一般都會勾選第一個症见,也可以根據(jù)實際情況來選擇。


2殃饿、安裝方法執(zhí)行新安裝谋作,這里選擇的是HTTP方式,服務(wù)器時aliyun鏡像乎芳,選擇這一項要確保電腦能夠連接網(wǎng)絡(luò)遵蚜。


3帖池、選擇安裝類型,是否使用grub口令以及安裝選項和內(nèi)核參數(shù)


4吭净、選擇是否清除主引導(dǎo)記錄睡汹、是否刪除現(xiàn)存分區(qū)、是否初始化磁盤標(biāo)簽以及設(shè)置磁盤分區(qū)


5寂殉、配置網(wǎng)絡(luò)


6囚巴、驗證配置,默認勾選使用屏蔽口令


7友扰、是否啟用防火墻文兢,最好設(shè)置為禁用。


8焕檬、是否安裝圖形環(huán)境


9姆坚、選擇需要的軟件安裝包


10、安裝前執(zhí)行的腳本实愚,注意運行環(huán)境是微型linux系統(tǒng)環(huán)境


11兼呵、安裝后執(zhí)行的腳本,這里可以寫一些用戶登錄信息和配置yum倉庫腊敲。


12击喂、完成配置后記得進行保存,保存于root下

13碰辅、用ksvalidator命令檢查kickstart文件是否有語法錯誤:

    [root@jacklin ~]# ksvalidator ks.cfg

  如無報錯信息懂昂,至此kickstart文件制作完成。

制作光盤引導(dǎo)鏡像:

將bootloader没宾、Kernel凌彬、initrd及kickstart文件制作成光盤鏡像,以實現(xiàn)本地光盤鏡像引導(dǎo)安裝CentOS系統(tǒng)循衰,其中anaconda應(yīng)用程序位于initrd提供的rootfs中铲敛,

而后續(xù)安裝用到的程序包來自阿里云鏡像站點(mirrors.aliyun.com),剛才在制作kickstart文件時已經(jīng)手動指定会钝。

1)通過df -h確認光盤是否已經(jīng)掛載伐蒋,下圖顯示的 /dev/sr0即是光盤的映射文件


2)創(chuàng)建目錄/myboot,并復(fù)制光盤的isolinux目錄迁酸、剛才制作的kickstart文件ks.cfg 到/myboot目錄下:


3)從光盤復(fù)制過來的文件都只有只讀權(quán)限先鱼,需要添加寫權(quán)限


4)修改/myboot/isolinux/isolinux.cfg配置文件,向默認啟動的label所定義的內(nèi)核傳遞參數(shù)奸鬓,執(zhí)行kickstart文件的存放位置:

?[root@jacklin myboot]# vim isolinux/isolinux.cfg


光標(biāo)所示處可以向內(nèi)核傳遞參數(shù)焙畔,指明ks文件所處的位置。注意:無論kickstart文件是存放在待制作的光盤鏡像中的哪個路徑下全蝶,都可以在此處通過向內(nèi)核追加參數(shù)的方式指明kickstart文件位置闹蒜。

5)設(shè)置系統(tǒng)引導(dǎo)時等待timeout的時間,可以設(shè)置更小以節(jié)約等待時間


6)制作光盤鏡像:

[root@jacklin myboot]# mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6 x86_64 boot" -c isolinux/boot.cat -b isolinux/isolinux.bin -o /myboot/boot.iso ./


出現(xiàn)boot.iso文件說明創(chuàng)建鏡像成功

7)通過xshell自帶的ftp功能將boot.iso傳輸?shù)絎indows桌面

8)新建虛擬機測試光盤是否可用:


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末抑淫,一起剝皮案震驚了整個濱河市绷落,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌始苇,老刑警劉巖砌烁,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異催式,居然都是意外死亡函喉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門荣月,熙熙樓的掌柜王于貴愁眉苦臉地迎上來管呵,“玉大人,你說我怎么就攤上這事哺窄【柘拢” “怎么了?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵萌业,是天一觀的道長坷襟。 經(jīng)常有香客問我,道長生年,這世上最難降的妖魔是什么婴程? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮抱婉,結(jié)果婚禮上档叔,老公的妹妹穿的比我還像新娘。我一直安慰自己蒸绩,他們只是感情好蹲蒲,可當(dāng)我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著侵贵,像睡著了一般届搁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上窍育,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天卡睦,我揣著相機與錄音,去河邊找鬼漱抓。 笑死表锻,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的乞娄。 我是一名探鬼主播瞬逊,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼显歧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了确镊?” 一聲冷哼從身側(cè)響起士骤,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蕾域,沒想到半個月后拷肌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡旨巷,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年巨缘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片采呐。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡若锁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出斧吐,到底是詐尸還是另有隱情拴清,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布会通,位于F島的核電站口予,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏涕侈。R本人自食惡果不足惜沪停,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望裳涛。 院中可真熱鬧木张,春花似錦、人聲如沸端三。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽郊闯。三九已至妻献,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間团赁,已是汗流浹背育拨。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留欢摄,地道東北人熬丧。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像怀挠,于是被迫代替她去往敵國和親析蝴。 傳聞我的和親對象是個殘疾皇子害捕,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 系統(tǒng)啟動是一項非常復(fù)雜的程序腾啥,因為內(nèi)核得先檢測硬件并加載適當(dāng)?shù)尿?qū)動程序后,接下來則必須要調(diào)用程序來準(zhǔn)備好系統(tǒng)運行的...
    Zhang21閱讀 11,636評論 3 10
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,855評論 6 342
  • Linux啟動流程簡述: 前言: 本文主要針對CenOS6系統(tǒng)的啟動流程作簡介。 Linux的系統(tǒng)...
    沉默的xz閱讀 1,896評論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理组贺,服務(wù)發(fā)現(xiàn)凸舵,斷路器,智...
    卡卡羅2017閱讀 134,702評論 18 139
  • 昨天玉民與我的對話中還有一個關(guān)鍵詞‘標(biāo)準(zhǔn)’失尖,不管孩子做什么告訴他標(biāo)準(zhǔn)是什么就可以了啊奄。是,玉民的這個標(biāo)準(zhǔn)把我...
    徐麗紅閱讀 126評論 0 1