基于到發(fā)管理驅(qū)動的鐵路客運站客服設(shè)備在線監(jiān)測與維護系統(tǒng)的研究_第1頁
基于到發(fā)管理驅(qū)動的鐵路客運站客服設(shè)備在線監(jiān)測與維護系統(tǒng)的研究_第2頁
基于到發(fā)管理驅(qū)動的鐵路客運站客服設(shè)備在線監(jiān)測與維護系統(tǒng)的研究_第3頁
基于到發(fā)管理驅(qū)動的鐵路客運站客服設(shè)備在線監(jiān)測與維護系統(tǒng)的研究_第4頁
基于到發(fā)管理驅(qū)動的鐵路客運站客服設(shè)備在線監(jiān)測與維護系統(tǒng)的研究_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、鐵路客運站客服設(shè)備在線監(jiān)測與維護系統(tǒng)的研究詹璇,呂曉軍,程清波,劉曉燕,李明(中國鐵道科學(xué)研究院電子計算技術(shù)研究所,北京 100081)摘要:本文在分析了目前鐵路客運站設(shè)備管理的現(xiàn)狀和存在的問題后,根據(jù)設(shè)備在線監(jiān)測與評估系統(tǒng)的需求分析,闡述了系統(tǒng)的主要業(yè)務(wù)流程、功能結(jié)構(gòu)、系統(tǒng)設(shè)計、實現(xiàn)以及關(guān)鍵技術(shù),最后給出了系統(tǒng)優(yōu)點。關(guān)鍵詞: 客服設(shè)備;在線監(jiān)測;維護管理;到發(fā)管理;消息中間件Research and Realization of Online Monitoring and Maintenance System of Passenger Service Equipment in Railway

2、 Station Based on Train Dispatch PlanZhan Xuan,Lv Xiaojun,Cheng Qingbo,Liu Xiaoyan,Li Ming (Institute of Computing Technologies,China Academy of Railway Sciences,Beijing 100081,China)Abstract:According to the requirement analysis of Equipment online Monitoring and Maintenance System, and analysis of

3、 existing equipment management problems in current railway station, this paper expounds the mainbusiness process,the system function structure,system design,realization andkey technology,finally the systems advantages are given.Key Words:passenger service equipment; online monitoring;maintenance and

4、 management;dispatch management;middleware0 引言隨著我國高速鐵路的快速發(fā)展,鐵路信息化取得長足的進步。在大規(guī)??瓦\專線建設(shè)和既有線改造升級過程中,上線運行的系統(tǒng)越來越多,隨著車站自動化程度的不斷提升,對設(shè)備的依賴性也越來越高。而設(shè)備作為支撐信息平臺和鐵路信息化管理的核心單元,其可靠性、可維修性、安全性直接決定著車站運營組織、安全化生產(chǎn)的好壞。目前,在鐵路車站中,購置了大量價格昂貴的服務(wù)設(shè)施/設(shè)備,這些設(shè)施/設(shè)備來自不同的生產(chǎn)廠家,設(shè)備的優(yōu)劣好壞只有通過工作人員巡檢或車站人員通告才能得知,還不能做到實時監(jiān)測;在遇到春運、暑運等特殊情景下,一些關(guān)鍵的客服

5、設(shè)備如引導(dǎo)屏、自動售檢票機、查詢機等還不能做到事前維修;且設(shè)備巡檢的勞動強度較大,容易忽略或遺漏問題;目前絕大多數(shù)鐵路客運站尚未建立一套完善的設(shè)備維修體制,維修由外包公司或生產(chǎn)廠家來承擔,設(shè)備維修完畢后有時不能及時告知車站,造成車站工作人員對設(shè)備的好壞優(yōu)劣心中無數(shù),從而設(shè)備的可靠性及安全性不可控制。因此,為了改善這種局面,提高工作人員效率,使工作人員對設(shè)備真正心中有數(shù),打造一個智能化、人性化、高效安全、適應(yīng)現(xiàn)代的鐵路生產(chǎn)管理體系,建立設(shè)備在線監(jiān)測與維護管理系統(tǒng),實時監(jiān)測設(shè)備狀態(tài),及時發(fā)現(xiàn)故障并上傳報警,對設(shè)備的故障進行診斷,對設(shè)備的質(zhì)量進行評估,具有重要的應(yīng)用價值和社會意義。1 系統(tǒng)總體需求該

6、系統(tǒng)的使用對象是與鐵路客運站設(shè)備管理和使用相關(guān)的部門,主要有:綜合控制室、技術(shù)設(shè)備科、設(shè)備車間等。(1)實現(xiàn)全站設(shè)備的基礎(chǔ)信息維護對全站設(shè)備的基礎(chǔ)數(shù)據(jù)進行錄入、修改,同時提供設(shè)備按地點和按分類兩種方式查詢,對設(shè)備有借調(diào)用記錄的生成借調(diào)用記錄單,并提供打印功能。(2)實現(xiàn)客服設(shè)備的運行狀態(tài)監(jiān)測通過制定統(tǒng)一的設(shè)備接口規(guī)范,自動獲取各客服設(shè)備(廣播、引導(dǎo)、視頻監(jiān)控、自動檢票機、查詢機等)的在線運行狀態(tài)情況。(3)實現(xiàn)客服設(shè)備故障報警對監(jiān)測出有故障的設(shè)備用不同的顏色進行提示,如故障:紅色,異常:灰色,正常:綠色,并生成故障記錄單。2 系統(tǒng)業(yè)務(wù)流程圖2.1 主要業(yè)務(wù)流程(1)設(shè)備管理部門設(shè)備車間/電算站

