本發(fā)明涉及一種自動更新linux系統(tǒng)所有外插卡設備驅動的方法,具體是說一種基于shell/python語言的自動更新linux下所有外插卡設備驅動的方法,屬于計算機技術領域。
背景技術:
驅動程序是一種可以使計算機和硬件設備通信的特殊程序,其運行在操作系統(tǒng)的內核,相當于操作系統(tǒng)到硬件設備的接口,把硬件設備功能告訴操作系統(tǒng),并且也將操作系統(tǒng)的指令傳達給硬件設備。操作系統(tǒng)通過驅動程序這個接口可以控制硬件設備的工作,假如某硬件設備的驅動程序未能正確安裝,便不能正常工作。驅動程序的安裝是將一小塊代碼添加到操作系統(tǒng)中,其中包含有關設備信息等等信息數(shù)據(jù)。有了這些信息,操作系統(tǒng)就可以與硬件設備進行通信。
鑒于安全性,實驗性、項目開發(fā)等原因,當前仍有大量的服務器不會接入互聯(lián)網(wǎng)來進行工作。在這種情況下,服務器中外插pcie設備的驅動更新就會比較麻煩。
手動更新驅動時,首先要確定當前系統(tǒng)下驅動版本是否為最新,還需要確定所用服務器機型,linux系統(tǒng)的release等。如果系統(tǒng)還有多張外插卡的話,人員所耗費的人力會成倍的增加。
技術實現(xiàn)要素:
針對上述不足,本發(fā)明提供了一種自動更新linux系統(tǒng)所有外插卡設備驅動的方法,其能夠自動更新當前l(fā)inux系統(tǒng)所有外插卡設備的驅動版本,以達到節(jié)省測試時間和人力的目的。
本發(fā)明解決其技術問題采取的技術方案是:
本發(fā)明提供的一種自動更新linux系統(tǒng)所有外插卡設備驅動的方法,其特征是,首先提取系統(tǒng)信息并更新系統(tǒng)驅動版本庫,然后判斷當前驅動版本是否為最新,最后確定當前機型及os版本并進行驅動程序升級。
進一步地,所述系統(tǒng)信息通過shell腳本進行提取,所述系統(tǒng)驅動版本庫采用python語言建立,當前驅動版本是否為最新采用python語言判斷,所述驅動版本采用shell腳本進行確定當前機型及os版本并進行升級。
進一步地,所述方法包括以下具體步驟:
1)檢測當前外插卡信息和驅動模塊信息;
2)確定當前系統(tǒng)驅動版本信息與對應驅動版本庫驅動信息并判斷是否進行驅動最新;
3)根據(jù)機型、os版本、外插卡信息選擇對應的最新驅動程序更新已安裝驅動程序。
進一步地,所述步驟1)包括以下具體步驟:
11)獲取外插卡信息與pci插槽的對應列表;
12)獲取每個外插卡信息;
13)獲取pci設備總線信息;
14)獲取每個外插卡對應的pci插槽的pci編號和驅動模塊信息;
15)獲取每個外插卡的當前驅動版本信息和最新驅動版本信息并存儲到系統(tǒng)驅動版本庫。
進一步地,所述步驟2)包括以下具體步驟:
21)獲取外插卡的當前驅動版本;
22)從當前驅動版本信息中提取機型、os版本和驅動類型參數(shù);
23)查詢系統(tǒng)驅動版本庫中該外插卡對應的最新驅動版本;
24)判斷當前驅動版本的版本號與最新驅動版本的版本號的大小,如果當前驅動版本低于最新驅動版本則確定該外插卡驅動需要升級并轉入下一步;如果當前驅動版本高于最新驅動版本則將系統(tǒng)驅動版本庫中該外插卡對應的最新驅動版本更新為當前驅動版本;
25)獲取該外插卡對應的最新驅動程序。
進一步地,所述步驟3)包括以下具體步驟:
31)檢測linux系統(tǒng)的機型、os類型和os版本號;
32)下載外插卡對應的最新驅動程序;
33)執(zhí)行自動安裝腳本進行更新外插卡最新驅動程序。
進一步地,所述系統(tǒng)驅動版本庫包括linux系統(tǒng)的機型、os類型、os版本號和外插卡驅動模塊,所述os類型包括但不限于redhat、centos、suse和ubuntu中的一種或多種,所述外插卡驅動模塊包括但不限于igb、ixgb、qla2xxx和lpfc中的一種或多種。
本發(fā)明提供的另一種自動更新linux系統(tǒng)所有外插卡設備驅動的方法,其特征是,進行更新外插卡設備驅動前需要進行系統(tǒng)驅動版本庫設計和驅動包安裝包存儲結構設計,所述方法包括以下步驟:
1)為每個驅動程序編寫自動安裝shell腳本;
2)掃描外插卡設備并檢測驅動模塊;
3)獲取當前驅動版本和最新驅動版本;
4)如果當前驅動版本低于最新驅動版本則從系統(tǒng)驅動版本庫中選擇最新驅動程序并進行自動安裝,否則直接進入下一步;
5)如果所有外插卡設備檢測完成則進入下一步,否則轉入步驟2)繼續(xù)檢測其它外插卡設備;
6)完成所有外插卡設備驅動更新,并重啟系統(tǒng)。
進一步地,所述系統(tǒng)驅動版本庫包括linux系統(tǒng)的機型、os類型、os版本號和外插卡驅動模塊,所述os類型包括但不限于redhat、centos、suse和ubuntu中的一種或多種,所述外插卡驅動模塊包括但不限于igb、ixgb、qla2xxx和lpfc中的一種或多種。
進一步地,所述掃描外插卡設備并檢測驅動模塊的過程包括以下具體步驟:
11)獲取外插卡信息與pci插槽的對應列表;
12)獲取每個外插卡信息;
13)獲取pci設備總線信息;
14)獲取每個外插卡對應的pci插槽的pci編號和驅動模塊信息;
15)獲取每個外插卡的當前驅動版本信息和最新驅動版本信息并存儲到系統(tǒng)驅動版本庫;
所述獲取當前驅動版本和最新驅動版本的過程包括以下具體步驟:
21)獲取外插卡的當前驅動版本;
22)從當前驅動版本信息中提取機型、os版本和驅動類型參數(shù);
23)查詢系統(tǒng)驅動版本庫中該外插卡對應的最新驅動版本;
所述選擇最新驅動程序并進行自動安裝的過程包括以下步驟:
31)檢測linux系統(tǒng)的機型、os類型和os版本號;
32)下載外插卡對應的最新驅動程序;
33)執(zhí)行自動安裝腳本進行更新外插卡最新驅動程序。
本發(fā)明的有益效果是:本發(fā)明通過python與shell之間的相互調用,盡量精簡程序結構,避免命令重復運行。它通過shell提取系統(tǒng)信息,并用python進行處理。用python建立系統(tǒng)驅動版本庫,以及判斷當前驅動版本是否為最新,最后利用shell腳本實現(xiàn)確定當前機型及os版本,實現(xiàn)驅動自動化升級。
本發(fā)明利用shell和python語言實現(xiàn)了自動更新linux系統(tǒng)下驅動模塊版本,不僅操作簡單,自動化程度高,實用性較強,而且能夠節(jié)省大量人力,極大地提高了人員工作效率以及服務器利用率,適用于當前所有版本linux系統(tǒng)。
本發(fā)明自動更新當前l(fā)inux系統(tǒng)的驅動版本,節(jié)省測試時間和人力。一次性建立驅動版本庫,之后只需要更新版本庫文件,無需手動系統(tǒng)下更新。本發(fā)明能自動檢測當前pcie插槽上的外插設備及其類型,自動識別機器型號及l(fā)inuxosrelease,若外插卡驅動版本不是最新,會自動將其更新至版本庫中的最新版本。
附圖說明
下面結合說明書附圖對本發(fā)明進行說明。
圖1為本發(fā)明實施例1的方法流程圖;
圖2為本發(fā)明獲取外插卡驅動信息的流程圖;
圖3為本發(fā)明檢測當前驅動是否需要更新的流程圖;
圖4為本發(fā)明進行驅動程序升級的流程圖;
圖5為本發(fā)明的系統(tǒng)驅動版本庫的框架示意圖;
圖6為本發(fā)明實施例2的方法流程圖。
具體實施方式
為能清楚說明本方案的技術特點,下面通過具體實施方式,并結合其附圖,對本發(fā)明進行詳細闡述。下文的公開提供了許多不同的實施例或例子用來實現(xiàn)本發(fā)明的不同結構。為了簡化本發(fā)明的公開,下文中對特定例子的部件和設置進行描述。此外,本發(fā)明可以在不同例子中重復參考數(shù)字和/或字母。這種重復是為了簡化和清楚的目的,其本身不指示所討論各種實施例和/或設置之間的關系。應當注意,在附圖中所圖示的部件不一定按比例繪制。本發(fā)明省略了對公知組件和處理技術及工藝的描述以避免不必要地限制本發(fā)明。
實施例1
如圖1所示,本發(fā)明的一種自動更新linux系統(tǒng)所有外插卡設備驅動的方法,它首先提取系統(tǒng)信息并更新系統(tǒng)驅動版本庫,然后判斷當前驅動版本是否為最新,最后確定當前機型及os版本并進行驅動程序升級。進一步地,所述系統(tǒng)信息通過shell腳本進行提取,所述系統(tǒng)驅動版本庫采用python語言建立,當前驅動版本是否為最新采用python語言判斷,所述驅動版本采用shell腳本進行確定當前機型及os版本并進行升級。
進一步地,所述方法包括以下具體步驟:
1)檢測當前外插卡信息和驅動模塊信息。如圖2所示,所述步驟1)包括以下具體步驟:
11)獲取外插卡信息與pci插槽的對應列表;
12)獲取每個外插卡信息;
13)獲取pci設備總線信息;
14)獲取每個外插卡對應的pci插槽的pci編號和驅動模塊信息;
15)獲取每個外插卡的當前驅動版本信息和最新驅動版本信息并存儲到系統(tǒng)驅動版本庫。
2)確定當前系統(tǒng)驅動版本信息與對應驅動版本庫驅動信息并判斷是否進行驅動最新。如圖3所示,所述步驟2)包括以下具體步驟:
21)獲取外插卡的當前驅動版本;
22)從當前驅動版本信息中提取機型、os版本和驅動類型參數(shù);
23)查詢系統(tǒng)驅動版本庫中該外插卡對應的最新驅動版本;
24)判斷當前驅動版本的版本號與最新驅動版本的版本號的大小,如果當前驅動版本低于最新驅動版本則確定該外插卡驅動需要升級并轉入下一步;如果當前驅動版本高于最新驅動版本則將系統(tǒng)驅動版本庫中該外插卡對應的最新驅動版本更新為當前驅動版本;
25)獲取該外插卡對應的最新驅動程序。
3)根據(jù)機型、os版本、外插卡信息選擇對應的最新驅動程序更新已安裝驅動程序。如圖4所示,
所述步驟3)包括以下具體步驟:
31)檢測linux系統(tǒng)的機型、os類型和os版本號;
32)下載外插卡對應的最新驅動程序;
33)執(zhí)行自動安裝腳本進行更新外插卡最新驅動程序。
進一步地,如圖5所示,所述系統(tǒng)驅動版本庫包括linux系統(tǒng)的機型、os類型、os版本號和外插卡驅動模塊,所述os類型包括但不限于redhat、centos、suse和ubuntu中的一種或多種,所述外插卡驅動模塊包括但不限于igb、ixgb、qla2xxx和lpfc中的一種或多種。
本發(fā)明的實施例主要分為三部分:1)自動檢測當前外插卡信息,驅動模塊信息;2)確定當前系統(tǒng)驅動版本信息與對應驅動版本庫驅動信息;3)根據(jù)機型、os版本、外插卡信息選擇對應驅動進行安裝。本發(fā)明的部分代碼如下。
1)自動檢測當前外插卡信息,驅動模塊信息;
此腳本將pcie信息與驅動版本號對應起來,獲取外插卡所需的驅動模塊。
2)自動檢測當前外插卡信息,驅動模塊信息;
此部分模塊用python語言完成。首先,version_request.py腳本來確定版本庫中驅動最新版本號,然后用driver_compare.py腳本來對比驅動版本信息,確認驅動是否需要升級。
實施例2
如圖6所示,本發(fā)明提供的另一種自動更新linux系統(tǒng)所有外插卡設備驅動的方法,它在進行更新外插卡設備驅動前需要進行系統(tǒng)驅動版本庫設計和驅動包安裝包存儲結構設計,所述方法包括以下步驟:
1)為每個驅動程序編寫自動安裝shell腳本;
2)掃描外插卡設備并檢測驅動模塊;
3)獲取當前驅動版本和最新驅動版本;
4)如果當前驅動版本低于最新驅動版本則從系統(tǒng)驅動版本庫中選擇最新驅動程序并進行自動安裝,否則直接進入下一步;
5)如果所有外插卡設備檢測完成則進入下一步,否則轉入步驟2)繼續(xù)檢測其它外插卡設備;
6)完成所有外插卡設備驅動更新,并重啟系統(tǒng)。
進一步地,如圖5所示,所述系統(tǒng)驅動版本庫包括linux系統(tǒng)的機型、os類型、os版本號和外插卡驅動模塊,所述os類型包括但不限于redhat、centos、suse和ubuntu中的一種或多種,所述外插卡驅動模塊包括但不限于igb、ixgb、qla2xxx和lpfc中的一種或多種。
本發(fā)明實施例2的具體操作步驟及實現(xiàn)過程如下:
1)完成驅動版本庫的設計,本發(fā)明中用python字典作為版本庫的框架,如圖5所示,
具體結構體現(xiàn)在python字典中如下,自動提取相應版本方法:
2)完成驅動包安裝包存儲結構設計,與驅動版本庫的結構基本一致。
3)為每個特定的驅動包編寫自動化安裝shell腳本。
4)執(zhí)行auto_update.sh,程序調用driver_version.py檢測最新驅動版本,以及調用driver_compare查看當前驅動是否為最新:
(1)判斷當前驅動版本是否為最新版本:
(2)判斷當前驅動版本是否超過版本庫中驅動版本:
5)當版本需要更新時,輸入yes;程序會自動調用driver_select.sh腳本,確定當前系統(tǒng)類型,os版本,并選擇需要升級的模塊驅動進行安裝
6)驅動全部更新完畢,系統(tǒng)建議reboot。
本發(fā)明檢測當前外插pcie設備及驅動模塊版本信息,并將驅動版本與數(shù)據(jù)庫進行對比,若驅動版本不為最新,則更新驅動;如果驅動版本是最新,則不進行處理。對每張外插卡進行迭代操作。更新完所有外插卡后重啟系統(tǒng)即可。
本發(fā)明基于shell和python語言進行自動更新linux系統(tǒng)下驅動模塊版本,適用于當前所有版本linux系統(tǒng)。
以上所述只是本發(fā)明的優(yōu)選實施方式,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也被視為本發(fā)明的保護范圍。