一種在操作系統(tǒng)啟動之前下發(fā)配置的方法
【專利摘要】本發(fā)明公開了一種在操作系統(tǒng)啟動之前下發(fā)配置的方法,其在操作系統(tǒng)弓I導程序BootLoader(操作系統(tǒng)內(nèi)核運行之前運行的一段小程序,通過這段小程序,將系統(tǒng)的軟硬件環(huán)境帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準備好正確的環(huán)境)啟動完成后,讀取配置文件以便能為操作系統(tǒng)初始化時使用這些參數(shù),即構(gòu)建BootLoader和操作系統(tǒng)之間一個信息交換機制,BootLoader中讀取配置,供操作系統(tǒng)啟動過程中使用這些參數(shù)。該方法能夠靈活的配置操作系統(tǒng)啟動前需要初始化的參數(shù)。
【專利說明】一種在操作系統(tǒng)啟動之前下發(fā)配置的方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種操作系統(tǒng)配置技術(shù),具體涉及操作系統(tǒng)中的配置文件。
【背景技術(shù)】
[0002] 用戶配置文件就是在用戶登錄電腦時,或是用戶在使用軟件時。軟件系統(tǒng)為用戶 所要加載所需環(huán)境的設(shè)置和文件的集合。它包括所有用戶專用的配置設(shè)置,如程序項目、屏 幕顏色、網(wǎng)絡(luò)連接、打印機連接、鼠標設(shè)置及窗口的大小和位置等。
[0003] 現(xiàn)有配置方法主要是操作系統(tǒng)起來后,讀取解析配置文件,但有許多參數(shù)需要在 系統(tǒng)起來前就配置好,大部分解決方案把這些值設(shè)置成常量,這種方法雖然簡單可靠,但當 環(huán)境發(fā)生變化,比如設(shè)備需要調(diào)試或滿足某類應(yīng)用必須調(diào)整前期設(shè)置的參數(shù)時,只能重新 生成映像文件或需要專業(yè)人員進行支持,顯示上述方案的局限性。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明針對現(xiàn)有采用操作系統(tǒng)起來后進行配置的方案所存在的問題,而提供一種 在操作系統(tǒng)啟動之前下發(fā)配置的方法。該方法能夠靈活的配置操作系統(tǒng)啟動前需要初始化 的參數(shù)。
[0005] 為了達到上述目的,本發(fā)明采用如下的技術(shù)方案:
[0006] -種在操作系統(tǒng)啟動之前下發(fā)配置的方法,所述方法在操作系統(tǒng)引導程序Boot Loader (操作系統(tǒng)內(nèi)核運行之前運行的一段小程序,通過這段小程序,將系統(tǒng)的軟硬件環(huán)境 帶到一個合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準備好正確的環(huán)境)啟動完成后,讀取 配置文件以便能為操作系統(tǒng)初始化時使用這些參數(shù),即構(gòu)建Boot Loader和操作系統(tǒng)之間 一個信息交換機制,Boot Loader中讀取配置,供操作系統(tǒng)啟動過程中使用這些參數(shù)。
[0007] 在本發(fā)明的優(yōu)選方案中,所述方法包括如下步驟:
[0008] (1)通過配置文件生成工具或設(shè)備的命令行生成配置文件;
[0009] (2)在Boot Loader啟動時,把配置文件內(nèi)容讀到特定的內(nèi)存位置;
[0010] (3)操作系統(tǒng)啟動前,按照語法解析存放在特定位置的配置,生成可供查詢的配置 數(shù)據(jù)庫;
[0011] (4)操作系統(tǒng)啟動時,查詢數(shù)據(jù)庫,獲得需要的配置參數(shù),如果找不到相應(yīng)的配置, 則使用缺省配置參數(shù);
[0012] (5)操作系統(tǒng)啟動后,可以通過命令修改配置文件;
[0013] ( 6 )重新啟動設(shè)備,使新的配置文件生效。
[0014] 進一步的,所述配置文件由4字節(jié)校驗和、配置文件長度、配置文件數(shù)據(jù)三部分組 成,所述校驗和用來檢驗配置文件是否被破壞,配置文件長度表明了配置文件數(shù)據(jù)的長度, 配置文件數(shù)據(jù)是由相同長度的多條配置命令組成,所述配置命令的格式為:[關(guān)鍵字:值]。
[0015] 進一步的,所述步驟(2)的具體實現(xiàn)步驟如下:在Boot Loader啟動時,檢查到存 在配置文件,通過文件的校驗和檢查配置文件的有效性,如果檢查到是合法的配置文件,則 以字符串的形式把配置文件拷貝到預(yù)保留內(nèi)存區(qū)域,否則跳出處理過程。
[0016] 進一步的,所述步驟(3)在操作系統(tǒng)啟動前,解析配置文件,并把配置文件數(shù)據(jù)中 每條配置命令以關(guān)鍵字為哈希值,插入到配置文件哈希表中,生成配置數(shù)據(jù)庫,創(chuàng)建哈希表 使用的內(nèi)存從預(yù)定義的內(nèi)存中分配。
[0017] 使用本方法后,可方便的修改操作系統(tǒng)啟動過程中設(shè)置的參數(shù),通過修改這些參 數(shù)擴大了映像文件使用范圍,增強了設(shè)備在單一應(yīng)用環(huán)境下的極限能力。
【專利附圖】
【附圖說明】
[0018] 以下結(jié)合附圖和【具體實施方式】來進一步說明本發(fā)明。
[0019] 圖1為本發(fā)明的實施流程圖。
【具體實施方式】
[0020] 為了使本發(fā)明實現(xiàn)的技術(shù)手段、創(chuàng)作特征、達成目的與功效易于明白了解,下面結(jié) 合具體圖示,進一步闡述本發(fā)明。
[0021] 在配置操作前,本發(fā)明首先在映像文件的數(shù)據(jù)段預(yù)分配一塊區(qū)域,可通過定義一 個字符數(shù)組來實現(xiàn),比如char config_buff[VOS_CONFIG_MEM_SIZE],數(shù)組的大小可按照需 要保存的命令多少來估算,比如規(guī)定配置文件中配置命令的長度為N,可允許配置的最大 命令數(shù)為M,則可以定義V0S_C0NFIG_MEM_SIZE值為M*N+8+12*M,其中M*N用來存放配置, 8個字節(jié)用來存放配置文件的校驗和和長度,每個哈希節(jié)點需要12個字節(jié),用來保存關(guān)鍵 字key,數(shù)據(jù)value,下一個哈希節(jié)點next, 12*M用來存放每條命令的哈希節(jié)點。從config_ buff開始低地址到高地址存放配置文件,從config_buff+VOS_CONFIG_MEM_SIZE高地址到 低地址用來分配解析文件過程中分配哈希節(jié)點時使用到的內(nèi)存。
[0022] 由此,本發(fā)明在操作系統(tǒng)啟動之前下發(fā)配置的具體實施過程如下(參見圖1):
[0023] 1、通過配置文件生成工具或設(shè)備的命令行生成配置文件。
[0024] 該步驟中生成的配置文件由4字節(jié)校驗和、配置文件長度、配置文件數(shù)據(jù)三部分 組成。校驗和用來檢驗配置文件是否被破壞,配置文件長度表明了配置文件數(shù)據(jù)的長度,配 置文件數(shù)據(jù)是由相同長度的多條配置命令組成。配置命令的格式定義為:[關(guān)鍵字:值]。
[0025] 2、在Boot Loader啟動時,把配置文件內(nèi)容讀到特定的內(nèi)存位置。
[0026] 該步驟具體實現(xiàn)時,在Boot Loader啟動時,檢查到存在配置文件,通過配置文件 中的4字節(jié)校驗和檢查配置文件的有效性,如果檢查到是合法的配置文件,則以字符串的 形式把配置文件拷貝到預(yù)保留內(nèi)存c 〇nfig_bUff區(qū)域,否則跳出處理過程。
[0027] 3、操作系統(tǒng)啟動前,按照配置文件的語法格式解析存放在config_buff中的配 置,生成可供查詢的配置數(shù)據(jù)庫。
[0028] 在操作系統(tǒng)啟動前,解析配置文件,從config_buff+8開始為第一條配置命令,從 配置命令中解析到關(guān)鍵字和值,生成哈希節(jié)點,并把該節(jié)點插入到哈希表,依次解析配置文 件中每條命令,并插入哈希表,這樣所有配置命令組成一個哈希表數(shù)據(jù)庫。
[0029] 4、操作系統(tǒng)啟動時,以關(guān)鍵字為索引查詢數(shù)據(jù)庫,獲得需要的配置參數(shù),如果找不 到相應(yīng)的配置,則使用缺省配置參數(shù)。
[0030] 該步驟進行查詢數(shù)據(jù)庫時,以配置關(guān)鍵字查找步驟3中形成的哈希表,并以返回 的值設(shè)置相對應(yīng)的系統(tǒng)配置參數(shù)。
[0031] 5、操作系統(tǒng)啟動后,以設(shè)置的參數(shù)運行。如果用戶希望以新的系統(tǒng)配置參數(shù)運行, 可以通過命令行修改配置文件,新設(shè)置的參數(shù)不會立刻生效,需要重新啟動設(shè)備才能生效。
[0032] 6、重新啟動設(shè)備,使新的配置文件生效。
[0033] 在上述的具體實施過程中,在所有系統(tǒng)參數(shù)設(shè)置時都要進行合法性檢查,以避免 錯誤參數(shù)導致系統(tǒng)啟動失敗或運行錯誤。
[0034] 通過上述方案可知,本發(fā)明提供的方案能夠有效的解決Boot Loader讀到配置文 件后的存放地點和解析配置文件時機以及解析配置文件時使用到內(nèi)存操作等方面的問題, 實現(xiàn)在Boot Loader啟動完成后,讀取配置文件以便能為操作系統(tǒng)初始化時使用這些參數(shù), 即構(gòu)建Boot Loader和操作系統(tǒng)之間一個信息交換機制,Boot Loader中讀取配置,供操作 系統(tǒng)啟動過程中使用這些參數(shù)。
[0035] 以上顯示和描述了本發(fā)明的基本原理、主要特征和本發(fā)明的優(yōu)點。本行業(yè)的技術(shù) 人員應(yīng)該了解,本發(fā)明不受上述實施例的限制,上述實施例和說明書中描述的只是說明本 發(fā)明的原理,在不脫離本發(fā)明精神和范圍的前提下,本發(fā)明還會有各種變化和改進,這些變 化和改進都落入要求保護的本發(fā)明范圍內(nèi)。本發(fā)明要求保護范圍由所附的權(quán)利要求書及其 等效物界定。
【權(quán)利要求】
1. 一種在操作系統(tǒng)啟動之前下發(fā)配置的方法,其特征在于,所述方法在Boot Loader 啟動完成后,讀取配置文件以便能為操作系統(tǒng)初始化時使用這些參數(shù),即構(gòu)建Boot Loader 和操作系統(tǒng)之間一個信息交換機制,Boot Loader中讀取配置,供操作系統(tǒng)啟動過程中使用 這些參數(shù)。
2. 根據(jù)權(quán)利要求1所述的一種在操作系統(tǒng)啟動之前下發(fā)配置的方法,其特征在于,所 述方法包括如下步驟: (1) 通過配置文件生成工具或設(shè)備的命令行生成配置文件; (2) 在Boot Loader啟動時,把配置文件內(nèi)容讀到特定的內(nèi)存位置; (3) 操作系統(tǒng)啟動前,按照語法解析存放在特定位置的配置,生成可供查詢的配置數(shù)據(jù) 庫; (4) 操作系統(tǒng)啟動時,查詢數(shù)據(jù)庫,獲得需要的配置參數(shù),如果找不到相應(yīng)的配置,則使 用缺省配置參數(shù); (5) 操作系統(tǒng)啟動后,可以通過命令修改配置文件; (6) 重新啟動設(shè)備,使新的配置文件生效。
3. 根據(jù)權(quán)利要求2所述的一種在操作系統(tǒng)啟動之前下發(fā)配置的方法,其特征在于,所 述配置文件由4字節(jié)校驗和、配置文件長度、配置文件數(shù)據(jù)三部分組成,所述校驗和用來檢 驗配置文件是否被破壞,配置文件長度表明了配置文件數(shù)據(jù)的長度,配置文件數(shù)據(jù)是由相 同長度的多條配置命令組成,所述配置命令的格式為:[關(guān)鍵字:值]。
4. 根據(jù)權(quán)利要求2所述的一種在操作系統(tǒng)啟動之前下發(fā)配置的方法,其特征在于,所 述步驟(2)的具體實現(xiàn)步驟如下:在Boot Loader啟動時,檢查到存在配置文件,通過文件 的校驗和檢查配置文件的有效性,如果檢查到是合法的配置文件,則以字符串的形式把配 置文件拷貝到預(yù)保留內(nèi)存區(qū)域,否則跳出處理過程。
5. 根據(jù)權(quán)利要求2所述的一種在操作系統(tǒng)啟動之前下發(fā)配置的方法,其特征在于,所 述步驟(3 )在操作系統(tǒng)啟動前,解析配置文件,并把配置文件數(shù)據(jù)中每條配置命令以關(guān)鍵字 為哈希值,插入到配置文件哈希表中,生成配置數(shù)據(jù)庫,創(chuàng)建哈希表使用的內(nèi)存從預(yù)定義的 內(nèi)存中分配。
【文檔編號】G06F9/445GK104216721SQ201310211105
【公開日】2014年12月17日 申請日期:2013年5月31日 優(yōu)先權(quán)日:2013年5月31日
【發(fā)明者】汪革, 茍利平, 李俊盛, 洪飛, 胡浩 申請人:上海博達數(shù)據(jù)通信有限公司