7、維護設(shè)備基礎(chǔ)信息。(2)綜控室人員查看設(shè)備的在線運行狀態(tài)。(3)發(fā)現(xiàn)故障方式分為四種:設(shè)備管理部門巡檢發(fā)現(xiàn)的故障、綜控室人員實時監(jiān)測發(fā)現(xiàn)的設(shè)備故障、設(shè)備使用部門/干部檢查現(xiàn)場發(fā)現(xiàn)的故障,發(fā)現(xiàn)故障后統(tǒng)一上報設(shè)備管理部門設(shè)備車間/電算站統(tǒng)一確認。(4)在發(fā)現(xiàn)故障后,由車間和使用人員在系統(tǒng)中錄入,生成故障記錄單。(5)設(shè)備在線監(jiān)測出的故障,自動生成故障記錄單。(6)設(shè)備車間/電算站審核故障記錄單,派工維修。(7)車站管理部門按月度、季度、年度統(tǒng)計設(shè)備故障率,形成圖表和報表。3 系統(tǒng)功能設(shè)計3.1 系統(tǒng)功能結(jié)構(gòu)基于到發(fā)驅(qū)動的設(shè)備在線監(jiān)測與維護系統(tǒng)包括設(shè)備基礎(chǔ)信息錄入、設(shè)備在線監(jiān)測、設(shè)備故障單記錄、設(shè)備

8、故障統(tǒng)計功能。如下圖所示:圖3.1 系統(tǒng)功能結(jié)構(gòu)圖3.1.1 設(shè)備基礎(chǔ)信息維護設(shè)備基礎(chǔ)信息維護包括設(shè)備隸屬關(guān)系配置、基礎(chǔ)信息錄入、設(shè)備信息查詢、設(shè)備借調(diào)用記錄。設(shè)備隸屬關(guān)系配置隸屬關(guān)系配置包括車站區(qū)域基礎(chǔ)信息配置和部門所屬關(guān)系配置,配置車站區(qū)域基礎(chǔ)信息和位置關(guān)系,包括售票廳、進站口、候車室、出站口、天橋、地道、站臺、風(fēng)雨棚、消防通道、辦公區(qū)等,以形成車站區(qū)域關(guān)系樹。配置車站部門所屬關(guān)系,如客運車間、設(shè)備車間、客運科等,以形成部門關(guān)系樹。設(shè)備基礎(chǔ)信息錄入錄入設(shè)備基礎(chǔ)信息,包括設(shè)備名稱、設(shè)備編號、設(shè)備所在區(qū)域、設(shè)備所在部門、設(shè)備類別(安檢設(shè)備類、售、檢票類、導(dǎo)向、廣播、查詢、監(jiān)控、電梯、空調(diào)、電腦

9、、通訊、桌椅家具、廁衛(wèi)等)、設(shè)備狀態(tài)(庫存、在用、維修、借出、停用、報廢等)、設(shè)備購入途徑(客專公司、鐵路局、車務(wù)段、車站等)、廠家聯(lián)系電話、計量單位(個、張、排、支、臺、套等)。設(shè)備信息查詢提供按地點和類別查詢設(shè)備信息。設(shè)備借調(diào)用記錄生成設(shè)備的借調(diào)用記錄單,包括借調(diào)單號、借出日期、借出部門、借出人、接收部門、接收人、是否歸還、歸還日期、驗收人、備注等。3.1.2 設(shè)備在線監(jiān)測設(shè)備在線監(jiān)測是基于2小時內(nèi)的列車到發(fā)計劃來實時監(jiān)測關(guān)鍵設(shè)備的運行狀態(tài),并以列表和圖表方式展示運行狀態(tài)結(jié)果。以列表方式可以清楚直觀的看到每趟車在運行圖中不同的客服設(shè)備的工作狀態(tài)和顯示內(nèi)容,以圖表方式可以看到車站不同區(qū)域內(nèi)的

10、客服設(shè)備的工作狀態(tài)。根據(jù)列車的實際到點和發(fā)點判斷列車到發(fā)狀態(tài),分為列車未到站、列車到站、列車離站三種到發(fā)狀態(tài)。列車未到站、旅客候車:監(jiān)測進站大屏、檢票屏、候車廳廣播、LCD屏、閘機。列車到站:監(jiān)測站臺屏上屏、站臺廣播。列車離站:站臺屏下屏、出站口廣播、出站屏、出站閘機。3.1.3 設(shè)備故障單記錄根據(jù)設(shè)備在線監(jiān)測出的結(jié)果,有故障的設(shè)備會用紅色顯示,并自動生成故障記錄單,設(shè)備車間工作人員在點檢巡檢過程中發(fā)現(xiàn)的故障,要手動錄入生成設(shè)備故障單。設(shè)備故障單內(nèi)容包括:故障設(shè)備資料、故障情況說明等。并可以按故障發(fā)生時間和故障分類查詢故障。故障設(shè)備資料:設(shè)備編號、設(shè)備名稱、設(shè)備所在地點、制造廠家等。故障情況說

