无忧启动论坛

标题: dd 跟 write 命令是调用BIOS的吗? [打印本页]

作者: sgw888    时间: 2011-7-7 16:22
标题: dd 跟 write 命令是调用BIOS的吗?
如题所示: dd 跟 write 命令是调用BIOS的功能来实现磁盘扇区读写的吗???

dd 跟 write 命令在读写大的LBA地址的扇区时是否安全?
作者: 不点    时间: 2011-7-7 17:01
是调用 BIOS。

grub4dos 除了依靠 BIOS 来实现磁盘访问之外,没有别的手段。

实现写盘操作的,不仅只有 dd 和 write,其它命令也有可能会有写盘操作。例如,savedefault, geometry --sync,partnew 等等。

DOS 也可能会有写盘的动作。

所有以上这些写盘,都依赖于 BIOS。如果 BIOS 没有问题,那就没有问题。如果 BIOS 有什么 bug,那就有可能出问题。

当 BIOS 不支持 LBA 的时候,有可能出问题。当 BIOS 支持 LBA 的时候,也有可能出问题。举例来说,你的程序让 BIOS 写入某个扇区,但 BIOS 阴差阳错写入了别的某个扇区,这就把这个无辜的扇区破坏了。

这是无法预防的事情。也没人报告这样的事情发生。但理论上存在这样的危险。因为已知 BIOS 存在 bug,在读扇区的时候,就已经表现出 bug 了。而假如写扇区时存在 bug,那这样的 bug,反而很难发现。比如说,它写入到某个不重要的文件上,造成了这个文件的损坏,但未造成系统问题,因此,用户不能发现这个问题。

即使写入系统文件,造成 Windows 死机,用户也不容易怀疑到 BIOS 的 bug 上面去,而通常怀疑这是病毒所为,重新安装系统,一切又恢复了正常。

---------------------

在实模式启动期间,尽量不要访问大的扇区号。把启动时所要使用的文件(NTLDR、BOOT.INI,GRLDR,MENU.LST,*.IMG,*.ISO 等等)都尽量安排在磁盘的开头。尤其是当你在实模式下写入磁盘的时候,更应该保证写入的文件处于安全范围之内。

一般来说,能够正确地读到多大的扇区号,就也能够安全地写多大的扇区号。但也不能完全保证这一点。我曾遇到一台 DELL 老机器,它支持 LBA 读盘,但不支持 LBA 写盘。写盘时,完全失败,不予写入。这当然不会造成灾难了,因此,这还算是好的呢。

尽量不要在实模式下写盘。

grub4dos 以及 DOS 都是用 BIOS 来读写磁盘的。如果能够避免,尽量避免。你可以切换到 Windows 或者 Linux 下进行写盘。Windows 和 Linux 都不使用 BIOS 来读写磁盘,而是使用系统自带的驱动程序来实现读写操作,都是在保护模式下执行读写操作的。那些驱动程序,通常认为是十分可靠的。
作者: sgw888    时间: 2011-7-8 10:36
非常感谢不点的回复,让我们又学到了很多的知识。

我之前写的GRUB4DOS批处理BOOTSECT就是使用了DD跟WRITE命令。在新机器上面,我觉得应该问题不大。但以后还是尽量避免这些危险的操作。 

但大部分情形下,我认为DD跟WRITE是安全的。
作者: ggmm888    时间: 2011-7-8 13:28
尽量安排在磁盘的开头,这句话如何实际操作?
例:8G的U盘,使用USB-zip格式时,找不到grldr文件,如何把grldr文件写在磁盘的开头?

还有,就是DVD光盘,找不到.gho文件时,因DOS不读不出2G后面的文件,把.gho镜像文件改成以A打头的.gho文件,说是先从A到Z的字母顺序搜索,这样就搜索到了,是不是这样?
例:winxp.gho改名为ainxp.gho
作者: sgw888    时间: 2011-7-8 15:31
按排在磁盘的前面,指的是你存储的时候,先存放这个文件,自然会放在前面。但是如果已经存放了别的文件,再放到前面,目前好像没有听说过有这样的磁盘整理软件。




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3