当我不确定问题是硬件问题还是软件问题时,我该如何诊断?

我遇到了一些问题。我不确定是硬件问题还是软件问题,但我想确定问题的原因以便修复它。我该如何做?

4个回答

这很容易。拿一个U盘。我建议32 GB,但其他大小也可以。在这个U盘上备份所有重要的东西,因为我们将在其中放入一个Live CD。
从这里开始有几种可能的解决方案。根据问题的性质选择正确的路径。
创建Ubuntu LiveCD

这不是一个独立的故障排除步骤,但我多次提到它,所以我单独列出来。

Ubuntu网站下载最新(不是LTS,也不是实验性的,而是最新且受支持的)Ubuntu桌面版。
验证您的下载。虽然不是必须的,但我建议这样做,特别是如果您的互联网连接不太好。按照Ubuntu Wiki上的步骤进行操作。
接下来,您需要将ISO写入闪存驱动器。您可以使用dd命令,但由于容易出错,我建议使用balenaEtcher(与其无关,但我喜欢它)。下载Linux 64位版本。打开终端,并导航到下载的.zip文件所在的位置(可能是~/Downloads)。使用unzip balena-etcher-electron-X.Y.Z-linux-x64.zip解压缩.zip文件。使用chmod +x balenaEtcher-X.Y.Z-x64.AppImage命令使.zip文件中的AppImage可执行。使用./balenaEtcher-X.Y.Z-x64.AppImage命令运行它。
选择ISO文件、闪存驱动器,然后点击Flash!按钮。等待操作完成,然后重新启动计算机,进入闪存驱动器。

我觉得内存/内存条有问题

  1. 下载MemTest86
  2. 打开balenaEtcher。选择从步骤#1下载的ISO文件和USB闪存驱动器。这是你最后一次备份闪存驱动器上的任何数据的机会,否则它将永远消失。点击Flash!按钮。等待完成并进行验证。

注意:如果您使用的是戴尔硬件,则可以跳过上述步骤。戴尔笔记本电脑已默认包含MemTest86。

  1. 重新启动计算机,并引导到USB闪存驱动器(在启动菜单中选择闪存驱动器)。
  2. 运行内存测试。如果测试失败,则表示存在内存问题。更换有问题的内存条。

我认为我的磁盘出现了问题

您可以从现场CD(请参阅上文)或主系统中进行此操作。对于HDD,请检查SMART数据。有关如何解释这些数字,请参阅此处。如果您有SSD,您仍然可以尝试像HDD一样检查SMART数据,但您也可以检查磨损指示器(衡量SSD的磨损程度)。有关详细信息,请参阅此答案

为什么XYZ硬件无法正常工作?

首先,请检查明显的问题(是否插入电源)?不要在整个过程中才意识到将USB驱动器插入以太网端口。是的,这种情况确实会发生。

做完了吗?好的。用最新版本的Ubuntu创建一个Ubuntu Live CD。不是LTS,而是最新发布的版本。请参考上面的说明。启动它,然后选择“试用Ubuntu”。现在,尝试重现问题或查看是否“正常工作”。如果可以,太棒了。备份后升级到该版本的Ubuntu,应该就可以解决问题了。完成。如果不能,上网搜索看看是否有其他人遇到类似问题。如果没有,检查dmesg的输出,看看是否有相关信息。此外,您还可以尝试使用最新的Ubuntu测试版制作一个Live CD,但那不稳定,所以除非您知道自己在做什么,否则我不建议这样做。当然,随时在这里提问。记得提供您的操作系统详细信息(版本等)以及您尝试过的方法。并不是所有东西都适用于Ubuntu,所以您可能运气不好。

让我们在聊天中继续这个讨论。 - cocomac

硬盘

要检查硬盘是否存在故障,打开磁盘应用程序,在左侧选择硬盘,然后点击右上角的图标,选择SMART数据自检,然后点击开始自检并选择扩展测试。该测试需要几个小时运行,并将提供大量与硬盘健康相关的信息。

Screenshot



所有的值都从100开始,逐渐降至0。术语“老化”和“预故障”是正常的。请注意整体评估以及数值接近故障点的程度,通常为0。

Memtest86

如@cocomac在他的回答中所写的,你可以使用Memtest86来测试你的内存,然而他在回答中只提到了ISO测试,没有提到memtest软件包。
你可以使用memtest软件包在运行中的操作系统中测试内存。
运行以下命令来安装它:
sudo apt install memtester 运行内存测试:
这里我们需要更进一步。运行free -h命令来识别空闲内存/未使用内存。然后运行以下命令,该命令测试6GB的内存,而其余的内存仍由系统操作系统和服务/进程使用:
sudo memtester 6G 5
这可能需要几分钟(有时候几个小时)才能完成。它比ISO memtest86更乐观。