11、明:故障分類(I類、II類、III類、IV類)、故障位置、發(fā)生故障經(jīng)過及現(xiàn)象、故障發(fā)生時間、操作人、填寫時間、填寫人等。故障分類:I級故障(整個系統(tǒng)處于完全癱瘓狀態(tài),不能運行);II級故障(系統(tǒng)性能嚴重下降:包括網(wǎng)絡(luò)性能明顯下降、設(shè)備出現(xiàn)故障或軟件系統(tǒng)出現(xiàn)非癱瘓性錯誤等,客戶業(yè)務(wù)運作受到嚴重影響);III級故障(系統(tǒng)部分設(shè)備或者軟件出現(xiàn)故障,但整個系統(tǒng)仍可正常運行,客戶業(yè)務(wù)運作受到一定影響);IV級故障(需要硬件、軟件產(chǎn)品功能、安裝或配置方面的信息和支援,對客戶的業(yè)務(wù)運作幾乎沒有影響或者根本沒有影響)。3.1.4 設(shè)備故障統(tǒng)計按設(shè)備分類統(tǒng)計出月度、季度、年度內(nèi)設(shè)備故障次數(shù)和設(shè)備故障時間(按小時

12、計算),并以圖表和列表形式展示;對設(shè)備進行質(zhì)量評估,計算出設(shè)備的可用性,生成統(tǒng)計報表。建立設(shè)備的性能指標,即可用性指標,對設(shè)備進行質(zhì)量評估。設(shè)備的可用性分為優(yōu)、中、劣三等,優(yōu):設(shè)備停機次數(shù)一年不超過1.825天*24h,即可用性在99.5%;中:設(shè)備停機次數(shù)一年不超過3.825天*24h,即可性在95%;劣:即停機或死機次數(shù)一年在30天*24h以上。4關(guān)鍵技術(shù) 消息中間件技術(shù)4.1.1 消息中間件的結(jié)構(gòu)消息中間件是基于消息傳送的中間件,主要功能是在應(yīng)用程序之間傳送消息,這些消息可以在不同的網(wǎng)絡(luò)協(xié)議、不同的計算機系統(tǒng)和不同的應(yīng)用軟件之間傳遞。到發(fā)管理子系統(tǒng)與客服設(shè)備在線監(jiān)測與維護系統(tǒng)之間的協(xié)調(diào)與

13、通信是以中間件為接口進行消息傳送的,中間件主要管理兩個子系統(tǒng)之間的數(shù)據(jù)計算資源和網(wǎng)絡(luò)通訊。兩個子系統(tǒng)與消息中間件的通信使用Socket連接,由消息中間件建立監(jiān)聽Socket,隨時查看客戶端是否有請求,如果客戶端有請求的話立刻予以響應(yīng),建立對話連接,將接收到的數(shù)據(jù)處理后執(zhí)行數(shù)據(jù)庫操作,然后返回給客戶端。其結(jié)構(gòu)如下圖所示:圖4.1 消息中間件的組織結(jié)構(gòu)消息中間件由兩大部分組成:設(shè)備接口、客戶端通信部分。設(shè)備接口部分集成了各種設(shè)備的接口,負責(zé)與各種設(shè)備通信,每隔2分鐘獲取設(shè)備的狀態(tài),再寫入數(shù)據(jù)庫;客戶端通信部分負責(zé)與到發(fā)管理和設(shè)備管理之間的通信,接收這兩個系統(tǒng)之間的查詢、訪問,然后與數(shù)據(jù)庫交互,執(zhí)行

14、查詢操作,再返回給客戶端,同時管理消息隊列和消息優(yōu)先級的控制等。首先,到發(fā)管理子系統(tǒng)根據(jù)列車的實際到點與發(fā)點判斷列車運行狀態(tài),未到站、到站和離站,根據(jù)三種狀態(tài)下監(jiān)測的關(guān)鍵的設(shè)備類別,如列車未到站、旅客候車情況下監(jiān)測進站大屏、檢票屏、候車廳廣播、LCD屏、閘機;列車到站要監(jiān)測站臺屏上屏、站臺廣播;列車離站時監(jiān)測站臺屏下屏、出站口廣播、出站屏、出站閘機;然后通過Socket通信向消息中間件發(fā)送設(shè)備串碼,設(shè)備串碼中標識了設(shè)備類別碼和設(shè)備位置編號,消息中間件在接收到信息后進行解析,向數(shù)據(jù)庫發(fā)送數(shù)據(jù)查詢請求,將查詢結(jié)果通過Socket通信方式發(fā)送至設(shè)備在線監(jiān)測與維護系統(tǒng)并顯示。其流程如下圖所示:圖4.2

15、 消息中間件流程圖4.1.2 消息模型到發(fā)管理子系統(tǒng)通過Socket通信方式向消息中間件發(fā)送消息,消息由消息頭和消息體組成。消息頭包括消息的識別信息,如消息類型、主題和優(yōu)先級等,消息體則是實際的傳輸數(shù)據(jù),如車次、列車狀態(tài)、設(shè)備類別碼、設(shè)備位置碼、設(shè)備名稱、消息優(yōu)先級等。消息采用XML格式。如下所示的消息體表示車次為G87,列車狀態(tài)為未到站,監(jiān)測的設(shè)備為進站大屏(用1表示)和LCD屏(用3表示),位置代號分別為112和113,優(yōu)先級均為1。 4.1.3 消息隊列設(shè)計消息隊列是面向消息中間件的數(shù)據(jù)結(jié)構(gòu),消息隊列是一片存儲緩沖區(qū),隊列中可以存放一條或多條消息。在該系統(tǒng)中,消息隊列分為請求隊列和應(yīng)答隊

