如何使用DMA66的硬碟

火星人 @ 2014-03-12 , reply:0


  可能好多人都開始使用DMA66的硬碟了,可是2.2的內核好象還不支持.
剛才在論壇里找了一圈,好象還沒有很完整的文章.
怎麼辦呢?難道就用不了了嗎?不是,我們要做幾個小修改和一些配製的工作,
就能讓您的DMA66正常運轉起來.
這裡我介紹一下我自己的方法.(在去年11月我在freesoft的新聞組上貼過.)
這是我認為最簡單的方法:

我的環境:
ABIT BP6 + DUAL Celeron 366 OC 550 + IBM Diskstar 13.6G + 128M RAM
Slackware 7.0 + Kernel 2.2.13 upgraded to 2.2.16
lilo安裝在Linux根分區

準備:
主板或DMA66驅動卡說明書.
啟動光碟和/或軟盤.裝好DMA66的硬碟線.
從自己主板說明書里找出您的主板所用的DMA66晶元的牌號.我的是HPT 366.
記下您DMA66信號線安裝的槽位和您硬碟的主從跳線.
到下面聯接先下載DMA66的補丁.(下面聯接是最新的2.2.16的補丁)
http://www.kernel.org/pub/linux/kernel/people/hedrick/ide-2.2.16/ide.2.2.16.patch.bz2
請注意下載的補丁應該和您用的內核版本一致.如果版本不一致打補丁,編譯出錯可不要怪我.

(當然必須先要裝上內核源碼,發現好多其他版本預設沒有內核源碼.Slackware沒這事,
到時候編譯說沒有源碼可別又找我.)
以及一張好的乾淨的軟盤.

步驟:
1,把硬碟掛在普通DMA33口上安裝系統,注意要裝上內核源碼.
如果已經在DMA33口上將就的兄弟可以跳過.
2,安裝,配置完成後以root登陸,按照下面命令操作:
#cd /usr/src/
# bunzip2 "/the/location/you/put/your/patch/downloaded/"ide.2.2.xx.patch.bz2
# patch -p0 < ide.2.2.xx.patch
#cd linux
# make distclean
# make config (或者xconfig 或者menuconfig,看愛好定,我用xconfig)
# make dep
# make bzImage
# make modules
# make modules_install
這裡的make config 一步要到 Block Device里把你的DMA66驅動晶元的條目選上.
make modules 和 make modules_install 兩步可做可不做,其他的編譯選項按照
您以前用的就可以了.如果不會編譯內核,請閱讀Kernel-Howto.
3,安裝新內核
編譯完內核,我的做法是製作兩個可引導鏡像以防萬一.步驟如下:
(這時候您在/usr/src/linux目錄下)
#cd arch/i386/boot
#cp /bzImage /vmlinux2216-dma66
#echo "image=/vmlinux2216-dma66" >> /etc/lilo.conf
#echo "root=/dev/hdxx" >> /etc/lilo.conf (這裡具體 xx 是什麼請先看看您原來的/etc/fstab
里根分區"/"的設置.詳細信息看下面步驟.)
#echo "label=linux-dma66" >> /etc/lilo.conf
#echo "read-only" >>/etc/lilo.conf
#lilo
請注意">>",大於號有兩個.否則如果lilo.conf沒了別怪我.這兒實際上是修改/etc/lilo.conf增加一
個引導條目,

熟悉這些的您可以用自己熟悉的方法做,我這裡是想偷懶.

4,把準備好的乾淨,優質軟盤放入,做一張引導盤.
# makebootdisk /vmlinux2216-dma66
注意一定要lilo引導盤,因為我們要輸入內核參數.

5,然後您可以重新啟動,在lilo:提示符下鍵入:linux-dma66測試一下新內核.可以用dmsg看看有沒有
新設備(您DMA66晶元的信息.)

如果急性子可以跳過.
6,最好還用軟盤引導試驗一下,在lilo:提示符下鍵入:root=/dev/hdxx的參數(這個參數和上面hdxx
里的一樣.)

一切正常則繼續.出錯請參考錯誤分析.
7,拿出你準備的硬碟參數,修改/etc/fstab,把相應的設備該成新的設備文件,比如我情況是這樣的:

我的硬碟原來是IDE1主盤,準備重新放到DMA66口一的主盤,
原來的IDE設備的設備文件是:/dev/hda ,/dev/hdb, /dev/hdc, /dev/hdd,
新的DMA66的設備文件名為:/dev/hde,/dev/hdf,/dev/hdg/dev/hdh...
這樣我要把fstab里的linux 根分區/dev/hda4改成:/dev/hde4, 對應其他分區也要
照此修改.只需要改設備名,分區不變.也就是說,類似這樣:
  /dev/hda4 --> /dev/hde4
/dev/hda7 --> /dev/hde7
...
 注意你要根據你用的配置修改.(參考你的硬碟跳線和所用的DMA66口.)

8,修改完成,存檔退出,請注意一定要非常認真地檢查您的配置,一定要和您
硬體的構型一致.

