必須知道的操作系統(tǒng)原理
必須知道的操作系統(tǒng)原理
操作系統(tǒng)(英語(yǔ):operating system,縮寫(xiě)作 OS)是管理計(jì)算機(jī)硬件與軟件資源的計(jì)算機(jī)程序,同時(shí)也是計(jì)算機(jī)系統(tǒng)的內(nèi)核與基石。操作系統(tǒng)需要處理如管理與配置內(nèi)存、決定系統(tǒng)資源供需的優(yōu)先次序、控制輸入設(shè)備與輸出設(shè)備、操作網(wǎng)絡(luò)與管理文件系統(tǒng)等基本事務(wù)。操作系統(tǒng)也提供一個(gè)讓用戶與系統(tǒng)交互的操作界面。操作系統(tǒng)的類型非常多樣,不同機(jī)器安裝的操作系統(tǒng)可從簡(jiǎn)單到復(fù)雜,可從移動(dòng)電話的嵌入式系統(tǒng)到超級(jí)計(jì)算機(jī)的大型操作系統(tǒng)。許多操作系統(tǒng)制造者對(duì)它涵蓋范疇的定義也不盡一致,例如有些操作系統(tǒng)集成了圖形用戶界面,而有些僅使用命令行界面,而將圖形用戶界面視為一種非必要的應(yīng)用程序。下面是小編收集整理的必須知道的操作系統(tǒng)原理范文,歡迎借鑒參考。
必須知道的操作系統(tǒng)原理(一)
進(jìn)程概念是現(xiàn)在操作系統(tǒng)的基本概念,已經(jīng)成為計(jì)算機(jī)科學(xué)中的一大成就。
什么是進(jìn)程?
進(jìn)程的出現(xiàn),是為了是操作系統(tǒng)可以以一種有序的方式管理應(yīng)用的執(zhí)行,以達(dá)到以下目的:
資源對(duì)多個(gè)應(yīng)用程序是可用的;
物理處理器在多個(gè)應(yīng)用程序之間切換以保證所有程序都在執(zhí)行中;
處理器和I/O設(shè)備能得到充分利用;
所有現(xiàn)在操作系統(tǒng)采用的方法都是依據(jù)一個(gè)或者多個(gè)進(jìn)程存在的應(yīng)用程序執(zhí)行的一種模型。 到底什么是進(jìn)程呢?
進(jìn)程是一組元素組成的實(shí)體,它可以是一個(gè)正在執(zhí)行中的程序,也可以是一個(gè)能分配給處理器并由處理器執(zhí)行的實(shí)體。
進(jìn)程的兩個(gè)基本元素是:程序代碼(program code)和代碼相關(guān)聯(lián)的數(shù)據(jù)集(set of data)。
在進(jìn)程執(zhí)行時(shí),任意給定一個(gè)時(shí)間,進(jìn)程都可以唯一地表征為以下元素:
標(biāo)識(shí)符:進(jìn)程的唯一標(biāo)識(shí)符,用來(lái)區(qū)別其他進(jìn)程
狀態(tài):進(jìn)程在不同的生命周期有著不同的狀態(tài)
優(yōu)先級(jí):相對(duì)于其他進(jìn)程的優(yōu)先級(jí)
程序計(jì)數(shù)器:程序中即將被執(zhí)行的下一條指令的地址
內(nèi)存指針:包含程序代碼和進(jìn)程相關(guān)數(shù)據(jù)的指針,還有和其他進(jìn)程共享內(nèi)存塊的指針
I/O狀態(tài)信息:包括顯示的I/O請(qǐng)求、分配給進(jìn)程的I/O設(shè)備和被進(jìn)程使用的文件列表等
記賬信息:可能包括處理器時(shí)間總和、使用的時(shí)鐘數(shù)總和、時(shí)間限制、記賬號(hào)等
上述的列表信息被存放在一個(gè)稱為進(jìn)程控制塊的數(shù)據(jù)結(jié)構(gòu)中,該控制塊由操作系統(tǒng)創(chuàng)建 和管理。
進(jìn)程狀態(tài)
在任何時(shí)刻,進(jìn)程可以處于以下兩種狀態(tài)之一:運(yùn)行態(tài)和未運(yùn)行態(tài),這是最簡(jiǎn)單的兩狀態(tài)模型。在這個(gè)模型中,會(huì)有一個(gè)調(diào)度器(dispatcher),使處理器從一個(gè)進(jìn)程切換到另外一個(gè)進(jìn)程。
由于存在著一些處于非運(yùn)行狀態(tài)但已經(jīng)就緒等待執(zhí)行的進(jìn)程,而同時(shí)存在另外一些處于堵塞狀態(tài)等待I/O操作結(jié)束的進(jìn)程。
因此,解決這一問(wèn)題比較自然的方法是使用五狀態(tài)模型: 運(yùn)行態(tài)、就緒態(tài)、堵塞/等待態(tài)、新建態(tài)和退出態(tài)。
>>(1)被掛起的進(jìn)程
上述的基本狀態(tài)提供了一種為進(jìn)程建立系統(tǒng)模型的方法,并指導(dǎo)系統(tǒng)的實(shí)現(xiàn)。但是,往這個(gè)模型中添加其他狀態(tài)也是合理的。
由于處理器的運(yùn)行速度遠(yuǎn)大于I/O,以至于內(nèi)存中所有的進(jìn)程都在等待I/O的情況也是很常見(jiàn)的。因此,即使是多道程序設(shè)計(jì),大多數(shù)處理器仍然可能處于空閑狀態(tài)。
一種解決方案是增大內(nèi)存,使得內(nèi)存中可以存在更多的進(jìn)程。然而這種方案顯然是治標(biāo)不治本的。
另外一種解決方案是交換(swapping)。當(dāng)內(nèi)存中沒(méi)有處于就緒狀態(tài)的進(jìn)程時(shí),操作系統(tǒng)就把被阻塞的進(jìn)程換出到磁盤(pán)中的掛起隊(duì)列(suspend queue)。操作系統(tǒng)在此之后取出掛起隊(duì)列中的另一個(gè)進(jìn)程,或者接受一個(gè)新進(jìn)程,將其加載到內(nèi)存中運(yùn)行。這時(shí),在進(jìn)程狀態(tài)模型中添加了另外一個(gè)狀態(tài):掛起態(tài)。
當(dāng)操作系統(tǒng)從掛起隊(duì)列中取出一個(gè)依然阻塞的進(jìn)程是毫無(wú)意義的,因?yàn)樗匀粵](méi)有準(zhǔn)備好執(zhí)行。所以為了區(qū)分被掛起的進(jìn)程哪些是可以取出的,需要設(shè)計(jì)另外一種掛起模型:為了區(qū)分,需要四個(gè)狀態(tài):
就緒態(tài):進(jìn)程在內(nèi)存中并可以執(zhí)行
阻塞態(tài):進(jìn)程在進(jìn)程中并等待一個(gè)事件
阻塞/掛起態(tài):進(jìn)程在外存中并等待一個(gè)事件
就緒/掛起態(tài):進(jìn)程在外存中,但是只要被載入內(nèi)存就可以執(zhí)行
總結(jié)一下掛起的進(jìn)程的概念:
1.進(jìn)程不能被立即執(zhí)行。
2.進(jìn)程可能是或不是正在等待一個(gè)事件。如果是,阻塞條件不依賴于掛起條件,阻塞事件的 的發(fā)生不會(huì)使進(jìn)程立即執(zhí)行。
4.為組織進(jìn)程的執(zhí)行,可以通過(guò)代理把這個(gè)進(jìn)程置于掛起狀態(tài),代理可以是進(jìn)程自己,也 可以是父進(jìn)程或者操作系統(tǒng)。
5. 除非代理顯示的命令操作系統(tǒng)進(jìn)行狀態(tài)轉(zhuǎn)換,否則進(jìn)程無(wú)法從這個(gè)狀態(tài)中轉(zhuǎn)移。
6. 除了因?yàn)樘峁└嗟膬?nèi)存空間,進(jìn)程還會(huì)因?yàn)槭裁丛虮粧炱鹉?
必須知道的操作系統(tǒng)原理(二)
1、進(jìn)程與線程的區(qū)別
(1)粒度性分析:線程的粒度小于進(jìn)程。
(2)調(diào)度性分析:進(jìn)程是資源擁有的基本單位,線程是獨(dú)立調(diào)度與獨(dú)立運(yùn)行的基本單位,出了寄存器,程序計(jì)數(shù)器等必要的資源外基本不擁有其他資源。
(3)系統(tǒng)開(kāi)銷分析:由于線程基本不擁有系統(tǒng)資源,所以在進(jìn)行切換時(shí),線程切換的開(kāi)銷遠(yuǎn)遠(yuǎn)小于進(jìn)程。
2、進(jìn)程的狀態(tài)及其轉(zhuǎn)換
3、進(jìn)程同步與互斥的區(qū)別
互斥:是指某一資源同時(shí)只允許一個(gè)訪問(wèn)者對(duì)其進(jìn)行訪問(wèn),具有唯一性和排它性。但互斥無(wú)法限制訪問(wèn)者對(duì)資源的訪問(wèn)順序,即訪問(wèn)是無(wú)序的。
同步:是指在互斥的基礎(chǔ)上(大多數(shù)情況),通過(guò)其它機(jī)制實(shí)現(xiàn)訪問(wèn)者對(duì)資源的有序訪問(wèn)。在大多數(shù)情況下,同步已經(jīng)實(shí)現(xiàn)了互斥,特別是所有寫(xiě)入資源的情況必定是互斥的。少數(shù)情況是指可以允許多個(gè)訪問(wèn)者同時(shí)訪問(wèn)資源。
簡(jiǎn)單地說(shuō):同步體現(xiàn)的是一種協(xié)作性,互斥體現(xiàn)的是一種排他性。
4、進(jìn)程間的通信方式有哪些?
(1) 管道( pipe ):管道是一種半雙工的通信方式,數(shù)據(jù)只能單向流動(dòng),而且只能在具有親緣關(guān)系的進(jìn)程間使用。進(jìn)程的親緣關(guān)系通常是指父子進(jìn)程關(guān)系。
(2)有名管道 (named pipe) : 有名管道也是半雙工的通信方式,但是它允許無(wú)親緣關(guān)系進(jìn)程間的通信。
(3)信號(hào)量( semophore ) : 信號(hào)量是一個(gè)計(jì)數(shù)器,可以用來(lái)控制多個(gè)進(jìn)程對(duì)共享資源的訪問(wèn)。它常作為一種鎖機(jī)制,防止某進(jìn)程正在訪問(wèn)共享資源時(shí),其他進(jìn)程也訪問(wèn)該資源。因此,主要作為進(jìn)程間以及同一進(jìn)程內(nèi)不同線程之間的同步手段。
(4) 消息隊(duì)列( message queue ) : 消息隊(duì)列是由消息的鏈表,存放在內(nèi)核中并由消息隊(duì)列標(biāo)識(shí)符標(biāo)識(shí)。消息隊(duì)列克服了信號(hào)傳遞信息少、管道只能承載無(wú)格式字節(jié)流以及緩沖區(qū)大小受限等缺點(diǎn)。
(5)信號(hào) ( sinal ) : 信號(hào)是一種比較復(fù)雜的通信方式,用于通知接收進(jìn)程某個(gè)事件已經(jīng)發(fā)生。
(6)共享內(nèi)存( shared memory ) :共享內(nèi)存就是映射一段能被其他進(jìn)程所訪問(wèn)的內(nèi)存,這段共享內(nèi)存由一個(gè)進(jìn)程創(chuàng)建,但多個(gè)進(jìn)程都可以訪問(wèn)。共享內(nèi)存是最快的 IPC 方式,它是針對(duì)其他進(jìn)程間通信方式運(yùn)行效率低而專門(mén)設(shè)計(jì)的。它往往與其他通信機(jī)制,如信號(hào)兩,配合使用,來(lái)實(shí)現(xiàn)進(jìn)程間的同步和通信。
(7)套接字( socket ) : 套解口也是一種進(jìn)程間通信機(jī)制,與其他通信機(jī)制不同的是,它可用于不同及其間的進(jìn)程通信。
5、作業(yè)(或進(jìn)程)的調(diào)度算法有哪些?
(1)先來(lái)先服務(wù)(FCFS,F(xiàn)irst-Come-First-Served): 此算法的原則是按照作業(yè)到達(dá)后備作業(yè)隊(duì)列(或進(jìn)程進(jìn)入就緒隊(duì)列)的先后次序來(lái)選擇作業(yè)(或進(jìn)程)。
(2)短作業(yè)優(yōu)先(SJF,Shortest Process Next):這種調(diào)度算法主要用于作業(yè)調(diào)度,它從作業(yè)后備隊(duì)列中挑選所需運(yùn)行時(shí)間(估計(jì)值)最短的作業(yè)進(jìn)入主存運(yùn)行。
(3)時(shí)間片輪轉(zhuǎn)調(diào)度算法(RR,Round-Robin):當(dāng)某個(gè)進(jìn)程執(zhí)行的時(shí)間片用完時(shí),調(diào)度程序便停止該進(jìn)程的執(zhí)行,并將它送就緒隊(duì)列的末尾,等待分配下一時(shí)間片再執(zhí)行。然后把處理機(jī)分配給就緒隊(duì)列中新的隊(duì)首進(jìn)程,同時(shí)也讓它執(zhí)行一個(gè)時(shí)間片。這樣就可以保證就緒隊(duì)列中的所有進(jìn)程,在一給定的時(shí)間內(nèi),均能獲得一時(shí)間片處理機(jī)執(zhí)行時(shí)間。
(4)高響應(yīng)比優(yōu)先(HRRN,Highest Response Ratio Next): 按照高響應(yīng)比((已等待時(shí)間+要求運(yùn)行時(shí)間)/ 要求運(yùn)行時(shí)間)優(yōu)先的原則,在每次選擇作業(yè)投入運(yùn)行時(shí),先計(jì)算此時(shí)后備作業(yè)隊(duì)列中每個(gè)作業(yè)的響應(yīng)比RP然后選擇其值最大的作業(yè)投入運(yùn)行。
(5) 優(yōu)先權(quán)(Priority)調(diào)度算法: 按照進(jìn)程的優(yōu)先權(quán)大小來(lái)調(diào)度,使高優(yōu)先權(quán)進(jìn)程得到優(yōu)先處理的調(diào)度策略稱為優(yōu)先權(quán)調(diào)度算法。注意:優(yōu)先數(shù)越多,優(yōu)先權(quán)越小。
(6)多級(jí)隊(duì)列調(diào)度算法:多隊(duì)列調(diào)度是根據(jù)作業(yè)的性質(zhì)和類型的不同,將就緒隊(duì)列再分為若干個(gè)子隊(duì)列,所有的作業(yè)(或進(jìn)程)按其性質(zhì)排入相應(yīng)的隊(duì)列中,而不同的就緒隊(duì)列采用不同的調(diào)度算法。
6、死鎖產(chǎn)生的原因,死鎖產(chǎn)生的必要條件是什么,如何預(yù)防死鎖,如何避免死鎖,死鎖定理?
死鎖產(chǎn)生的原因:(1)競(jìng)爭(zhēng)資源;(2)進(jìn)程推進(jìn)順序不當(dāng)。
死鎖產(chǎn)生的必要條件:
(1)互斥條件:一個(gè)資源一次只能被一個(gè)進(jìn)程所使用,即是排它性使用。
(2)不剝奪條件:一個(gè)資源僅能被占有它的進(jìn)程所釋放,而不能被別的進(jìn)程強(qiáng)占。
(3)請(qǐng)求與保持條件:進(jìn)程已經(jīng)保持了至少一個(gè)資源,但又提出了新的資源要求,而該資源又已被其它進(jìn)程占有,此時(shí)請(qǐng)求進(jìn)程阻塞,但又對(duì)已經(jīng)獲得的其它資源保持不放。
(4)環(huán)路等待條件:當(dāng)每類資源只有一個(gè)時(shí),在發(fā)生死鎖時(shí),必然存在一個(gè)進(jìn)程-資源的環(huán)形鏈。
預(yù)防死鎖:破壞四個(gè)必要條件之一。
死鎖的避免:銀行家算法,該方法允許進(jìn)程動(dòng)態(tài)地申請(qǐng)資源,系統(tǒng)在進(jìn)行資源分配之前,先計(jì)算資源分配的安全性。若此次分配不會(huì)導(dǎo)致系統(tǒng)從安全狀態(tài)向不安全狀態(tài)轉(zhuǎn)換,便可將資源分配給進(jìn)程;否則不分配資源,進(jìn)程必須阻塞等待。從而避免發(fā)生死鎖。
死鎖定理:S為死鎖狀態(tài)的充分條件是:尚且僅當(dāng)S狀態(tài)的資源分配圖是不可完全簡(jiǎn)化的,該充分條件稱為死鎖定理。
死鎖的解除:
(1)方法1:強(qiáng)制性地從系統(tǒng)中撤消一個(gè)或多個(gè)死鎖的進(jìn)程以斷開(kāi)循環(huán)等待鏈,并收回分配給終止進(jìn)程的全部資源供剩下的進(jìn)程使用。
(2)方法2:使用一個(gè)有效的掛起和解除機(jī)構(gòu)來(lái)掛起一些死鎖的進(jìn)程,其實(shí)質(zhì)是從被掛起的進(jìn)程那里搶占資源以解除死鎖。
7、分段式存儲(chǔ)管理、分頁(yè)式存儲(chǔ)管理,兩個(gè)的區(qū)別?
分段式存儲(chǔ)管理:分頁(yè)存儲(chǔ)管理是將一個(gè)進(jìn)程的地址(邏輯地址空間)空間劃分成若干個(gè)大小相等的區(qū)域,稱為頁(yè),相應(yīng)地,將內(nèi)存空間劃分成與頁(yè)相同大小(為了保證頁(yè)內(nèi)偏移一致)的若干個(gè)物理塊,稱為塊或頁(yè)框(頁(yè)架)。在為進(jìn)程分配內(nèi)存時(shí),將進(jìn)程中的若干頁(yè)分別裝入多個(gè)不相鄰接的塊中。
分頁(yè)式存儲(chǔ)管理:在分段存儲(chǔ)管理方式中,作業(yè)的地址空間被劃分為若干個(gè)段,每個(gè)段是一組完整的邏輯信息,如有主程序段、子程序段、數(shù)據(jù)段及堆棧段等,每個(gè)段都有自己的名字,都是從零開(kāi)始編址的一段連續(xù)的地址空間,各段長(zhǎng)度是不等的。
兩者的區(qū)別:
1、頁(yè)是信息的物理單位,分頁(yè)是為了實(shí)現(xiàn)非連續(xù)的分配,以便解決內(nèi)存的碎片問(wèn)題,或者說(shuō)分頁(yè)是為了由于系統(tǒng)管理的需要。
2、頁(yè)的大小固定是由系統(tǒng)確定的,將邏輯地址劃分為頁(yè)號(hào)和頁(yè)內(nèi)地址是由機(jī)器硬件實(shí)現(xiàn)的。而段的長(zhǎng)度是不固定的,決定與用戶的程序長(zhǎng)度,通常由編譯程序進(jìn)行編譯時(shí)根據(jù)信息的性質(zhì)來(lái)劃分。
3、分頁(yè)式存儲(chǔ)管理的作業(yè)地址空間是一維的,分段式的存儲(chǔ)管理的作業(yè)管理地址空間是二維的。
8、頁(yè)面置換算法有哪些?
(1)最佳置換算法(Optimal):即選擇那些永不使用的,或者是在最長(zhǎng)時(shí)間內(nèi)不再被訪問(wèn)的頁(yè)面置換出去。(它是一種理想化的算法,性能最好,但在實(shí)際上難于實(shí)現(xiàn))。
(2)先進(jìn)先出置換算法FIFO:該算法總是淘汰最先進(jìn)入內(nèi)存的頁(yè)面,即選擇在內(nèi)存中駐留時(shí)間最久的頁(yè)面予以淘汰。
(3)最近最久未使用置換算法LRU(Least Recently Used):該算法是選擇最近最久未使用的頁(yè)面予以淘汰,系統(tǒng)在每個(gè)頁(yè)面設(shè)置一個(gè)訪問(wèn)字段,用以記錄這個(gè)頁(yè)面自上次被訪問(wèn)以來(lái)所經(jīng)歷的時(shí)間T,當(dāng)要淘汰一個(gè)頁(yè)面時(shí),選擇T最大的頁(yè)面。
(4)Clock置換算法:也叫最近未用算法NRU(Not RecentlyUsed)。該算法為每個(gè)頁(yè)面設(shè)置一位訪問(wèn)位,將內(nèi)存中的所有頁(yè)面都通過(guò)鏈接指針鏈成一個(gè)循環(huán)隊(duì)列。當(dāng)某頁(yè)被訪問(wèn)時(shí),其訪問(wèn)位置“1”。在選擇一頁(yè)淘汰時(shí),就檢查其訪問(wèn)位,如果是“0”,就選擇該頁(yè)換出;若為“1”,則重新置為“0”,暫不換出該頁(yè),在循環(huán)隊(duì)列中檢查下一個(gè)頁(yè)面,直到訪問(wèn)位為“0”的頁(yè)面為止。由于該算法只有一位訪問(wèn)位,只能用它表示該頁(yè)是否已經(jīng)使用過(guò),而置換時(shí)是將未使用過(guò)的頁(yè)面換出去,所以把該算法稱為最近未用算法。
(5)最少使用置換算法LFU:該算法選擇最近時(shí)期使用最少的頁(yè)面作為淘汰頁(yè)。
必須知道的操作系統(tǒng)原理(三)
在工作中經(jīng)常會(huì)遇到這樣的情況:想要安裝Linux但是計(jì)算機(jī)不帶光驅(qū)或軟驅(qū),或者是筆記本配置的非標(biāo)準(zhǔn)的軟驅(qū)和光驅(qū),如1394接口,USB接口等,在Linux安裝時(shí)所引導(dǎo)的Linux內(nèi)核一般都不會(huì)帶這些接口的驅(qū)動(dòng),所以也無(wú)法通過(guò)本地安裝Linux,此外,在一些場(chǎng)合,如機(jī)房,IT實(shí)驗(yàn)室,工廠生產(chǎn)線,有大量的計(jì)算機(jī)需要同時(shí)安裝Linux,如果通過(guò)光驅(qū)的方式一個(gè)個(gè)安裝,不僅效率低,也不利于維護(hù)。這是時(shí)候你就需要PXE的強(qiáng)大功能了。本文將就PXE的基本原理和工作方式進(jìn)行簡(jiǎn)要介紹。具體的實(shí)踐過(guò)程需要比較豐富的網(wǎng)絡(luò)知識(shí)。
1.操作系統(tǒng)安裝的流程
通用流程:首先,bios啟動(dòng),選擇操作系統(tǒng)的啟動(dòng)(安裝)模式(此時(shí),內(nèi)存是空白的),然后根據(jù)相關(guān)的安裝模式,尋找操作系統(tǒng)的引導(dǎo)程序(不同的模式,對(duì)應(yīng)不同的引導(dǎo)程序當(dāng)然也對(duì)應(yīng)著不同的引導(dǎo)程序存在的位置),引導(dǎo)程序加載文件系統(tǒng)初始化(initrd)程序和內(nèi)核初始鏡像(vmlinuz),完成操作系統(tǒng)安裝前的初始化;接著,操作系統(tǒng)開(kāi)始安裝相關(guān)的系統(tǒng)和應(yīng)用程序。
硬盤(pán)安裝的流程:bios啟動(dòng)——MBR尋找grub——grub程序讀取menu.list等配置文件,找到內(nèi)核啟動(dòng)鏡像和相關(guān)初始化程序,安裝(或者啟動(dòng))。
PXE(Pre-boot Execution Environment)是由Intel設(shè)計(jì),可以使計(jì)算機(jī)通過(guò)網(wǎng)絡(luò)啟動(dòng)的協(xié)議。協(xié)議分為client和server兩端,PXE client在網(wǎng)卡的ROM中,當(dāng)計(jì)算機(jī)啟動(dòng)時(shí),BIOS把PXE client調(diào)入內(nèi)存執(zhí)行,并顯示出命令菜單,經(jīng)用戶選擇后,PXE client將放置在遠(yuǎn)端的操作系統(tǒng)通過(guò)網(wǎng)絡(luò)下載到本地運(yùn)行。
pxe網(wǎng)絡(luò)安裝的流程:bios啟動(dòng)——pxe client中的程序進(jìn)入內(nèi)存,顯示命令菜單——此程序開(kāi)始尋找網(wǎng)絡(luò)引導(dǎo)程序(bootstrap文件,這個(gè)文件的名字隨著發(fā)行版的不同而不同,在centos中,它是pxelinux.0)——引導(dǎo)程序讀取配置文件pxelinux.cfg,獲得系統(tǒng)初始化的相關(guān)文件信息——系統(tǒng)啟動(dòng),開(kāi)始進(jìn)行安裝。
2.pxe模式安裝操作系統(tǒng)的原理
2.1安裝流程
客戶機(jī)從自己的PXE網(wǎng)卡啟動(dòng),向本網(wǎng)絡(luò)中的DHCP服務(wù)器索取IP,并搜尋引導(dǎo)文件的位置
DHCP服務(wù)器返回分給客戶機(jī)IP以及bootstrap文件的放置位置(該文件一般是放在一臺(tái)TFTP服務(wù)器上)
客戶機(jī)向本網(wǎng)絡(luò)中的TFTP服務(wù)器索取bootstrap文件
客戶機(jī)取得bootstrap文件后之執(zhí)行該文件
根據(jù)bootstrap的執(zhí)行結(jié)果,通過(guò)TFTP服務(wù)器加載內(nèi)核和文件系統(tǒng)
進(jìn)入安裝畫(huà)面, 此時(shí)可以通過(guò)選擇FTP,HTTP,NFS方式之一進(jìn)行安裝
2.2流程小結(jié)
總結(jié)就是:
1)網(wǎng)卡的client 網(wǎng)卡rom 尋找dhcp服務(wù)器,由/etc/dhcp.conf得到ip和引導(dǎo)程序所在地點(diǎn)
2)有dhcp.conf(引導(dǎo)程序文件名)和tftp的配置(tftp跟路徑,里面有引導(dǎo)程序和系統(tǒng)初始化程序),得到引導(dǎo)程序pxelinux啟動(dòng)文件的絕對(duì)路徑,運(yùn)行引導(dǎo)程序,讀取啟動(dòng)配置文件pxelinux.cfg/default,得到操作系統(tǒng)初始化的兩個(gè)相關(guān)文件
3)選擇安裝方式
客戶端廣播dhcp請(qǐng)求——服務(wù)器相應(yīng)請(qǐng)求,建立鏈接——由dhcp和tftp配置得到ip還有引導(dǎo)程序所在地點(diǎn)——客戶端下載引導(dǎo)程序并開(kāi)始運(yùn)行——引導(dǎo)程序讀取
2.3.相關(guān)文件位置與內(nèi)容:
dhcp配置文件/etc/dhcpd/dhcp.conf——ip管理與引導(dǎo)程序名稱
tftp配置文件/etc/xinetd.d/tftp——tftp根目錄,和上面的引導(dǎo)程序名稱組成完整路徑
引導(dǎo)程序讀取的配置文件/tftpboot/pxelinux.cfg/default——啟動(dòng)內(nèi)核其他
3.實(shí)戰(zhàn)過(guò)程
實(shí)戰(zhàn)環(huán)境;centos 6.3,kernel 2.6.32
3.1安裝前的準(zhǔn)備:
軟硬件配置:網(wǎng)卡要支持pxe啟動(dòng),操作系統(tǒng)也要支持pxe啟動(dòng),另外有ftp服務(wù)器用于存儲(chǔ)操作系統(tǒng)的安裝文件,dhcp服務(wù)器用于分配ip
3.2服務(wù)器配置
1)配置dhcp服務(wù)器
由于PXE客戶機(jī)通常是尚未裝系統(tǒng)的裸機(jī),因此為了如服務(wù)器取得聯(lián)系并正確下載相關(guān)引導(dǎo)文件,需要預(yù)先配置好DHCP服務(wù)來(lái)自動(dòng)分配地址并告知引導(dǎo)文件的位置。
注明:filename這一個(gè)選項(xiàng)很重要,它的作用是指明bootstrap所在的位置,一般是指向一個(gè)TFTP服務(wù)器的某個(gè)目錄下。這里是相對(duì)路徑,其中路徑的上半部分在的一個(gè)配置文件之中。
2)配置tftp服務(wù)器
TFTP服務(wù)的配置文件是/etc/xinetd.d/tftp,RedHat9 默認(rèn)安裝已經(jīng)生成了該文件
注明:這個(gè)文件基本上不用改動(dòng),但是需要注意的的是server_args= -s /tftpboot這一行,它的含義是將/tftpboot作為root目錄,這樣在dhcpd.conf中的filename一行就應(yīng)該寫(xiě)bootstrap的相對(duì)路徑: filename “pxelinux.0”,這是出于安全方面考慮的.如果你去掉了-s這個(gè)參數(shù),那幺就要在filename一行指出bootstrap的絕對(duì)路徑: filename “/tftpboot/pxelinux.0”.注意,這里-s的內(nèi)容會(huì)因?yàn)榘l(fā)行版的內(nèi)容不同而不同,一般不用改動(dòng)。
3.3添加引導(dǎo)程序
Bootstrap對(duì)于支持網(wǎng)絡(luò)安裝的操作系統(tǒng),Bootstrap基本上都可以從安裝源文件上找到,對(duì)于本例來(lái)說(shuō),centos的bootstrap就是cdrom:/isolinux/pxelinux.0我們把它們都拷貝到tftpboot下.
3.4編輯引導(dǎo)配置文件
把centos第一張安裝光盤(pán)上images/pxeboot目錄下的initr.img和vmlinux也考到tftpboot/目錄下。在/tftpboot創(chuàng)建pxelinux.cfg目錄,用于放isolinux的配制文件。光盤(pán)isolinux/下有一個(gè)isolinux.cfg文件,把它拷貝到/tftpboot/pxelinux.cfg/目錄下并改名為default.下面為修改后的default文件:
default linux
prompt 1
timeout 30
label linux
kernel vmlinuz
append initrd=initrd.img
這個(gè)Default 文件很容易看懂,就是告訴啟動(dòng)后使用那個(gè)內(nèi)核引導(dǎo)
3.5開(kāi)始安裝
1)確保:服務(wù)器端剛才配置的幾個(gè)服務(wù)都處于開(kāi)啟狀態(tài);關(guān)閉防火墻;bios中選擇從網(wǎng)絡(luò)啟動(dòng)
2)剩下的步驟和從硬盤(pán)安裝相同