16、列。到發(fā)管理發(fā)送的消息都存放在請求隊列中,消息中間件發(fā)送給系統(tǒng)的應(yīng)答消息都放在應(yīng)答隊列中。每個隊列都是一個雙向鏈表,一個隊列中可以有多條消息,消息從隊列頭部出隊,從尾部入隊。消息入隊和出隊可以并行操作,互不干擾。一次只能發(fā)送或取出一條消息。每個隊列都采用FIFO原理。如下圖所示:圖4.3 消息隊列隊列的具體設(shè)計是queue類,是一個線程安全類。當向隊列中讀寫消息時,必須保持線程間同步。如果在隊列為空時從隊列中取消息,隊列會自動阻塞,直到有新的消息入隊為止。當隊列填滿時,能夠自動擴張。所以創(chuàng)建時可以指定隊列的容量。如果隊列滿,則拋出異常,刪除即將到來的消息。如果不指定,隊列會自動擴張,永遠不會出

17、現(xiàn)隊列滿的情況。當隊列關(guān)閉時,任何讀寫行為都會產(chǎn)生異常。根據(jù)系統(tǒng)生成的2小時之內(nèi)的到發(fā)計劃,系統(tǒng)會生成多個隊列。每個隊列里放5條消息。每個隊列對應(yīng)一個優(yōu)先級,該優(yōu)先級與隊列中的所有消息的優(yōu)先級相同,隊列的優(yōu)先級按到發(fā)計劃的到點時間的先后從大到小排序。每個消息被接收以后,根據(jù)消息自身的優(yōu)先級將其放入對應(yīng)的隊列中。每個隊列分配一個權(quán)值,表明每次為該隊列服務(wù)時該隊列所獲得的服務(wù)資源數(shù)。所有的隊列都要放入服務(wù)池中進行處理,消息排隊過程有如下特點:服務(wù)池中有N個隊列,各個隊列相互獨立的。消息有m個優(yōu)先級,消息隊列有m個,每個隊列對應(yīng)的消息優(yōu)先級為k。當m=1時,只有一個隊列,權(quán)值w=1。用于存放優(yōu)先級為

18、k的消息,其對應(yīng)的權(quán)值為。T:一個隊列服務(wù)的時間。:一個循環(huán)中為服務(wù)的時間。則=*T。排隊工作原理如下:首先檢測,如果0,則轉(zhuǎn)入2);如果=0,則轉(zhuǎn)入3)。為隊列服務(wù),持續(xù)時間為t,直到下列之一發(fā)生:=0且t,轉(zhuǎn)入3)。t,服務(wù)完當前隊列,轉(zhuǎn)入3)。k=k+1。km,轉(zhuǎn)入1)km,k=1轉(zhuǎn)入1)如下圖所示:圖4.4 消息排隊原理5 系統(tǒng)優(yōu)點設(shè)備在線監(jiān)測與維護管理系統(tǒng)采用Oracle作為數(shù)據(jù)庫環(huán)境,C#為開發(fā)語言,系統(tǒng)采用C/S結(jié)構(gòu)。所開發(fā)的系統(tǒng)具有以下優(yōu)點:(1)實現(xiàn)了從故障錄入-故障派單-故障處理-故障驗收的一體化閉環(huán)管理,優(yōu)化了業(yè)務(wù)流程,實時跟蹤故障處理狀態(tài)。(2)采用了消息中間件技術(shù)實現(xiàn)

19、了在線監(jiān)測,大大減少了客戶端和服務(wù)器端的計算壓力,跨平臺的移植性強。(3)采用了流程可配置的數(shù)據(jù)字典設(shè)計,避免了當系統(tǒng)管理需求變化時而不斷的去修改表和程序。(4)建立設(shè)備的性能指標,對設(shè)備進行質(zhì)量評估,給領(lǐng)導(dǎo)者提供決策依據(jù)。6 總結(jié)本文根據(jù)設(shè)備在線監(jiān)測與維護管理系統(tǒng)的需求分析,闡述了系統(tǒng)的主要業(yè)務(wù)流程、功能結(jié)構(gòu)、系統(tǒng)設(shè)計、實現(xiàn)以及關(guān)鍵技術(shù),實現(xiàn)了設(shè)備基礎(chǔ)信息的維護、根據(jù)到發(fā)計劃驅(qū)動實時監(jiān)測客服設(shè)備運行狀態(tài)、跟蹤故障管理狀態(tài),實現(xiàn)故障發(fā)現(xiàn)、故障錄入、故障派工、故障維修、故障回填簽收的一體化流程管理,為綜控室值班員提供決策依據(jù)。參考文獻:1李建華.設(shè)備狀態(tài)監(jiān)測與故障診斷技術(shù)綜述J.廣東化工,200

