狐狸 发表于 2003-12-10 10:33:17

请教DriveStatusError BadCRC问题

我的系统启动后,会经常显示如下信息:

hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }

请教诸位,这是怎么回事?如何解决?

cnhnln 发表于 2003-12-10 21:36:59

是不是硬盘快完蛋了

hongewuyan 发表于 2003-12-10 22:13:21

前天编译2.6-test11内核,见到有个选项的说明大致是如果经常有这个提示的话,要将该选项编译进去……只是不记得是哪个选项了。

不过我遇到过一段时间这个提示,当时是用rh9,装在一个老的15G昆腾硬盘上……没有多久,硬盘就挂了……

狐狸 发表于 2003-12-11 11:12:48

我Kao! :shock::shock::shock: 我不会这么惨吧!!!这块硬盘挂了,可买不起第二块了!!!
救命呀~~~谁有高招,能尽量长时间的苟延残喘?

cnhnln 发表于 2003-12-11 12:17:47

看样子好像是DMA有问题

什么系统?什么硬盘?用多久了?什么时候出现的?有没有进行过特别的操作?自己编译的内核?config贴上来看看

樱家冢 发表于 2003-12-12 12:04:54

hdparm -X68 /dev/hda
试试看。

狐狸 发表于 2003-12-12 16:18:47

从启动时就开始了。
log(dmesg文件,不知 cnhnln 说的 config 指什么,所以就贴这个)内容如下:
Linux version 2.6.0-test9_0.10 ([email protected]) (gcc version 3.3.1) #1 Wed Nov 5 13:52:37 JST 2003

............

VFS: Disk quotas dquot_6.5.1
Initializing Cryptographic API
Activating ISA DMA hang workarounds.

............

RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
VP_IDE: IDE controller at PCI slot 0000:00:07.1
VP_IDE: chipset revision 16
VP_IDE: not 100% native mode: will probe irqs later
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
VP_IDE: VIA vt82c596b (rev 23) IDE UDMA66 controller on pci0000:00:07.1
    ide0: BM-DMA at 0xe000-0xe007, BIOS settings: hda:DMA, hdb:DMA
    ide1: BM-DMA at 0xe008-0xe00f, BIOS settings: hdc:DMA, hdd:DMA

............

RAMDISK: Compressed image found at block 0
VFS: Mounted root (ext2 filesystem).
kjournald starting.Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
VFS: Mounted root (ext3 filesystem) readonly.
Trying to move old root to /initrd ... okay
Freeing unused kernel memory: 308k freed
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
Adding 136512k swap on /dev/hda6.Priority:-1 extents:1
drivers/usb/core/usb.c: registered new driver usbfs
drivers/usb/core/usb.c: registered new driver hub
drivers/usb/host/uhci-hcd.c: USB Universal Host Controller Interface driver v2.1
PCI: Found IRQ 10 for device 0000:00:07.2
uhci_hcd 0000:00:07.2: UHCI Host Controller
uhci_hcd 0000:00:07.2: irq 10, io base 0000e400
uhci_hcd 0000:00:07.2: new USB bus registered, assigned bus number 1
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
input: ImPS/2 Logitech Wheel Mouse on isa0060/serio1
hub 1-0:1.0: new USB device on port 1, assigned address 2
hub 1-0:1.0: new USB device on port 2, assigned address 3
EXT3 FS on hda3, internal journal
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
kjournald starting.Commit interval 5 seconds

最后补充一点,不仅在Turbo,在magic里也如此。其他未尝试,我一直就用这两OS。

樱家冢说的 hdparm 命令,不大了解,help又看不懂,能解释一下吗?对启动时就发生的这种现象,怎么办?命令放在哪里?

cnhnln 发表于 2003-12-12 18:39:51

turbo的官方内核应该是test5吧。你自己编译的test9?
把你别编译内核用的config的文件贴上来,关键是IDE设置的那一段。
芯片组是VIA vt82c596b?好老的板子。他就只支持DMA66。你的hda那一块硬盘是什么?是不是支持DMA100的?如果你的第一块硬盘支持DMA100的话,在BIOS里把它降低到UDMA4试试

suligan 发表于 2003-12-13 14:51:41

应该是主板的问题吧,我也有过这种情况,不久后主板就坏了,换了一块主板后就没有这个问题了,可能是主板的DMA输入输出有问题,我也不知道了,装一个XP或2000看看,启动偶尔有问题的话应该就是主板的原因了。想确认的话可以格一下硬盘,能正常格式又无坏道或坏道少那应可确定为主板问题。

狐狸 发表于 2003-12-16 13:34:30

感谢诸位援手。
硬盘我是不敢格的,大量数据可丢不起!:-) 不过,看了大家的帖子,实在不放心,买了光盘,把重要数据备份了。
受樱家冢和cnhnln二位的启发,同时参考了http://faq.xteamlinux.com.cn/fom-serve/cache/148.html上的帖子,现在索性 hdparm -d0 dev/hda 了。   :cry:   眼不见,心不烦,呵呵!现在想问大家的是,怎样让系统默认 useing_dma = 0 (off) 呢?

cnhnln 发表于 2003-12-16 14:34:26

我问的问题你都不回答,那就没法帮你了。
我觉得是你的硬盘比主板新,主板没法支持更高DMA的硬盘所致

樱家冢 发表于 2003-12-16 15:09:49

我觉得只是你的系统默认打开DMA100而实际只支持到DMA66,所以我的那条命令
hdparm -X68 /dev/hda
可以把你的降到DMA66,不行的话用
hdparm -X66 /dev/hda
降到DMA33。

