无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 5135|回复: 25
打印 上一主题 下一主题

测试外部命令 ahci(初步工作,仅仅用于测试)

[复制链接]
跳转到指定楼层
1#
发表于 2015-9-4 19:02:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 不点 于 2015-9-13 23:48 编辑

编写这条外部命令的目的是为将来开发 ahci 硬盘驱动而作准备的。目前只是初步工作。大家闲来无事的时候,可以顺便测试一下。

测试的步骤如下(请严格按顺序执行以下测试步骤):

1、首先将 ahci 这个程序文件放在内存中,方法(举例)如下:
      map   (hd0,4)/ahci   (rd)
为什么要把 ahci 这个程序文件放在内存中呢?这是因为,一旦执行了 ahci 命令,那么硬盘就可能无法访问了,因此也就无法进行后续的测试了。放在内存中的好处就是,无需访问硬盘,而直接执行内存中的 ahci 程序。

2、刚才那条 map 命令已经把 ahci 放在内存了,因此,这时,(rd)+1 的内容就是 ahci 这个程序文件的内容。好了,现在执行以下命令:
      (rd)+1   --init
注意,执行完了 (rd)+1   --init 之后,就不要以任何方式再去碰你的硬盘了,一旦访问硬盘,机器就可能要处于假死状态。比如,不可以用 ls 命令,也不可以用 geometry 命令,以及 root、find 等等,这些命令都不要使用了。如果此时(在 --init 之后)已经死机,说明测试是失败的,请报告失败的机器信息(无需执行后续的测试步骤了)。

3、如果一切正常(即没有死机),现在请执行
      (rd)+1   --test
这条命令会把硬盘 MBR 扇区读到内存 0x60000 处。这条命令有可能导致死机。如果死机,请结束测试,报告机器详情。

4、如果没有死机,现在请执行
      cat   --hex   (md)0x300+1
这条命令会显示出你的硬盘 MBR 扇区内容。它实际上只是显示内存 0x60000 处的内容。如果上一条命令能够成功读取硬盘 MBR 扇区,那么此时所显示的也就是 MBR 的内容。如果没能显示出硬盘 MBR 的内容,请报告机器详情。

5、现在请执行
      (rd)+1   --stop
这条命令的目的是卸载 ahci 的环境,并尝试恢复原先的 BIOS 环境。如果死机,请结束测试,报告机器详情。

6、如果坚持到现在还没死机,请执行 ls、root、geometry、find 等命令,看看这些命令能否访问你的本地硬盘。如果没有问题,则表示本次测试完全成功。请结束测试,报告机器品牌和型号。如果在访问硬盘时死机,请结束测试,报告机器详情。



ahci.zip

23.6 KB, 下载次数: 20, 下载积分: 无忧币 -2

外部命令,含源代码。仅供测试之用。

ahci.zip

23.99 KB, 下载次数: 11, 下载积分: 无忧币 -2

更新:有少量改进,有兴趣者可以试试。

ahci.c.gz

20.23 KB, 下载次数: 3, 下载积分: 无忧币 -2

这个源代码是用来学习 asm + C 混合编程的(注意:它不是硬盘驱动)。

2#
发表于 2015-9-4 19:21:11 | 只看该作者
本帖最后由 q8155128 于 2015-9-4 21:00 编辑

不点大师,俺等哈试试。。。

测试好后,给大师汇报。。。


图来了。。。。

嘿嘿。。。大师又有的忙了啊。。

















第6步忘记测试了,再去试试。。。
大师等等哈。。

点评

感谢q兄辛苦测试。正如 pseudo 所说,出现了打字错误。另外特别提醒一下,如果内置命令名字写错,则会到硬盘上查找同名的外部命令,此时也在访问硬盘,因此就会死机。  发表于 2015-9-4 21:26
一开始命令就错了,是(rd)+1 --init非(rd)+1 init,受此影响,后面的测试废了。  发表于 2015-9-4 21:07
回复

使用道具 举报

3#
发表于 2015-9-4 20:29:16 | 只看该作者
本帖最后由 土著007 于 2015-9-4 21:50 编辑


到第三步就死了,拍了特写给大师瞧瞧





Acer的笔记本,换0.4.5测试也是这个结果


点评

换版本试试。。。不同的版本有不同的惊喜。。。  发表于 2015-9-4 23:54
回复

使用道具 举报

4#
发表于 2015-9-4 20:58:25 | 只看该作者
      硬件配置都不写的吗。