20、9,200(36):1682趙艷平,姚冠新,陳駿.設(shè)備管理與維修M.北京:化學(xué)工業(yè)出版社,2006:14-18.3郭云飛,黃東.基于B/S模式的多層結(jié)構(gòu)的電廠設(shè)備管理系統(tǒng)的設(shè)計J.計算機與現(xiàn)代化,2004(12):119-121.4豐田和夫.IT時代預(yù)知維修技術(shù)的動向J.中國設(shè)備工程,2002(12):50-52.5劉建勇.機電設(shè)備的故意障維修與設(shè)備保養(yǎng)探討J.科技向?qū)В?011.12(33):51-52.6 段其昌,鐘安勇,吳正東.基于數(shù)據(jù)推送組建 B/S 模式虛擬儀器測試系統(tǒng)J. 儀器儀表學(xué)報, 2007,28(4):220223.7 唐川.中間件技術(shù)在金融中間業(yè)務(wù)信息系統(tǒng)中的應(yīng)用研究J微

21、計算機信息,2006(6):153- 155.8 Lingel K. Security Requirements for Message-oriented Middleware./PDF/MomSecure.pdf, 2001-06附錄資料:不需要的可以自行刪除 busybox詳解制作根文件系統(tǒng)詳解制作根文件系統(tǒng) 一、FHS(Filesystem Hierarchy Standard)標準介紹當我們在linux下輸入ls / 的時候,見到的目錄結(jié)構(gòu)以及這些目錄下的內(nèi)容都大同小異,這是因為所有的linux發(fā)行版在對根文件系統(tǒng)布局上都遵循FHS標準的建議規(guī)定。該標準規(guī)定了根目錄下各個子目錄的名稱及

22、其存放的內(nèi)容:目錄名存放的內(nèi)容/bin必備的用戶命令,例如ls、cp等/sbin必備的系統(tǒng)管理員命令,例如ifconfig、reboot等/dev設(shè)備文件,例如mtdblock0、tty1等/etc系統(tǒng)配置文件,包括啟動文件,例如inittab等/lib必要的鏈接庫,例如C鏈接庫、內(nèi)核模塊/home普通用戶主目錄/rootroot用戶主目錄/usr/bin非必備的用戶程序,例如find、du等/usr/sbin非必備的管理員程序,例如chroot、inetd等/usr/lib庫文件/var守護程序和工具程序所存放的可變,例如日志文件/proc用來提供內(nèi)核與進程信息的虛擬文件系統(tǒng),由內(nèi)核自動生成

23、目錄下的內(nèi)容/sys用來提供內(nèi)核與設(shè)備信息的虛擬文件系統(tǒng),由內(nèi)核自動生成目錄下的內(nèi)容/mnt文件系統(tǒng)掛接點,用于臨時安裝文件系統(tǒng)/tmp臨時性的文件,重啟后將自動清除制作根文件系統(tǒng)就是要建立以上的目錄,并在其中建立完整目錄內(nèi)容。其過程大體包括:編譯安裝busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目錄 利用交叉編譯工具鏈,構(gòu)建/lib目錄 手工構(gòu)建/etc目錄 手工構(gòu)建最簡化的/dev目錄 創(chuàng)建其它空目錄 配置系統(tǒng)自動生成/proc目錄 利用udev構(gòu)建完整的/dev目錄 制作根文件系統(tǒng)的jffs2映像文件 下面就來詳細介紹這個過程。二、編譯安裝busybox,

24、生成/bin、/sbin、/usr/bin、/usr/sbin目錄這些目錄下存儲的主要是常用命令的二進制文件。如果要自己編寫這幾百個常用命令的源程序,my god, 這簡直是一個噩夢!好在我們有嵌入式Linux系統(tǒng)的瑞士軍刀busybox,事情就簡單很多。1、從 HYPERLINK / / 下載busybox-1.7.0.tar.bz22、tar xjvf busybox-1.7.0.tar.bz2解包3、修改Makefile文件175 ARCH ?= arm176 CROSS_COMPILE ?= arm-linux- 4、make menuconfig配置busybox HYPERLINK

25、 /y1meas5zrVyWRApB-3amnI3XoX1uejYB25KKj1kpqxTRhOGgR_PuwGIQD9zdV3d5uvhNok3Z_YMczeZUopvoGEQES1yAumIZZZ14T5WFiL1BGGc7xrEbBCPe_ET2gFHV8nhyRPim0l3Fnss0hvRQ7UWWA/image4%2066DF829F.png busybox配置主要分兩部分。第一部分是Busybox Settings,主要編譯和安裝busybox的一些選項。這里主要需要配置:1)、Build Options - Build BusyBox as a static binary (no

26、 shared libs),表示編譯busybox時,是否靜態(tài)鏈接C庫。我們選擇動態(tài)鏈接C庫。2)、Installation Options - Applets links (as soft-links) - (X) as soft-links,表示安裝busybox時,將各個命令安裝為指向busybox的軟鏈接還是硬鏈接。我們選擇軟鏈接。3)、Installation Options - (/work/nfs_root/fs_mini3) BusyBox installation prefix,表示busybox的安裝位置。我們選擇/work/nfs_root/fs_mini34)Busyb

27、ox Library Tuning。保留Command line editing以支持命令行編輯;保留History size以支持記憶歷史命令;選中Tab completion和Username completion以支持命令自動補全 第二部分是Applets,他將busybox的支持的幾百個命令分門別類。我們只要在各個門類下選擇想要的命令即可。這里我們基本保持默認設(shè)置。1)選中Networking Utilities - httpd下的Enable -u option,以啟用http服務(wù)器的功能allows the server to run as a specific user5、編譯b

