转载请注明原文出处!

【声明】

使用本文提供的方法设置ACHI而对硬件造成的损失,本人不承担任何责任!!

(理论上是没什么问题的,还是声明下的好:-|)

====================================================================================================================================

【问题】

我的本子是Dell XPS M1210(南桥是ICH7-M),BIOS经升级到了最新的A08。

但是BIOS还是没有修改磁盘运行模式的选项(IDE与AHCI的切换选项),所以我的硬盘一直跑在IDE Mode。执行 lspci -nn 会看到:

00:1f.2 SATA controller [0106]: Intel Corporation 82801GBM/GHM (ICH7-M Family) SATA Controller [IDE mode] [8086:27c4] (rev 01)

【方案】

事实ICH7-M的磁盘控制器是支持AHCI模式的,也就是说需要自己动手解决这个问题。

方案就是根据ICH7的Datasheet第12.1.33章节关于磁盘控制器的描述在Linux内核中添加代码对其寄存器进行设置。

然后重新编译内核,并使用新内核启动系统就OK了。

【代码】

1、本代码是我很久前从国外一个网站搞到的,但是在我这里无法成功设置。昨天又想起这个事了就翻了翻ICH7的Datasheet并修改了这段代码。

2、我在3.9-rc3内核测试成功的,其实只要追加这段代码后内核能编译过就能正常使用。

3、不需要添加内核启动参数 quirk_ich_force_ahci。(作者的原代码为了安全需要添加这个内核启动参数才会生效)

4、将本代码追加到driver/pci/quirks.c文件底部即可。

/*

* ICH7 force AHCI mode

* 2013-04-03, Niu Chenguang

*

* 将本代码追加到driver/pci/quirks.c文件底部即可

* ----------------------------------------------------------------------------

* 原作者注释

* ----------------------------------------------------------------------------

* Force ICH7/8/9 into AHCI mode. This is needed because some

* BIOSes do not make AHCI-mode operation available to the user.

* As the Intel documentation states that the OS should not carry

* out the operation - the user must force this on the kernel

* commandline using quirk_ich_force_ahci

*

* As this quirk gets called whilst the PCI subsystem is

* walking the PCI bus, we declare this quirk against the LPC

* (device 00:1f.0), so that we can frob 00:1f.2 before the PCI

* code has scanned it.

* Note: the pci id might change due to this (e.g. from 27c4 to 27c5)

* ----------------------------------------------------------------------------

*

*/

static void ich789_force_ahci_mode(struct pci_dev *pdev)

{

u8 amrval;

const int ich89_address_map_reg = 0x90;

/* ICH7 datasheet section 12.1.33 */

if (!pci_bus_read_config_byte(pdev->bus, PCI_DEVFN(PCI_SLOT(pdev->devfn), 2),

ich89_address_map_reg, &amrval)) {

if (amrval & (BIT(6) | BIT(7))) {

dev_printk(KERN_DEBUG, &pdev->dev,

"ICH7/8/9 SATA controller not in IDE mode. Not modifying.\n");

return;

}

/* Non-combined */

amrval &= ~BIT(0);

amrval &= ~BIT(1);

/* AHCI mode */

amrval |= BIT(6);

amrval &= ~BIT(7);

pci_bus_write_config_byte(pdev->bus, PCI_DEVFN(PCI_SLOT(pdev->devfn), 2),

ich89_address_map_reg, amrval);

dev_printk(KERN_DEBUG, &pdev->dev, "Forced ICH7/8/9 mode PIIX->AHCI\n");

}

}

/* ICH7-M */

DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x27b9, ich789_force_ahci_mode);

成功后执行 lspci -nn 会看到控制器ID会从27c4变为27c5:

00:1f.2 SATA controller [0106]: Intel Corporation 82801GBM/GHM (ICH7-M Family) SATA Controller [AHCI mode] [8086:27c5] (rev 01)

