红联Linux门户
Linux帮助

一个Linux的小疑问 -- i8253 count too high! resetting

发布时间:2008-01-09 11:30:38来源:红联作者:nguin
作者:toil
新安装了一个Linux虚拟机,用的软件是Microsoft Virtual PC 2004,Linux安装上了桌面环境,当我CTRL+ALT+F1切换到tty1后,隔断时间就会出现“i8253 count too high! resetting..”不知何故,后来从百度知道查找是这样解释的:"i8253是计算机内的一个计时器芯片,当使用虚拟机或是某些笔记本安装linux的时候,系统的时间会不定期的产生一些误差,包括linux在内的很多系统都可以进行纠正这种时间上的混乱。Linux的2.4.20核心以及更高版本的核心在处理这种时间上的混乱时会同时发送一条Debug信息,这条信息就是i8253 count too high"

不知道这个回答是否正确,要是那样的话,我们有没有方法纠正这种时间上的误差呢,因为总是出现这条提示信息,确实很不爽,继续研究一下......

解决它可以有两种途径:1.关闭提示 2.消除误差
1.关闭提示
开机到grub处,按下e键,选择kernel /vmlinuz-2.4.20-8 ro root=LABEL=/ ,在末尾处“空格+single”,然后回车退出,再按b键引导进入单用户模式,在单用户模式下输入chkconfig pcmcia off,然后reboot重启就可以了
2.消除误差
Linux系统本身就已经具备了消除这种误差的功能,因为i8253 count too hight,reseting,本身就是一个Debug的回显信息,系统是如何消除这种误差的呢?虚拟的什么工作原理导致了这种误差的出现呢??难道还要研究一下虚拟机的内部结构?
待续......
文章评论

共有 2 条评论

  1. 353586539 于 2008-03-20 20:04:26发表:

    Re: i8253 count too high - how to fix in 2.4.xx kernel
    I 'solved' the problem by removing the message from the linux kernel source
    and
    compiling it again then installing the new kernel. No more messages!

    You *NEED* to have the kernel source on your virtual machine to do this.

    On 2.4.x kernel sources (assuming your linux sources is at /usr/src/linux)
    the
    file that needs editing is time.c found like this...
    root@dana2:/root$ cd /usr/src/
    root@myserver:/usr/src$ grep "i8253 count too high! resetting.." *

    which outputs:

    grep: Documentation: Is a directory
    grep: arch: Is a directory
    grep: crypto: Is a directory
    grep: drivers: Is a directory
    grep: fs: Is a directory
    grep: include: Is a directory
    grep: init: Is a directory
    grep: ipc: Is a directory
    grep: kernel: Is a directory
    grep: lib: Is a directory
    grep: mm: Is a directory
    grep: net: Is a directory
    grep: scripts: Is a directory
    arch/i386/kernel/time.c: "i8253 count too
    high! resetting..\n");

    Go edit this time.c file and it is the two lines 690/691 (for 2.4.27
    anyway). At comment
    markers around the two lines then save and build a new kernel and install.

    time.c lines 690 & 691
    -------------------------------
    /* printk(KERN_WARNING
    "i8253 count too high! resetting..\n"); */

    The line numbers may or may not be the same for other 2.4.xx kernels but it
    will be the
    same file.

    Regards

    ...Petar



    "Ben Armstrong [MSFT]" <benarm@online.microsoft.com> wrote in message
    news:uCqV10exEHA.3096@tk2msftngp13.phx.gbl...
    > The i8253 chip is part of the timing mechanism inside of a computer -
    > now - it happens that inside of virtual machines (and on a number of
    > physical laptops) time will go backwards by small amounts every now and
    > then. Most operating systems have code to support such perturbations -
    > including Linux. But for some reason in kernels 2.4.20 and later - they
    > decided to print out a debug message whenever this happens. This has
    > caused a lot of confusion for laptop users - but this message can be
    > ignored.
    > --
    > Cheers,
    > Benjamin Armstrong
    > ===============================
    > Virtual machine Program Manager
    >
    > This posting is provided "AS IS" with no warranties, and confers no
    rights.[vbcol=seagreen]
    > You assume all risk for your use.
    >
    > Chris wrote:
    大致意思是说:
    对于部分计算机(物理的)和虚拟机,其i8253芯片(一块可编程计数器)会不断的 复位 『回到之前的设置』 (go backwards),这个故障是无关紧要的,可以通过重新编译内核来解决。
    文中以2.4.27的内核为例,通过修改源代码的time.c(arch/i386/kernel/time.c)文件的
    690/691行(不同版本的位置不同,但文件相同)解决,文中将
    printk(KERN_WARNING"i8253 count too high! resetting..\n");
    一句加上了注释,解决了这个问题,(当然要重新编译一下内核).
    我用的是dsl,没有源代码,郁闷啊!~

  2. denghl 于 2008-03-18 16:41:24发表:

    期待。。。。。。