【工程師筆記】第四期:老版Linux不用愁 ——使用DKMS輕松制作RAID卡驅動
做技術的朋友可能有過類似這樣的感覺——每天都會遇到新的問題,或者學到新的知識。然而一個人的時間和精力畢竟有限,不是所有的崗位都能做到總是親力親為,每人最擅長的領域也各不相同。為了使工程師自己踩過的坑、那些實用的心得體會也能給大家?guī)韼椭?,把?jīng)驗記錄和分享出來就顯得尤為可貴,這就是我們開設《工程師筆記》專欄的目的。
在我們的技術支持工作中,經(jīng)常遇到有些客戶需要在我們的新款服務器上安裝老版本Linux操作系統(tǒng),而老版本Linux沒有內置新硬件的驅動文件,不能直接安裝。有些客戶會通過虛擬機來安裝老版本Linux。
然而有些客戶因種種原因,Linux不能運行在虛擬機上,需要直接運行在物理服務器硬件上,這就帶來了很多麻煩。本文我們就探討,在這種情況下如何制作驅動,來安裝系統(tǒng)。
安裝Linux操作系統(tǒng)時,***的困難往往在RAID卡驅動,這個RAID卡驅動是在安裝Linux時需要加載的,沒有它就不能識別出硬盤,Linux也將無法安裝下去。在操作系統(tǒng)自動識別不到RAID卡時,需要事先找到對應的驅動,才能成功安裝Linux。而硬件廠商往往不再提供老版本Linux的驅動,這時需要利用RAID卡廠商提供的source code(源代碼)自己制作RAID卡驅動。
在戴爾官網(wǎng)PowerEdge R730服務器的驅動下載頁面,PERC 9系列RAID卡除了Red Hat Enterprise Linux 7之外,只提供了6.5、6.6和6.7版本的下載。而這并不代表較早的版本都無法支持。
制作RAID卡驅動有很多種方法。一種是把驅動加入到內核里編譯,這個方法也有局限性——制作驅動過程中一旦報錯,不容易找到出錯原因,大大增加了制作難度。而且如果需要升級內核,需要重新編譯RAID卡驅動。
這里介紹另一種方法,可以使用DKMS工具方便的制作出RAID卡驅動。
DKMS (Dynamic Kernel Module Support) 是Dell的一個open source開源項目,主頁在http://linux.dell.com/files/dkms/
DKMS目的是讓依賴內核的模塊源碼獨立出來,以便升級內核的時候可以容易地重新建立。Linux模塊和內核是有依賴關系的,如果遇到內核版本的升級和變動,以前編譯的驅動模塊是無法繼續(xù)使用的,需要手動再編譯一遍。這就是Dell創(chuàng)建的DKMS項目的意義所在。DKMS可以幫我們維護內核外的這些驅動程序,在內核版本變動之后可以自動重新生成新的模塊。另DKMS也提供了強大的功能,可以利用驅動的源代碼來編譯出相應版本的驅動。正因為DKMS工具強大的功能,很多廠商都會發(fā)布DKMS版本驅動。
DKMS的使用流程可以看下圖:
這里我們就以老版本RedHat Linux為例,用DKMS來制作PERC H730 RAID卡驅動。
首先在一臺虛擬機上安裝好需要安裝的Linux系統(tǒng),以及相關模塊。
然后到LSI(現(xiàn)為Avago)網(wǎng)站下載到H730對應的MegaRAID SAS 9361-8i的Linux驅動。解壓后,在dkms-1目錄下有一個megaraid_sas-06.806.08.00-1.dkms.tar.gz文件。把該文件解壓后,里面有dkms-2.0.21.1-1.noarch.rpm和megaraid_sas-06.806.08.00-1dkms.noarch.rpm這2個文件。
1.安裝dkms:
#rpm –ivh dkms-2.0.21.1-1.noarch.rpm
2.安裝RAID卡驅動:
# rpm -ivh megaraid_sas-06.806.08.00-1dkms.noarch.rpm
3. DKMS會把驅動模塊加入到目錄樹下,把驅動源代碼copy到相應位置,并生成相應的驅動模塊文件。也可以單獨使用DKMS生成驅動模塊文件。
# dkms build -m megaraid_sas -v 06.806.08.00 -k 2.6.32-220.el6.x86_64 -a x86_64
4. ***可以使用DKMS生成Redhat下的驅動映像文件:
# dkms mkdriverdisk -d redhat -m megaraid_sas -v 06.806.08.00 -k 2.6.32-220.el6.x86_64 -a x86_64
這樣就使用DKMS工具很容易的制作出RAID卡驅動映像文件。
5. 另還可以使用DKMS創(chuàng)建出rpm安裝包,對linux不熟悉的人,可以很方便的使用做好的網(wǎng)卡或其他的驅動或軟件rpm包安裝。
# dkms mkrpm -m megaraid_sas -v 06.806.08.00
✉
不知您看完本文有什么感想,是否有幫助呢?如果您對《工程師筆記》欄目有任何的意見或者建議,都可以在文章下面留言,以便我們將來能夠更好地為讀者服務。
相關內容導讀
↓↓↓
【工程師筆記】***期:小議Linux下磁盤亂序問題
【工程師筆記】第二期:巧用iDRAC批量修改PXE網(wǎng)卡啟動順序
【工程師筆記】第三期:如何評估應用的存儲性能需求?