点评

过了1年时间了,哎。。天上1天地上1年啊。。。怎么也没看见你自己的硬件配置发上来啊啊???  发表于 2015-9-5 10:50
硬件配置怎么能随便告诉别人呢???万一别人说俺电脑是垃圾。。。  发表于 2015-9-4 21:32
回复

使用道具 举报

5#
 楼主| 发表于 2015-9-4 20:58:52 | 只看该作者
我注意到你是用 0.4.6 来测试的。不知换用 0.4.5 会不会成功?

另外,机器品牌是什么? implemented ports=5, 比较多(我的机器只有 1)。

准备再编译一个调试版,看看死机原因是啥。

回复

使用道具 举报

6#
发表于 2015-9-4 21:14:07 | 只看该作者
没有完全退出。执行 geometry 死机。
(rd)+1 --stop
Try to restore BIOS handoff. BH=0
Try to force BIOS ownership. BH=0
BIOS could not take ownership. Try yo reset HBA. BH=0
reset hba ...
GLC:0
GLC:2

点评

我的联想笔记本能够恢复 bios 环境,可惜你的 dell 机器不行。看来不能指望这个退出功能了。  发表于 2015-9-4 21:32
回复

使用道具 举报

7#
发表于 2015-9-4 21:35:26 | 只看该作者
本帖最后由 q8155128 于 2015-9-4 21:38 编辑

不点大师。。
俺的命令打字错了??

刚刚俺对比了一下,没发现打字错误啊。。。



发现了。。。。。

是第2步  init前面少了2个--

俺再测试一下吧。。。不好意思哈。。。
回复

使用道具 举报

8#
发表于 2015-9-4 22:20:51 | 只看该作者
本帖最后由 q8155128 于 2015-9-4 22:23 编辑

不点大师,俺又测试了一次。。。

不好意思耽误大师很多宝贵的时间。。。

下面是图。。。

应该没有命令打字错误了,要是还有,俺就去自杀算了。。。























find命令启动WIN764成功。。。。。
回复

使用道具 举报

9#
 楼主| 发表于 2015-9-4 23:22:23 | 只看该作者
q 兄的硬盘,好像不是 ahci 接口的硬盘。所以,ahci 的驱动不能成功。也因为驱动不成功,所以 BIOS 没有受到破坏,因此整个过程都能够以 BIOS 的方式访问硬盘。

--init 的时候,最后显示“不能检测到 AHCI 设备”。这说明是失败的。

ports implemented=ff=255,比 ports=0x20 还多,好像不正确。这可能说明了,硬盘不是 ahci 规格的。


当然,也有可能是我的程序有毛病。这是从 grub2 移植过来的程序,其可靠性还需要验证。

回复

使用道具 举报

10#
发表于 2015-9-5 00:43:42 | 只看该作者
本帖最后由 q8155128 于 2015-9-5 13:23 编辑

。。。。俺测试的时候是没有调动主板硬盘工作模式,主板一直是ahci模式。。。硬盘是SATA接口的。。。

俺的硬盘是160G的。。。会不会是太老了???    在SATA模式下工作,但是没在ahci模式下???

附主板图:

删除了。。。。


系统和软件图:







我看了2楼的,设备管理器里面有AHCI字样。。。。

大师看了图后,有什么问题没有??

顺便问下大师还有哪些地方可以判断出系统里面硬盘开启AHCI模式啦???




点评

硬盘必须要有NCQ(Native Command Queuing )的功能才能支持AHCI!  详情 回复 发表于 2015-9-5 02:01
回复

使用道具 举报

11#
 楼主| 发表于 2015-9-5 01:35:35 | 只看该作者
q 兄的机器确实是 ahci 的。可能是我引进并修改的程序有毛病。程序是从 grub2 移植的,它在我的机器上有毛病,我好不容易把他改好了,在我的机器上已经正常了。没想到在大家的机器上验证,却遇到各种失败。

我得出粗略的结论:grub2 里面的 ahci 硬盘驱动还很不完善。假如要等待它完善起来以便能够应付大多数情况,那恐怕是猴年马月、遥遥无期。

暂时先告一段落,朋友们。

好在这个驱动能够在我的机器上成功,在 yaya 的机器上也基本是成功的。那么接下来,我尝试把它改造成一个放在扩展内存的 int13 处理程序,这个实践的过程,或许能够对 yaya 的 USB 驱动的改进与完善有所帮助。

点评

