在 Linux 中,如何查找 CMOS 电池是否工作?

在 Linux 中,如何查找 CMOS 电池是否工作?

我想通过编程确定 CMOS 电池是否正常工作。在我的 Linux C++ 程序中,如果 CMOS 电池不存在或不工作,我想连接到互联网并更新系统时间。

答案1

我相信如果发生校验和错误,BIOS 会在 CMOS RAM 的某处设置一个位。但这因主板制造商而异。

有一件事可能会有用......

  • 在关机时转储 CMOS RAM -dd if=/dev/nvram of=cmos_ram.bin可能会这样做。
  • 通电后即可检索。
  • 与上次关机时保存的文件进行比较。如果不匹配,则 CMOS 已被更改或损坏。系统时间更新也是如此。

老实说,由于许多 CMOS 时钟的漂移和不准确性,您应该在每次启动时更新系统时间。

答案2

吻!

始终使用 NTP 来校正时间(ntpdate 然后是 ntpd)。

这样,您就始终拥有正确的时间。这就是没有 CMOS 或内部时钟的计算机所做的。

无需构建任何其他程序(它们已经存在)也无需检查 CMOS(有它会很好,但不是必需的)

答案3

这可能是可行的,但可能不会跨平台(因为您想在 PC 和 BeagleBone 上使用它,而它们的硬件有很大差异)。

运行 ntp,无论电池状态如何,它都会始终保持您的时间正确。

相关内容