28、usyboxmake6、安裝busyboxmake install安裝完成后,可以看到在/work/nfs_root/fs_mini3目錄下生成了binsbinusr/binusr/sbin目錄,其下包含了我們常用的命令,這些命令都是指向bin/busybox的軟鏈接,而busybox本身的大小不到800K:dennisdennis-desktop:/work/nfs_root/fs_mini3$ lsbin linuxrc sbin usrdennisdennis-desktop:/work/nfs_root/fs_mini3$ ls -l bintotal 740lrwxrwxrwx 1

29、dennis dennis 7 2010-04-03 23:57 addgroup - busyboxlrwxrwxrwx 1 dennis dennis 7 2010-04-03 23:57 adduser - busyboxlrwxrwxrwx 1 dennis dennis 7 2010-04-03 23:57 ash - busybox-rwxr-xr-x 1 dennis dennis 749632 2010-04-03 23:57 busyboxlrwxrwxrwx 1 dennis dennis 7 2010-04-03 23:57 cat busybox 而普通PC機上的ls命

30、令就有差不多80K的大小: dennisdennis-desktop:/work/nfs_root/fs_mini3$ ls -l /bin/ls-rwxr-xr-x 1 root root 78004 2007-09-29 20:51 /bin/ls busybox以它嬌小的身軀容納了數(shù)以百計的命令代碼,實在是讓人佩服不已,其不愧嵌入式系統(tǒng)瑞士軍刀之美譽。據(jù)說,busybox的作者身患絕癥,這更讓人欽佩GNU開源軟件的作者們。 三、利用交叉編譯工具鏈,構(gòu)建/lib目錄 光有應(yīng)用程序(命令)是不夠的,因為應(yīng)用程序本身需要使用C庫的庫函數(shù),因此還必需制作for ARM的C庫,并將其放置于/lib

31、目錄。my god,要自己寫C庫的源代碼嗎?不用!還記得交叉編譯工具鏈的3個組成部分嗎?交叉編譯器、for ARM的C庫和二進制工具。哈哈,for ARM的C庫是現(xiàn)成的,我們只需要拷貝過來就可以了。遺憾的是:整個C庫目錄下的文件總大小有26M。而我們根文件系統(tǒng)所在分區(qū)不過區(qū)區(qū)16M而已,根本放不下。怎么辦呢? dennisdennis-desktop:/work/nfs_root/fs_mini3$ du -s -si /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib26M /work/tools/gcc-3.4.5-glibc-2.3.6/arm

32、-linux/lib 需要C庫目錄下所有的文件嗎?no,absolutely no! 讓我們來分析一下glibc庫目錄下內(nèi)容的組成。該目錄下的子目錄和文件共分8類: 目標文件,如crtn.o,用于gcc鏈接可執(zhí)行文件 libtool庫文件(.la),在鏈接庫文件時這些文件會被用到,比如他們列出了當前庫文件所依賴的其它庫文件,程序運行時無需這些文件 gconv目錄,里面是各種鏈接腳本,在編譯應(yīng)用程序時,他們用于指定程序的運行地址,各段的位置等 靜態(tài)庫文件(.a),例如libm.a,libc.a 動態(tài)庫文件 (.so、.so.0-9*) 動態(tài)鏈接庫加載器ld-2.3.6.so、ld-linux.s

33、o.2 其它目錄及文件很顯然,第1、2、3、4、7類文件和目錄是不需要拷貝的。由于動態(tài)鏈接的應(yīng)用程序本身并不含有它所調(diào)用的C庫函數(shù)的代碼,因此執(zhí)行時需要動態(tài)鏈接庫加載器來為它加載相應(yīng)的C庫文件,所以第6類文件是需要拷貝的。除此之外,第5類文件當然要拷貝。但第5類文件的大小也相當大。dennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ du -c -si *.so* 7.2M total 需要全部拷貝嗎?非也,非也!其實,需要哪些庫完全取決于要運行的應(yīng)用程序使用了哪些庫函數(shù)。如果我們只制作最簡單的系統(tǒng),那么我們

34、只需要運行busybox這一個應(yīng)用程序即可。通過執(zhí)行 dennisdennis-desktop:/work/nfs_root/fs_mini3$ arm-linux-readelf -a bin/busybox | grep Shared0 x00000001 (NEEDED) Shared library: libcrypt.so.10 x00000001 (NEEDED) Shared library: libm.so.60 x00000001 (NEEDED) Shared library: libc.so.6 可知:busybox只用到了3個庫:通用C庫(libc)、數(shù)學(xué)庫(libm)

35、、加密庫(libcrypt),因此我們只需要拷貝這3個庫的庫文件即可。但是每個庫都有4個文件,4個文件都要拷貝嗎?當然不是。 dennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ ls -l libcrypt.-*-rwxr-xr-x 1 dennis dennis 30700 2008-01-22 05:32 libcrypt-2.3.6.so-rw-r-r- 1 dennis dennis 23118 2008-01-22 05:32 libcrypt.alrwxrwxrwx 1 dennis denni

