当前位置:Linux教程 - Linux - 如何使用DMA66的硬盘

如何使用DMA66的硬盘

可能好多人都开始使用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等.哪位有经验写写