将硬盘模式从IDE切换到AHCI
公司有一个开发机,上安装的是CentOS 5.5,编译的时候发现特别慢。经过检查发现,硬盘是IDE模式,并且没有开启DMA。
尝试用hdparm开启DMA居然失败!该机器的硬盘是SATA,不知为什么会使用IDE模式,看了一下,BIOS设置,里面有提供AHCI模式。
我决定把硬盘模式切换到AHCI。
检查了一下,/etc/fstab,发现,里面都是使用的label来mount 文件,所以,应该只需要重新生成initrd,加载ahci模块既可以。
重新生成initrd的方法有两种,一种是通过mkinitrd这个工具来自动生成,命令格式如下:
#> mkinitrd --preload ahci initrd_1.img 2.6.18-194.el5
通过 --preload来指定要加载ahci模块。
另外一种是手动方式:
(1) 解开系统原来的initrd image:
#> mkdir initrd
#> cd initrd
#> zcat /boot/initrd_2.6.18-194.el5.img | cpio -i
(2) 编辑 init 文件,增加下面两行:
echo "Loading ahci.ko module"
insmod /lib/ahci.ko
注意,这两行要加载 libata模块的后面,因为,ahci模块依赖于libata模块,所以,先加载libata模块,后加载ahci模块。
(3) 添加 ahci.ko 模块。
拷贝 /lib/modules/2.6.18-194.el5/kernel/drivers/ata/ahci.ko 到 initrd/lib/ 目录。
(4) 重新打包initrd
#> find . | cpio -o -H newc | gzip -9 > ../initrd_ahci.img
最后,将生成的initrd image拷贝到/boot/目录,并编辑/boot/grub.conf文件增加一个启动项。
title CentOS (2.6.18-194.el5) AHCI
root (hd0,0)
kernel /boot/vmlinuz-2.6.18-194.el5 ro root=LABEL=/
initrd /boot/initrd_ahci.img
重新启动系统,进入BIOS,修改硬盘模式为AHCI,在grub菜单中,选择我们新增加的“CentOS (2.6.18-194.el5) AHCI”项,进入系统。
此时,硬盘工作在AHCI模式,device node变为/dev/sdx。
测试了一下,果然快多了!
阅读(9321) | 评论(0) | 转发(1) |