36、s 13 2008-12-22 15:38 libcrypt.so - libcrypt.so.1lrwxrwxrwx 1 dennis dennis 17 2008-12-22 15:38 libcrypt.so.1 - libcrypt-2.3.6.sodennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ ls -l libm.-*-rwxr-xr-x 1 dennis dennis 779096 2008-01-22 05:31 libm-2.3.6.so-rw-r-r- 1 dennis dennis

37、 1134282 2008-01-22 05:32 libm.alrwxrwxrwx 1 dennis dennis 9 2008-12-22 15:38 libm.so - libm.so.6lrwxrwxrwx 1 dennis dennis 13 2008-12-22 15:38 libm.so.6 - libm-2.3.6.sodennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ ls -l libc.-*-rwxr-xr-x 1 dennis dennis 1435660 2008-01-22 05

38、:48 libc-2.3.6.so-rw-r-r- 1 dennis dennis 2768280 2008-01-22 05:31 libc.a-rw-r-r- 1 dennis dennis 195 2008-01-22 05:34 libc.solrwxrwxrwx 1 dennis dennis 13 2008-12-22 15:38 libc.so.6 - libc-2.3.6.so 4個文件中的.a文件是靜態(tài)庫文件,是不需要拷貝的。另外3個文件是: 實際的共享鏈接庫:libLIBRARY_NAME-GLIBC_VERSION.so。當然需要拷貝。 主修訂版本的符號鏈接,指向?qū)嶋H的共

39、享鏈接庫:libLIBRARY_NAME.so.MAJOR_REVISION_VERSION,程序一旦鏈接了特定的鏈接庫,將會參用該符號鏈接。程序啟動時,加載器在加載程序前,會檢索該文件。所以需要拷貝。 與版本無關(guān)的符號鏈接,指向主修訂版本的符號連接(libc.so是唯一的例外,他是一個鏈接命令行:libLIBRARY_NAME.so,是為編譯程序時提供一個通用條目)。這些文件在程序被編譯時會被用到,但在程序運行時不會被用到,所以不必拷貝它。關(guān)于共享庫的2個符號鏈接的作用的特別說明:當我們使用gcc hello.c -o hello -lm編譯程序時,gcc會根據(jù)-lm的指示,加頭(lib)添

40、尾(.so)得到libm.so,從而沿著與版本無關(guān)的符號鏈接(libm.so - libm.so.6)找到libm.so.6并記錄在案(hello的ELF頭中),表示hello需要使用libm.so.6這個庫文件所代表的數(shù)學(xué)庫中的庫函數(shù)。而當hello被執(zhí)行的時候,動態(tài)鏈接庫加載器會從hello的ELF頭中找到libm.so.6這個記錄,然后沿著主修訂版本的符號鏈接(libm.so.6 - libm-2.3.6.so)找到實際的共享鏈接庫libm-2.3.6.so,從而將其與hello作動態(tài)鏈接??梢?,與版本無關(guān)的符號鏈接是供編譯器使用的,主修訂版本的符號鏈接是供動態(tài)鏈接庫加載器使用的,而實際

41、的共享鏈接庫則是供應(yīng)用程序使用的。通過以上分析,我們只需要拷貝3個庫(每個庫各1個主修訂版本的符號鏈接和1個實際的共享鏈接庫)以及動態(tài)鏈接庫加載器(1個符號鏈接和1個實體文件)。步驟如下:dennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ mkdir /work/nfs_root/fs_mini3/lib dennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp libcrypt-* /work/nfs_root/fs_

42、mini3/libdennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp -l libcrypt.so.* /work/nfs_root/fs_mini3/libdennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp libm-* /work/nfs_root/fs_mini3/libdennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/li

43、b$ cp -l libm.so.* /work/nfs_root/fs_mini3/libdennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp libc-* /work/nfs_root/fs_mini3/libdennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp -l libc.so.* /work/nfs_root/fs_mini3/lib dennisdennis-desktop:/work/tools/

44、gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp -l ld-* /work/nfs_root/fs_mini3/lib 四、手工構(gòu)建/etc目錄 /etc目錄存放的是系統(tǒng)程序的主配置文件,因此需要哪些配置文件取決于要運行哪些系統(tǒng)程序。即使最小的系統(tǒng)也一定會運行1號用戶進程init,所以我們至少要手工編寫init的主配置文件inittab。busybox的inittab文件的語法、語義與傳統(tǒng)的SYSV的inittab有所不同。 inittab文件中每個條目用來定義一個需要init啟動的子進程,并確定它的啟動方式,格式為:。例如:ttySAC0:askfirst:-

45、/bin/sh 表示子進程要使用的控制臺,若省略則使用與init進程一樣的控制臺 表示運行級別,busybox init程序這個字段沒有意義 表示init進程如何控制這個子進程 sysinit:系統(tǒng)啟動后最先執(zhí)行,只執(zhí)行一次,init進程等待它結(jié)束后才繼續(xù)執(zhí)行其它動作 wait:系統(tǒng)執(zhí)行完sysinit條目后執(zhí)行,只執(zhí)行一次,init進程等待它結(jié)束后才繼續(xù)執(zhí)行其它動作 once:系統(tǒng)執(zhí)行完wait條目后執(zhí)行,只執(zhí)行一次,init進程不等待它結(jié)束 respawn:啟動完once進程后,init進程監(jiān)測發(fā)現(xiàn)子進程退出時,重新啟動它 askfirst:啟動完respawn進程后,與respawn類似