狐狸 发表于 2003-12-18 15:53:37

芯片组是VIA vt82c596b?好老的板子。他就只支持DMA66。你的hda那一块硬盘是什么?是不是支持DMA100的?如果你的第一块硬盘支持DMA100的话,在BIOS里把它降低到UDMA4试试

我问的问题你都不回答,那就没法帮你了。
我觉得是你的硬盘比主板新,主板没法支持更高DMA的硬盘所致

谢谢 cnhnln 这么热情,您说的很对。我也好像看明白"VP_IDE: VIA vt82c596b (rev 23) IDE UDMA66 controller on pci0000:00:07.1"的意思是我的这块板子(Gigabyte GA-6VXE7+)只支持到UDMA66,我的hda是希捷的ST320413A (7ED0TE4R),在Windows中检测结果是:
    ATA 设备属性:
      型号 ID            ST320413A
      序列号               7ED0TE4R
      修订版               3.54
      参数               38792 柱面, 16 磁头, 63 扇区每轨道, 512 字节每扇区
      LBA 扇区             39102336
      缓冲器               1 MB
      多扇区               16
      ECC 字节             0
      最大 PIO 传输模式    PIO 4
      最大 UDMA 传输模式   UDMA 5 (ATA-100)
      当前 UDMA 传输模式   UDMA 4 (ATA-66)
      未格式化容量         19093 MB


我觉得只是你的系统默认打开DMA100而实际只支持到DMA66,所以我的那条命令
hdparm -X68 /dev/hda
可以把你的降到DMA66,不行的话用
hdparm -X66 /dev/hda
降到DMA33。

遵照 樱家冢 的办法。在/etc/rc.d/rc.sysinit文件中找到这些内容:

# Turn on harddisk optimization
if [ -f /etc/sysconfig/harddisks ]&& [ -x /sbin/hdparm ]; then
    . /etc/sysconfig/harddisks
    HDFLAGS="-q"
    if [ -n "$MULTIPLE_IO" ]; then
      HDFLAGS="$HDFLAGS -m$MULTIPLE_IO"
    fi
    if [ -n "$USE_DMA" ]; then
      HDFLAGS="$HDFLAGS -d$USE_DMA"
    fi
    if [ -n "$PIO_MODE" ]; then
      HDFLAGS="$HDFLAGS -p$PIO_MODE"
    fi
    if [ -n "$EIDE_32BIT" ]; then
      HDFLAGS="$HDFLAGS -c$EIDE_32BIT"
    fi
    if [ -n "$LOOKAHEAD" ]; then
      HDFLAGS="$HDFLAGS -A$LOOKAHEAD"
    fi
    if [ -n "$EXTRA_PARAMS" ]; then
      HDFLAGS="$HDFLAGS $EXTRA_PARAMS"
    fi
    if [ -n "$HDFLAGS" ]; then
      for i in a b c d e f g h ; do
            if [ -e "/proc/ide/hd$i/media" ] ; then
                hdmedia=`cat /proc/ide/hd$i/media`
                if [ "$hdmedia" = "disk" ]; then
                        action "Setting hard drive parameters for hd$i: "/sbin/hdparm $HDFLAGS /dev/hd$i
                fi
            fi
      done
    fi
fi

可惜水平有限,不敢擅改,于是就在后面加上:
/sbin/hdparm-X66 /dev/hda
重新启动,问题依旧! :cry: :cry::cry:

然后改为/sbin/hdparm-X66 /dev/hda
重新启动后:
............
RAMDISK: Compressed image found at block 0
VFS: Mounted root (ext2 filesystem).
EXT3-fs: INFO: recovery required on readonly filesystem.
EXT3-fs: write access will be enabled during recovery.
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
............
hda: dma_intr: status=0x51 { DriveReady SeekComplete Error }
hda: dma_intr: error=0x84 { DriveStatusError BadCRC }
kjournald starting.Commit interval 5 seconds
EXT3-fs: hda3: orphan cleanup on readonly fs
ext3_orphan_cleanup: deleting unreferenced inode 342116
EXT3-fs: hda3: 1 orphan inode deleted
EXT3-fs: recovery complete.
EXT3-fs: mounted filesystem with ordered data mode.
VFS: Mounted root (ext3 filesystem) readonly.

不过,系统运转中,出错信息看不见了。
呼-- 总算可以喘口气了,可以稍微放下心了。

cnhnln 发表于 2003-12-18 16:23:04

不要“您”,受不起,呵呵。直接称呼“你”就行了

/sbin/hdparm-X66 /dev/hda
重新启动,问题依旧! :cry: :cry::cry:

然后改为/sbin/hdparm-X66 /dev/hda
重新启动后:
............
你那两个命令似乎一样
在BIOS里把它降低到UDMA4试试,或者找找西捷有没有能降低DMA设置的工具

狐狸 发表于 2003-12-18 16:49:32

不好意思,打字比较笨拙,粘贴的,忘了改。 :oops::oops::oops: 事实上,后一条命令是/sbin/hdparm -X33/dev/hda。

称呼“您”是对您的仗义援手表示感谢和尊敬嘛。 :-)

我的BIOS属性:
BIOS 类型      Award Modular
Award BIOS 类型   Award Modular BIOS v4.51PG
Award BIOS 信息   GA-6VXE7+ F5d L
系统 BIOS 日期   10/06/00

水平太差,不知道在那里设置这方面内容! :oops::oops::oops:
页: [1] 2
查看完整版本: 请教DriveStatusError BadCRC问题