非常感谢不点大师。。。我以前一直觉得硬盘是肯定是SATA的AHCI模式的,因为从大文件复制速度方面可以看出来,文件复制速度最小50M以上,一般平均80M左右,最大100多M都有。。。现在不自信了,所以想问问大师,耽误大  详情 回复 发表于 2015-9-5 10:57
回复

使用道具 举报

12#
发表于 2015-9-5 02:01:07 | 只看该作者
q8155128 发表于 2015-9-5 00:43
。。。。俺测试的时候是没有调动主板硬盘工作模式,主板一直是ahci模式。。。硬盘是SATA接口的。。。

俺 ...

硬盘必须要有NCQ(Native Command Queuing )的功能才能支持AHCI!

点评

这个NCQ功能提醒俺了,谢谢  发表于 2015-9-5 10:58
回复

使用道具 举报

13#
发表于 2015-9-5 10:28:31 | 只看该作者
**啊,又捣鼓新玩意了...
回复

使用道具 举报

14#
发表于 2015-9-5 10:57:45 | 只看该作者
不点 发表于 2015-9-5 01:35
q 兄的机器确实是 ahci 的。可能是我引进并修改的程序有毛病。程序是从 grub2 移植的,它在我的机器上有毛 ...

非常感谢不点大师。。。我以前一直觉得硬盘是肯定是SATA的AHCI模式的,因为从大文件复制速度方面可以看出来,文件复制速度最小50M以上,一般平均80M左右,最大100多M都有。。。现在不自信了,所以想问问大师,耽误大师的宝贵时间帮俺看看。。。大师忙哈,俺不打扰大师了哈。。。
回复

使用道具 举报

15#
发表于 2015-9-5 11:24:11 | 只看该作者
(rd)+1   --stop 后没有死机,但是之后执行root、find死机:

电脑型号:华硕A43S
硬件信息:


测试的G4D版本:0.4.5c  0.4.6a 两个版本测试结果一样。


0.4.5c  测试




0.4.6a测试





点评

+1 h77主板,i5 ,gtx660  详情 回复 发表于 2015-9-5 15:55
回复

使用道具 举报

16#
 楼主| 发表于 2015-9-5 11:50:29 | 只看该作者
本帖最后由 不点 于 2015-9-5 12:17 编辑

smine 的测试结果,与 yaya 的结果一样,都是成功驱动 ahci 硬盘,而最后无法卸载 ahci 造成的污染,使得后来在执行 BIOS int13 时死机。

保证驱动成功,就已经很难了,因此,不再奢望能够干净卸载 ahci 驱动所造成的污染。

看来我太幸运了,是几年前买的 lenovo ideapad S205 上网本。不知其他型号的联想电脑是否也能成功去除 ahci 的污染?


我知道 Intel 的 AHCI 规范里面,就故意禁止由 ahci 模式返回到 BIOS 模式。这是明文禁止(参看 Intel achi 的 pdf 文档):一旦进入 ahci 模式,必须重启才能进入 BIOS 模式。所以,我们也不可能在不重启的情况下回到正常的 BIOS 环境。至于说联想电脑的特殊情况,可能是个例外(或许联想在个别型号上没有遵守 Intel 的规定)。

我想明白了另外一个问题:我不懂硬件编程,这些驱动究竟要怎么去修改,那不是我力所能及的事情。那是别人的事情。我现在只做一项工作即可:把驱动成功放在扩展内存顶部,让实模式的 int13 处理程序能够调用即可。至于说驱动本身的修改完善,那是别人的事情了。

回复

使用道具 举报

17#
发表于 2015-9-5 15:55:38 | 只看该作者
smine 发表于 2015-9-5 11:24
(rd)+1   --stop 后没有死机,但是之后执行root、find死机:

电脑型号:华硕A43S

+1
h77主板,i5 ,gtx660

点评

你的和他的一样?  详情 回复 发表于 2015-9-5 16:20
回复

使用道具 举报

18#
发表于 2015-9-5 16:20:16 | 只看该作者
qqbab 发表于 2015-9-5 15:55
+1
h77主板,i5 ,gtx660

你的和他的一样?

点评

是,stop之前都正常 find等就死机了。  详情 回复 发表于 2015-9-5 16:26
回复

使用道具 举报

19#
发表于 2015-9-5 16:26:43 | 只看该作者
q8155128 发表于 2015-9-5 16:20
你的和他的一样?

是,stop之前都正常
find等就死机了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-12-9 21:26

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表