46、,不過init進程先輸出” Please press Enter to activate this console“,等用戶輸入回車后才啟動子進程 shutdown:當系統(tǒng)關(guān)機時 restart:Busybox中配置了CONFIG_FEATURE_USE_INITAB,并且init進程接收到SIGUP信號時執(zhí)行,先重新讀取、解析/etc/inittab文件,再執(zhí)行restart程序 ctrlaltdel:按下ctrl+alt+del鍵時執(zhí)行,不過在串口控制臺中無法輸入它 表示進程對應(yīng)的二進制文件。如果前面有-號,表示該程序是“可以與用戶進行交互的”我們制作最簡單的/etc/inittab文件,

47、其內(nèi)容如下::sysinit:/etc/init.d/rcS:askfirst:-/bin/sh:ctrlaltdel:/sbin/reboot:shutdown:/bin/umount -a r 制作最簡單的腳本程序文件/etc/init.d/rcS,其內(nèi)容如下: #!/bin/shifconfig eth0 7修改shell腳本文件/etc/init.d/rcS的權(quán)限,以使其可被執(zhí)行:# chmod a+x /etc/init.d/rcS五、手工構(gòu)建最簡化的/dev目錄 在linux機器上,執(zhí)行l(wèi)s /dev可看到幾百個設(shè)備文件,我需要手工創(chuàng)建它們嗎?maybe,我只需要手工創(chuàng)建幾個設(shè)備文

48、件!我怎么知道我應(yīng)該創(chuàng)建哪幾個設(shè)備文件呢?管它呢,先看看開發(fā)板上可愛的linux的反應(yīng)再說。 啟動Linux操作系統(tǒng),顯示: VFS: Mounted root (nfs filesystem).Freeing init memory: 112KWarning: unable to open an initial console. 這說明,內(nèi)核已經(jīng)成功掛載根文件系統(tǒng),但卻未能成功啟動第1個用戶進程init。通過錯誤消息“unable to open an initial console”搜索內(nèi)核源代碼,找到init/main.c文件。748 static int noinline init_p

49、ost(void)749 750 free_initmem();751 unlock_kernel();752 mark_rodata_ro();753 system_state = SYSTEM_RUNNING;754 numa_default_policy();755 756 if (sys_open(const char _user *) /dev/console, O_RDWR, 0) 0)757 printk(KERN_WARNING Warning: unable to open an initial console.n);758 759 (void) sys_dup(0);760

50、 (void) sys_dup(0);761 762 if (ramdisk_execute_command) 763 run_init_process(ramdisk_execute_command);764 printk(KERN_WARNING Failed to execute %sn,765 ramdisk_execute_command);766 767 768 /*769 * We try each of these until one succeeds.770 *771 * The Bourne shell can be used instead of init if we a

51、re772 * trying to recover a really broken machine.773 */774 if (execute_command) 775 run_init_process(execute_command);776 printk(KERN_WARNING Failed to execute %s. Attempting 777 defaults.n, execute_command);778 779 run_init_process(/sbin/init);780 run_init_process(/etc/init);781 run_init_process(/

52、bin/init);782 run_init_process(/bin/sh);783 784 panic(No init found. Try passing init= option to kernel.);785 顯然,內(nèi)核錯誤是由175行不能打開/dev/console所致。通過查看已經(jīng)安裝好的linux機器的/dev/console設(shè)備文件,可知其是字符設(shè)備文件,主設(shè)備號為5,次設(shè)備號為1: dennisdennis-desktop:/work/nfs_root/fs_mini3/etc$ ls -l /dev/consolecrw- 1 root root 5, 1 2010-04

53、-08 08:40 /dev/console 因此,我們使用下面的命令創(chuàng)建它: HYPERLINK mailto:dennisdennis-desktop:/work/nfs_root/fs_mini3/dev$ dennisdennis-desktop:/work/nfs_root/fs_mini3/dev$ sudo mknod console c 5 1 還需要創(chuàng)建其它設(shè)備文件嗎?只有天知道!再看看linux的反應(yīng)。 VFS: Mounted root (nfs filesystem).Freeing init memory: 112Kinit: cant open /dev/null:

54、 No such file or directory 這次我們有經(jīng)驗了,如法炮制,創(chuàng)建/dev/null設(shè)備文件:dennisdennis-desktop:/work/nfs_root/fs_mini3/dev$ sudo mknod null c 1 3 再次重啟開發(fā)板上的linux,顯示 VFS: Mounted root (nfs filesystem).Freeing init memory: 112Kinit started: BusyBox v1.7.0 (2010-04-03 23:53:55 CST)starting pid 229, tty : /etc/init.d/rcS

55、 Please press Enter to activate this console.starting pid 231, tty : /bin/sh# 哈哈,我們成功了,終于可以K歌去了。六、創(chuàng)建其它空目錄K完歌回來,繼續(xù)戰(zhàn)斗。dennisdennis-desktop:/work/nfs_root/fs_mini3$ mkdir home root proc sys tmp mnt var再次重啟動開發(fā)板上的linux。咦,似乎有些問題。VFS: Mounted root (nfs filesystem).Freeing init memory: 112Kinit started: BusyBox v1.7.0 (2010-04-03 23:53:55 CST)starting pid 229, tty : /etc/init.d/rcS Please press Enter to activate this console.starting pid 231, tty :

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論