王再躍 顧長(zhǎng)利 劉奧琦
(安徽合肥聯(lián)寶信息技術(shù)有限公司 安徽省合肥市 230091)
隨著科技不斷發(fā)展和智能時(shí)代的到來(lái),計(jì)算機(jī)作為智能產(chǎn)品已經(jīng)在很多領(lǐng)域占有重要地位。與此同時(shí),市場(chǎng)對(duì)計(jì)算機(jī)的產(chǎn)品形態(tài),應(yīng)用場(chǎng)景也提出了更多的要求。所以品牌計(jì)算機(jī)在研發(fā)和制造的過(guò)程中,會(huì)面臨如下幾個(gè)場(chǎng)景的挑戰(zhàn):
為了避免單一硬件供應(yīng)商的供貨壓力,在對(duì)硬件廠商的技術(shù)規(guī)格要求一致的情況下,在產(chǎn)品在設(shè)計(jì)初期會(huì)在同一配件上選擇2-3個(gè)同類(lèi)型硬件廠商作為供給源。但不同的硬件廠商所提供的組件的軟件驅(qū)動(dòng)是不一樣的,這就要求產(chǎn)品在研發(fā)階段需要針對(duì)不同的硬件+軟件做充分的整合測(cè)試,進(jìn)而導(dǎo)入到出貨系統(tǒng)中。
在提升產(chǎn)品多市場(chǎng)覆蓋率方面,對(duì)產(chǎn)品研發(fā)初期的定位集中在需要針對(duì)不同的應(yīng)用場(chǎng)景搭配不同的系統(tǒng)版本,以此做到一機(jī)多用,既能減少研發(fā)成本,也能便于后期維護(hù)和延長(zhǎng)產(chǎn)品的生命周期。
以上兩個(gè)場(chǎng)景,在實(shí)際研發(fā)生產(chǎn)過(guò)程中會(huì)遇到以下幾個(gè)問(wèn)題:
(1)傳統(tǒng)的系統(tǒng)灌錄方案是將特定的Windows 系統(tǒng)和適配的硬件驅(qū)動(dòng)綁定為個(gè)體,通過(guò)拷盤(pán)或者Ghost 方式,可以實(shí)現(xiàn)“一對(duì)一”的適配安裝。但是,面對(duì)批量生產(chǎn)的計(jì)算機(jī)訂單,傳統(tǒng)的“一對(duì)一”方案無(wú)法高效作業(yè),且對(duì)于系統(tǒng)+硬件組合過(guò)多的場(chǎng)景,無(wú)法做到準(zhǔn)確安裝。
(2)如果采用自動(dòng)灌軟方式,在Windows 系統(tǒng)和驅(qū)動(dòng)的組合搭配上有局限,目前只能實(shí)現(xiàn)“一套系統(tǒng)+多套硬件驅(qū)動(dòng)”的組合方式,當(dāng)涉及到“多套系統(tǒng)+多套硬件驅(qū)動(dòng)”時(shí),需要針對(duì)每一套系統(tǒng)單獨(dú)創(chuàng)建灌錄單位,當(dāng)場(chǎng)景1 和場(chǎng)景2 重疊條件過(guò)多的話,不利于后期維護(hù)。
本研究目的在于找尋一種智能灌軟方案,增加對(duì)“多套系統(tǒng)+多套硬件驅(qū)動(dòng)”組合的灌錄支持。該方案能將現(xiàn)有需要使用到的系統(tǒng)版本和不同的硬件驅(qū)動(dòng)整合為一個(gè)完整的灌錄單位,要求灌錄單位內(nèi)模塊化設(shè)計(jì)系統(tǒng)和驅(qū)動(dòng),并增加標(biāo)簽識(shí)別,通過(guò)執(zhí)行腳本來(lái)判定系統(tǒng)和驅(qū)動(dòng)之間的搭配關(guān)系,從而實(shí)現(xiàn)在同一個(gè)產(chǎn)品上,根據(jù)實(shí)際訂單所指定的出貨系統(tǒng),智能判斷并撈取對(duì)應(yīng)的適配驅(qū)動(dòng)安裝,確保組合關(guān)系準(zhǔn)確,從而在生產(chǎn)制造過(guò)程中減少繁瑣的數(shù)據(jù)庫(kù)維護(hù),降低后期系統(tǒng)灌錄時(shí)間成本,最終提高產(chǎn)能。
如圖1所示,在現(xiàn)有流程中,產(chǎn)品需要灌錄的系統(tǒng)a 是唯一的,產(chǎn)品所裝配的硬件會(huì)有唯一的硬件ID 作為標(biāo)識(shí),在為硬件安裝軟件驅(qū)動(dòng)時(shí)會(huì)給每個(gè)驅(qū)動(dòng)增加ID 判斷的動(dòng)作,當(dāng)識(shí)別到某個(gè)硬件ID存在時(shí),通過(guò)腳本調(diào)用該硬件適配的驅(qū)動(dòng)進(jìn)行安裝。
圖1
此時(shí)增加一個(gè)不同版本的系統(tǒng)b,如圖2所示,單個(gè)硬件會(huì)提供不同版本的A,B 兩組驅(qū)動(dòng)的支持,分別對(duì)應(yīng)不同的系統(tǒng)版本,但是硬件ID 卻是唯一的。那么判斷硬件ID 的方案就無(wú)法準(zhǔn)確地對(duì)應(yīng)不同系統(tǒng)版本進(jìn)行選擇安裝。
圖2
針對(duì)這種場(chǎng)景,我們發(fā)現(xiàn):既然已經(jīng)能獲悉系統(tǒng)版本和與之對(duì)應(yīng)的驅(qū)動(dòng)搭配,如果可以預(yù)先對(duì)系統(tǒng)+驅(qū)動(dòng)進(jìn)行分組,那么在流程上只需要對(duì)系統(tǒng)層多增加一個(gè)判斷邏輯,就可以實(shí)現(xiàn)從系統(tǒng)源頭上將同一硬件的不同驅(qū)動(dòng)版本加以區(qū)分。
首先,我們從產(chǎn)品立項(xiàng)階段獲取到目標(biāo)系統(tǒng)的版本組合,嘗試從多個(gè)目標(biāo)系統(tǒng)找出唯一體現(xiàn)系統(tǒng)屬性的特征作為判定標(biāo)識(shí),例如:系統(tǒng)版本號(hào),系統(tǒng)名稱等。 當(dāng)唯一特征確認(rèn)后,和硬件廠商確認(rèn)是否需要針對(duì)不同系統(tǒng)提供不同的驅(qū)動(dòng)版本支持。通常情況下,如果系統(tǒng)之間的版本跨度過(guò)大,則必須將硬件驅(qū)動(dòng)加以區(qū)分,例如硬件A 在兩種Windows 系統(tǒng)下的驅(qū)動(dòng)版本支持
已知硬件A 的驅(qū)動(dòng)20.0.0 和 19.0.0 是針對(duì)不同系統(tǒng)版本所設(shè)計(jì)的軟件版本,而硬件ID 唯一,當(dāng)兩個(gè)版本的驅(qū)動(dòng)整合在一個(gè)灌錄單位內(nèi),則需要對(duì)上層系統(tǒng)版本做初步判斷。
其次,在上表中我們發(fā)現(xiàn)兩個(gè)系統(tǒng)版本名稱不同,此差異點(diǎn)可以作為突破口,于是嘗試在圖1的流程X 到流程Y 之間設(shè)置斷點(diǎn),抓取系統(tǒng)輸出的信息,確認(rèn)不同的系統(tǒng)在安裝后所顯示的版本名是否唯一。通過(guò)多次實(shí)驗(yàn)得出,兩個(gè)系統(tǒng)分別在完成流程X 之后輸出以下信息:
在確認(rèn)以上信息穩(wěn)定輸出且具備唯一性之后,我們:
(1)在流程X 結(jié)束位置增加了一個(gè)BAT 腳本用來(lái)抓取該系統(tǒng)版本名并將其打印到一個(gè)新建文本文檔中。
(2)保留該文檔作為此次灌錄流程中的一個(gè)特征判定Anchor(以下簡(jiǎn)稱“Anchor”): Anchor 中包含抓取到的值為L(zhǎng)TSC 或者Win10 Professional(例),用于在流程Y 中作為匹配標(biāo)識(shí)。如圖3所示。
圖3
(3)以上Anchor 創(chuàng)建過(guò)程是通過(guò)腳本實(shí)現(xiàn)的,而同時(shí)我們也需要對(duì)驅(qū)動(dòng)列表賦予標(biāo)簽,確保Anchor 中體現(xiàn)的當(dāng)前系統(tǒng)版本能和驅(qū)動(dòng)匹配后再安裝。
(4)在流程Y 執(zhí)行過(guò)程中,該Anchor 會(huì)和所有硬件驅(qū)動(dòng)模塊進(jìn)行比對(duì),類(lèi)似于當(dāng)硬件A 被識(shí)別為存在時(shí),原有流程下會(huì)調(diào)用硬件A 驅(qū)動(dòng),而灌錄單位中同時(shí)存在20.0.0 和19.0.0 兩套驅(qū)動(dòng)。此時(shí)Anchor 啟動(dòng),查找驅(qū)動(dòng)模塊中預(yù)先被賦予的系統(tǒng)標(biāo)簽,如果和該Anchor 中的保存信息一致,則啟動(dòng)安裝;反之,則跳過(guò)安裝,繼續(xù)查找直到從灌錄單位中找到包含與Anchor 信息一致的驅(qū)動(dòng)版本。
在實(shí)際執(zhí)行過(guò)程中,我們發(fā)現(xiàn)對(duì)于預(yù)先標(biāo)簽化驅(qū)動(dòng)模塊的維護(hù)容易出錯(cuò),例如為驅(qū)動(dòng)添加標(biāo)簽時(shí)的拼寫(xiě)錯(cuò)誤;標(biāo)簽中空格無(wú)法識(shí)別;判定邏輯寫(xiě)反等。 基于以上問(wèn)題,需要嘗試用一種更加簡(jiǎn)單明確的標(biāo)簽定義方式避免潛在的人為失誤。為此,我們針對(duì)事先在系統(tǒng)端生成的Anchor 進(jìn)行二次轉(zhuǎn)譯:用0 和1 替換先前冗長(zhǎng)的版本名稱,當(dāng)抓取到系統(tǒng)版本名為L(zhǎng)TSC 時(shí),Anchor 存為0;如非LTSC 則存為1。更改后的適配邏輯為:
(1)當(dāng)Anchor 值為0,表示當(dāng)前系統(tǒng)為L(zhǎng)TSC,Anchor 在尋找適配驅(qū)動(dòng)時(shí),遇到標(biāo)簽為0 的驅(qū)動(dòng)模塊才執(zhí)行安裝,反之不安裝;
(2)當(dāng)Anchor 值為1,表示當(dāng)前系統(tǒng)為常規(guī)系統(tǒng),Anchor 在尋找適配驅(qū)動(dòng)時(shí),遇到標(biāo)簽為0 的驅(qū)動(dòng)模塊直接跳過(guò),僅安裝未加標(biāo)簽的驅(qū)動(dòng)模塊列。
至此,通過(guò)預(yù)先確認(rèn)到的多系統(tǒng)Anchor 信息并將其作為唯一標(biāo)簽,區(qū)分了同個(gè)硬件ID 上的不同驅(qū)動(dòng)版本,實(shí)現(xiàn)了兩套系統(tǒng)+兩套驅(qū)動(dòng)版本的灌軟流程管控。通過(guò)該方案,對(duì)研發(fā)過(guò)程中針對(duì)任何軟件應(yīng)用需求的定制化得以實(shí)現(xiàn),可以在灌軟流程的任意節(jié)點(diǎn)上設(shè)置斷點(diǎn),讀取所需信息并加以判定,從而編寫(xiě)腳本根據(jù)判定結(jié)果實(shí)施下一步定制化操作。
該方案的導(dǎo)入減少了量產(chǎn)訂單的維護(hù)成本,從維護(hù)多套系統(tǒng)灌軟組合縮減為僅需維護(hù)一套集成系統(tǒng)灌軟單位;從投線數(shù)量上減少了繁瑣的站別管控,精簡(jiǎn)了人力耗材的投入,從而進(jìn)一步避免了由于復(fù)雜繁多的系統(tǒng)組合造成灌軟錯(cuò)誤的風(fēng)險(xiǎn)。為產(chǎn)線智能制造提供了合理的解決方案。