测试CPU

您可以使用以下软件包来测试您的CPU:

sudo apt -y install stress-ng s-tui

运行该软件包:
sudo s-tui

从这里开始,使用“下键”通过按下回车键来从监视器切换到压力测试。现在观察CPU温度随着系统的CPU被测试而上升。

测试GPU

首先访问这个网站并安装基准测试工具。

点击“免费下载”按钮,并在下拉菜单中选择Linux选项。下载完成后,Downloads目录(或选择的目录)中应该有一个Unigine_Heaven-4.0.run文件。

从终端进入包含Unigine Heaven下载的文件夹。

使其可执行:

chmod +x Unigine_Heaven-4.0.run

然后可以提取应用程序:
./Unigine_Heaven-4.0.run

接下来,让我们进入新创建的目录:
cd Unigine_Heaven-4.0/

现在可以启动应用程序了:
./heaven

点击“运行”按钮开始程序。
感谢System76的支持,让我可以使用他们文章中的信息。

机器检查异常

机器检查异常是硬件故障事件,并且可以通过rasdaemon.service记录到journalctl中。在Ubuntu上,您可以通过以下方式安装:

sudo apt install rasdaemon

验证rasdaemon是否处于活动状态:
systemctl status rasdaemon

然后,在系统崩溃或使用一段时间后,查看日志。
journalctl -f -u rasdaemon

如果没有日志或者日志是空的,那么崩溃与硬件故障无关。直到发生机器检查异常(MCE),日志将保持为空。请查找“未纠正”的错误,大多数“已纠正”的错误可以忽略。如果有一致数量的“未纠正”错误,应该对硬件进行检查。

使用活动USB

首先按照Cocomac的回答创建一个活动USB:

  1. Ubuntu官网下载最新版本(不是LTS,也不是实验性的,而是最新且受支持的)的Ubuntu桌面版。

  2. 验证你的下载。虽然不是必须的,但我建议这样做,特别是如果你的网络连接不太好。按照Ubuntu Wiki上的步骤进行操作。

  3. 接下来,你需要将ISO文件写入闪存驱动器。你可以使用dd命令,但由于容易出错,我建议使用balenaEtcher(与其无关,但我喜欢它)。下载Linux 64位版本。打开终端,并导航到已下载的.zip文件所在的位置(可能是~/Downloads)。使用unzip balena-etcher-electron-X.Y.Z-linux-x64.zip解压.zip文件。使用chmod +x balenaEtcher-X.Y.Z-x64.AppImage命令使.zip文件中的AppImage可执行。使用./balenaEtcher-X.Y.Z-x64.AppImage命令运行它。

  4. 选择ISO文件和闪存驱动器,然后点击Flash!按钮。等待操作完成后,重新启动计算机,从闪存驱动器启动。

从USB启动后,点击“尝试Ubuntu”按钮。然后检查硬件是否正常工作。如果不正常,则可能存在硬件问题。

验证是否安装了正确的驱动程序。

有时默认情况下没有安装正确的驱动程序。在这种情况下,系统会使用通用驱动程序。通用驱动程序可以工作,但不能提供任何性能或仅限于硬件的功能。在这种情况下,您可能需要安装正确的驱动程序。

运行以下命令以获取设备列表:

sudo ubuntu-drivers devices

然后安装推荐的驱动程序:
sudo ubuntu-drivers autoinstall 

如果以上步骤无法下载正确的驱动程序,那么您需要手动在谷歌上搜索并找到适合您设备的驱动程序。通过执行"sudo lshw"命令,您可以获取有关供应商和设备的相关信息,并在确定正确的供应商和设备后安装相应的驱动程序。

1请解释一下为什么给了负评。 - Error404

WIFI

AP <=> Wifi接入点,路由器

邻居的AP信号强,可能会造成干扰。使用智能手机下载一个WiFi分析器(例如Wifi Analyzer),让它检测你的AP与附近可见的AP进行比较。解决速度或连接问题的一个可能方法是:确保将你的AP设置在一个固定的信道上,该信道被该应用程序定义为“好”的选择。有些AP软件在“自动”模式下切换信道时可能会出现问题,尽管它应该在自动模式下做出相同的改变。
设置问题:解决这种情况的简单方法是重置AP并重新开始。也许你在设置中更改了一些内容,然后忘记了?如果可能的话,某些AP可以保存设置...当用文本编辑器打开时,如果文件是可读的文本,请在重置之前保存设置,然后与重置后的设置文件进行比较,可能可以确定问题所在。
硬件问题:如果设备中存在损坏的电路等问题,则稍微困难一些。可以尝试以下简单的方法:验证所有电缆是否没有故障,即使是微小的划痕和弯曲也可能是损坏的可见迹象,可能会引起问题。逐个更换设备并尝试运行相关类型的公平测试。多次插拔相关连接器的所有电缆端口;如果连接器长时间未更换,可能会在连接器引脚上产生氧化,从而导致“接触电阻”——这会导致电信号衰减。如果有可见的天线,请按照上述方法进行处理:连接正常吗?有任何损坏吗?