linux硬盘设置成AHCI,Linux下设置ICH7-M的磁盘控制器为AHCI模式相关推荐

  1. Linux脚本编程:sudo命令下设置定时任务

    Linux脚本编程:sudo命令下设置定时任务 题目要求 编程平台 本地 云端 代码实现 基本思路 解决脚本 其他说明 题目要求 让普通用户使用sudo命令编写一个脚本,脚本内容为:设置定时任务,每隔 ...

  2. 如何把Word英文默认字体设置成Times NewRoman汉字设置为宋体

    如何把Word英文默认字体设置成Times NewRoman汉字设置为宋体 https://jingyan.baidu.com/article/e75057f2ddef91ebc91a89f4.htm ...

  3. 什么尼康没有把取景线条设置成九宫格,而是设置成16格,详解

    http://forum.xitek.com/thread-1008606-1-1-1.html 看到一个神贴,详细解释了为什么尼康没有吧取景线条设置成九宫格,而是设置成16格.在此,向鹿鸣幽谷 表示 ...

  4. linux时间如何设置成英文单词,linux时间命令date、clock、hwclock

    一,date命令 1,date命令使用"+"来传递参数.常用参数如下: %Y表示年.%m表示月.%H表示小时.%M表示分钟.%S表示秒.%s表示linux时间戳的秒数. 很好记,% ...

  5. linux硬盘保护卡,保护卡下安装Linux

    保护卡下安装Linux 发布时间:2008-03-14 00:29:17来源:红联作者:roina 实验室的机房需要安装Linux,所以不得不请技术人员来把原来的保护卡卸载,重新规划硬盘分区,设置保护 ...

  6. 在win7中访问删除linux硬盘分区,win7和linux双系统下,删除linux不能启动win7的解决方法...

    win7和linux双系统下,删除linux不能启动win7的解决方法 (6页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 双系统下删除 ...

  7. w10如何共享计算机硬盘,电脑在win10系统下设置局域网内磁盘共享的方法

    通常只要处于同一局域网中的电脑,我们可以将电脑中的磁盘设置其共享属性,那么大家就都可以方该磁盘中的内容,实现资源共享.下面是学习啦小编为大家整理的关于电脑在win10系统下设置局域网内磁盘共享的方法, ...

  8. linux硬盘系统安装教程图解,Linux操作系统添加安装新硬盘的方法图解

    安装完Linux后,用过一段时间,觉得硬盘不够用了,要加装一块新硬盘,该怎么办呢?笔者这里首先要提醒大家的是,在Linux中安装第2块硬盘需要注意:如果是IDE硬盘,注意主.从盘的设置:如果是SCSI ...

  9. linux硬盘安装redhat,RedHat Linux硬盘安装RedHat Linux 9

    RedHat Linux 9.0的三个文件: ①shrike-i386-disc1.iso: ②shrike-i386-disc2.iso; ③shrike-i386-disc3.iso. 使用RAR ...

  10. redhat linux 硬盘挂载方法!!!,Redhat Linux 硬盘挂载方法!!!

    Redhat Linux 硬盘挂载方法!!! 硬盘挂载操作工作步骤: 1.先查看目前机器上有几块硬盘,查看命令有两种: 命令1:# fdisk –l 命令2:# dmesg | grep sd 其中: ...

最新文章

  1. [转]VSTO Office二次开发RibbonX代码结构
  2. 微信十年,张小龙下一步要干什么?
  3. 后台返回的数据换行显示
  4. 《线程管理:线程基本操作》
  5. Tyvj 1176 火焰巨魔的惆怅
  6. arcmap导出地图快捷键_谷歌点坐标导出为excel表格
  7. mint linux更新内核,如何在Ubuntu/Linux Mint中安装最新Linux 5.2.5内核
  8. python getattr_深入浅出Python模块
  9. linux内核 eql.c,Linux Kernel EQL_GETMASTRCFG请求内核信息泄露漏洞
  10. QT 笔记6 | Qt网络编程
  11. Mixly 二次开发 自定义库 OLED
  12. 网站运维:git工具-常用命令(5):创建远程仓库、git remote 查看远程仓库、添加远程仓库、git push 推送到远程仓库、git pull 从远程仓库拉取
  13. 【Python_NLP】gensim与DTM
  14. Edge浏览器无法登录Microsoft账户
  15. C++几个常用的排序
  16. win10修改保存的git用户名和密码
  17. 磁盘列阵 Raid
  18. 自动驾驶系统进阶与项目实战(四)自动驾驶高精度地图构建中的三维场景识别和闭环检测
  19. 【第三方登录】第三方登录 Part1 —— QQ登录(2016-09最新版)
  20. 华为服务器磁盘没显示不出来,服务器磁盘读取不了

热门文章

  1. 根据sql语句生成数据库模型pdm文件
  2. 悬置位移matlab,matlab悬置解耦计算工具
  3. 360安全卫士2014最新版 v9.7.0.1002x 官方免费版
  4. Jackson -- ObjectMapper
  5. Android 11.0 禁用导航栏Recent键(任务键)
  6. 绩效考核中如何填写自我评价?(上)
  7. 使用redis创建自己的分布式锁
  8. Codeforces_723_D
  9. 初次选购阿里云服务器教程(实例规格、网络规划、成本估算等)
  10. (翻译)NLog配置文件(续)