Chinaunix首页 | 论坛 | 博客
  • 博客访问: 588991
  • 博文数量: 50
  • 博客积分: 4764
  • 博客等级: 上校
  • 技术积分: 597
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-18 09:00
个人简介

资深IT码农,擅长Linux、C/C++、bash

文章分类

全部博文(50)

文章存档

2015年(17)

2014年(2)

2011年(7)

2010年(4)

2009年(20)

分类: LINUX

2011-05-16 16:30:35

将硬盘模式从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。

测试了一下,果然快多了!

阅读(9189) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~