我建议诊断问题是由硬件还是软件引起的第一步是从您用于安装Ubuntu的可启动USB中运行一个Ubuntu实时会话。如果在Ubuntu USB实时会话中问题不再出现,那么我怀疑它是由硬件问题引起的。
如果您的计算机出现冻结或崩溃,您可以进行压力测试以诱发冻结或崩溃,并生成有关系统在冻结或崩溃之前发生的情况的报告。stress-ng可以对计算机的各个子系统进行压力测试。它可以对CPU、缓存、磁盘、内存、套接字和管道I/O、调度等进行压力测试,还有更多功能。要在所有当前支持的Ubuntu版本中安装stress-ng,请打开终端并输入以下命令:
sudo apt install stress-ng

man stress-ng的结果来看: 描述:进入BIOS设置,确保系统以BIOS模式而不是UEFI模式加载。 stress-ng将以多种可选择的方式对计算机系统进行压力测试。 它旨在测试计算机的各个物理子系统以及各种操作系统内核接口。 stress-ng还具有广泛的特定于CPU的压力测试,可以进行浮点数、整数、位操作和控制流程的测试。
stress-ng最初旨在让机器工作强劲,并触发硬件问题,如热过载,以及仅在系统被严重使用时才会出现的操作系统错误。请谨慎使用stress-ng,因为其中一些测试可能会使系统在设计不良的硬件上运行过热,并且可能导致过度的系统使用,这可能很难停止。
stress-ng还可以测量测试吞吐率;这对于观察不同操作系统版本或硬件类型下的性能变化很有用,但它从来没有被设计用作精确的基准测试套件,请勿以此方式使用。
以root权限运行stress-ng会调整Linux系统上的内存设置,使得压力源在低内存情况下无法被终止,因此请明智使用。在适当的权限下,stress-ng可以允许调整ionice类别和ionice级别。同样,请谨慎使用。
您可以指定每种压力测试要启动的进程数量;指定负值或零值将选择由sysconf(_SC_NPROCESSORS_CONF)定义的可用处理器数量。

故障的RAM也可能是一个问题。故障的RAM是冻结的已知原因。要测试RAM,请在启动时从GRUB菜单中选择内存测试选项。

在计算机启动时,主板/计算机制造商的标志闪屏出现后,与BIOS一起,快速按住Shift键,这将带来一个GNU GRUB菜单屏幕。对于UEFI,请按Esc键(可能需要按几次)以进入GNU GRUB菜单屏幕。有时厂商的闪屏是Windows引导程序的一部分,所以当你启动机器时,它会直接进入GNU GRUB菜单屏幕,然后按Shift是不必要的。

memtest86+是一个16位程序,在BIOS模式下工作,但在UEFI模式下不起作用。在具有BIOS固件的计算机上,您将看到一个类似下面截图的GNU GRUB菜单屏幕。选择内存测试并按Enter

在拥有UEFI固件的计算机上,进入BIOS设置,选择“启动”选项卡,并尝试临时更改设置,使您的系统以传统模式或BIOS模式而不是UEFI模式加载。然后,您将能够从GNU GRUB菜单屏幕中选择“内存测试”。

enter image description here

在Ubuntu 22.04-22.10中,PCMemTest(sudo apt install pcmemtest)是MemTest86+的一个分支,也适用于UEFI。
独立显卡处理器也有自己的内存。独立显卡处理器上的故障内存是导致一种特殊类型的冻结的已知原因,即在播放视频或玩游戏时,整个屏幕会冻结,但音频循环会不停地重复播放,直到按住计算机电源按钮关闭计算机。
在尝试软件解决方案之后,逐个临时更换硬件组件仍然是一个选择,但有几个注意事项。请在临时更换硬件组件之前仔细阅读这些注意事项。
  1. 如果用户可以直接接触到多个内存条,您可以一次只移除一个内存条,直至找到有问题的那个。内存条应该只与相同类型的内存条进行更换(例如,只能将DDR3与DDR3更换,DDR4与DDR4更换等)。

  2. 如果您有一块已知处于良好状态的备用显卡,您可以选择更换显卡。不要随便使用任何您手头有的显卡进行更换。只能用您之前使用过的显卡来替换现有的显卡。

  3. 警告:我不建议在没有确定新组件处于良好状态的情况下更换任何现有组件。将一个已损坏的组件替换现有组件可能会损坏您的计算机。


2“Memory Test”只会在BIOS机器的GRUB屏幕上显示。 - heynnema