是否有一个 Linux 工具可以检查硬件板的状态?
在 Windows 中,您有一个硬件对话框,其中显示诸如“您的硬件工作正常”之类的行(我没有英文版本,所以字符串实际上可能不同,但您明白了)。
我想在 Linux 上检查同样的情况。请注意,我知道安装了什么硬件,但我需要知道驱动程序是否已正确加载并且没有错误。
由于我们在硬件完全相同的不同 PC 上安装 Linux,因此我们需要一种快速的方法来了解安装后一切是否正常。因此,如果某个板(例如以太网卡)由于某种原因无法正常工作,我希望收到通知。
我知道我可以使用lsmod
,dmesg
但那不是很“快”。也许有一些神奇的文件可以/proc
告诉我(每个板)给定板的所有功能都正常工作?
具体来说,我需要测试以太网板和串行线路状态。
(串行线路驱动程序直接编译到内核中,因此lsmod
在这里不太方便)
答案1
对于以太网接口,您可以使用ethtool
。
# ethtool -t eth0 online
The test result is PASS
The test extra info:
nvram test (online) 0
link test (online) 0
register test (offline) 0
memory test (offline) 0
loopback test (offline) 0
interrupt test (offline) 0
这将运行自检,但取决于硬件和驱动程序是否支持。您也可以直接获取其状态。
# ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
MDI-X: Unknown
Supports Wake-on: g
Wake-on: g
Current message level: 0x000000ff (255)
drv probe link timer ifdown ifup rx_err tx_err
Link detected: yes
这会告诉您连接参数和链接状态。
对于串行线路,udev 规则将加载驱动程序,如果存在设备节点,它将注册它们。/dev/ttyS? 的存在本身就表明那里有硬件,并且它通过了健全性测试。Linux 驱动程序会进行测试,如果未通过,则不会注册该设备。但要真正了解它是否有效,需要使用环回插头进行测试。
哦,您还可以使用 ssetserial
命令来获取有关串行端口的信息。
# setserial /dev/ttyS0
/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
该信息的存在表明您拥有该串行端口硬件。
答案2
测试绝对是正确的答案。任何硬件都可能出现故障。此外,它经常会以一种看起来还在工作的方式出现故障,直到你尝试使用它。除了某些情况(例如高负载)外,它可能工作正常。考虑到这一点,很明显 Windows 说“此硬件工作正常”是没有用的。
如果您管理的是一套中等规模的硬件,那么进行某种形式的磨合是必不可少的。运行几个小时的 CPU 密集型任务,将大量数据写入磁盘并读回以确保其正确无误,用流量使网卡饱和并检查是否丢失数据包。这是唯一可以确保的方法。
此外,一定要在机器的整个使用寿命期间运行类似(但可能规模较小)的检查。使用 nagios 之类的工具,这样一旦出现问题,您就会收到警报。硬件经常会出故障。