9,反覆檢查無誤后,關閉計算機.

10,把原來的普通硬碟線換下,插上DMA66硬碟線.

11,重新啟動計算機,先進入BIOS,把啟動順序設置為:(在我的 BP6 機器上 )

 A,C,D

12,插入上面做的引導盤,用軟盤引導,在lilo:提示符上輸入:vmlinuz root=/dev/hdxx
(這裡的設備文件名hdxx為上面對應根分區修改後的文件名.按照您的實際情況輸入.好象不用
vmlinuz?大家糾正一下.)
13,引導以root進入系統,修改/etc/lilo.conf,把所有對應設備文件名按照上面修改/etc/fstab的根
分區的設備名的方法修改.

改成hdxx.
14,運行lilo,
#lilo
15,重新啟動系統,再次進入BIOS,把引導順序改成象下面這樣:

EXT,C,A
這裡EXT是DMA66,在另一個BIOS選項里可選,根據您的BIOS做設置.
保存退出.

16,取出軟盤用硬碟引導.在lilo:提示符下輸入 linux-dma66(您取的鏡象名)
這時候應該能夠順利進入系統.如果順利進入系統,那麼恭喜您,您正在使用DMA66.
這樣您可以用hdparm或者其他軟體測試一下看看有什麼變化.

17,最後還要用MAKEDEV腳本升級一下/dev下的設備文件.
#MAKEDEV -v update

錯誤分析:
可能出現的錯誤:
1,出現"kernel panic: can't found root at ..."
之類的錯誤信息.很可能您的/etc/fstab沒有改對.用軟盤傳參數引導(上面有例子)
或者關機后把硬碟重新掛到原來IDE口上,重新啟動(從硬碟上或者從光軟盤上),mount
根分區,進入根分區修改/etc/fstab.
然後再試驗.
2,lilo說找不到系統內核鏡象.您肯定忘記修改/etc/lilo.conf了,或者修改完成後忘記運行一下lilo
把新參數裝載入引導鏡象了.

解決方法是用軟盤傳遞參數引導並進入系統,修改/etc/lilo.conf然後運行lilo,再重新啟動系統.這
里的傳參方法和修改方法和

前面一樣.
3,軟盤引導不了,檢查一下您的軟盤質量.
4,重起后控制台漢字沒了.您可能用了Turbo,Xteam,BP這些中文版吧.我不知道怎樣處理,還是發信
給他們讓他們給做一

個可以用的升級包吧.一句話,這個中文問題我解決不了,因為我試驗的結果是這些版本一重新編譯內
核,控制台中文就沒了.

不過X裡面還有,還是可以接受的.



說明:
1,我不是現場寫這篇東西的,而且所用的配製可能也和您不同,請根據您的具體情況稍做修改.如果有
錯誤之處請指正,歡迎增加任何

註解或補充或修正尤其是傳參數的部分,我用的slackware
光碟啟動時有許多傳內核參數的提示,而且可以直接做引導盤,很好用(所以很喜歡Slackware).可我
發現好多別的版本光碟引導只能安裝,(或者是我不會用?).而且本人不對因此文導致的任何損失負
責.

2,DMA66並沒有對性能有多大的提升,至少我測試的結果如此.我安裝的目的是我覺得可以多用幾塊硬碟
在上面.

3,比較討厭的是這樣的非正式補丁會影響以後的內核升級,每次都要重新從最初的版本把補釘全部重新
打一遍,我從2.2.13

到2.2.16都是把原來的/usr/src/linux刪除,從光碟把內核源碼重新安裝(2.2.13)然後從13開始打補
丁到16.最後再打IDE的補丁.

4,在linuxnewbie.org上面用DMA66做關鍵字可以查到一篇文章,寫得很好.那篇文章說,理論上說可以
不用把硬碟線拔來插去,基本原理是通過內核參數令普通IDE驅動可以找到DMA66的晶元並使用之(當做
DMA33通道).這樣可以先當做DMA33在DMA66通道上安裝,然後再升級內核並打開DMA66的開關.但是我
的試驗結果是它可以找到DMA66的晶元,但是卻不能找到hde...等設備,好象要手工製做一個啟動盤,手
工裝配(mount)設備文件.這裡最好是能夠做一張帶驅動的安裝引導盤,然後用光碟等介質安裝.在
slackware的站點上有最新的支持DMA66的啟動文件鏡象.可以在下面站點找到:

http://www.slackware.com

5,2.4的內核直接支持DMA66,各位也可以不打補丁,直接用2.4的(不過目前還沒有完成).但是還是有
切換內核時插拔硬碟線的問題.

雜談:
還有很多方法可以實現,比如如果有兩塊硬碟,一塊是DMA33,那麼可以把引導鏡象放在那塊硬碟上.

根分區放在DMA66的硬碟上.用 Loadlin.exe等.哪位有經驗寫寫





[火星人 via ] 如何使用DMA66的硬碟已經有271次圍觀

http://www.coctec.com/docs/service/show-post-73884.html