|
本帖最后由 不点 于 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 混合编程的(注意:它不是硬盘驱动)。
|