Экспресс диагностика ПК/ноутбуков без необходимости установки драйверов

Речь пойдет о x86 ПК/ноутбуках/моноблоках. О том как проверить функционирование различных подсистем ноутбука: дисплей, клавиатуру, тачпад, USB порты, сетевые карты Ethernet и WiFi, встроенные динамики, WEB-камеру, микрофон. Проверить показатели состояния АКБ, показатели S.M. A.R.T. HDD и SSD, в том числе NVMe. Проверить температуру и стабильность работы CPU и GPU под нагрузкой.

В каких случаях это может понадобится:

  • ПК/ноутбук/моноблок (новый или б/у) поставляется без ОС

  • При экспресс проверке ПК после сборки, из новых или б/у комплектующих

  • Устройство поступило в ремонт с извлеченным загрузочным SSD/HDD

  • В установленной ОС не работают одна или несколько подсистем (тачпад, звук, WiFi, WEB-камера)

  • Пароль на пользователе ОС, либо активирован BitLocker

  • Установленная ОС не загружается

Для начала нужно отметить софт для тестирования оперативной памяти. Свободный Memtest86+ GPLv2 и проприетарный PassMark MemTest86 (существует в двух версиях Free и Pro). Оба запускаются непосредственно из загрузчика или UEFI. Первый поддерживает и legacy/CSM загрузку, второй только UEFI.

Проверка дисплея, клавиатуры, тачпада

Для проверки дисплея, клавиатуры, тачпада, USB портов, сетевых карт можно воспользоваться образом актуальной версии любого из дистрибутивов Linux (из тех что поддерживают загрузку без установки в Live режиме).

Если вы имели дело с установкой ОС Windows на современные ноутбуки на платформе Intel, то наверняка заметили что тачпад не работает во время установки и требует соответствующей версии драйвера I2C шины. При этом на некоторых моделях можно проверить работу тачпада в UEFI Setup, но не во всех такой функционал предусмотрен. Тогда можно воспользоваться LiveUSB с Linux. В ядре Linux уже встроены драйвера I2C и они работают на большинстве моделей ноутбуков.

Сетевые карты, дисплей и клавиатуру также можно проверить запустив Linux с флешки. Подключить интернет, запустить WEB браузер, открыть любой из онлайн LCD тестов и затем онлайн тест клавиатуры. Например Eizo Monitor Tests и key-test.ru.

xfce4-display-settings

xfce4-display-settings

Для игровых ноутбуков желательно проверить что выставлена корректная частота обновления экрана. Встречаются дефекты LCD модулей которые не проявляются при 60Гц, но сразу видны при максимальной частоте.

Проверка USB портов и функция загрузки в оперативную память

USB порты можно проверить попытавшись загрузиться с флешки.
Просмотр списка USB устройств (в терминале) lsusb

Также можно проверить корректность определения скорости портов USB2.0/3.0 HighSpeed/SuperSpeed. Для этого нужно извлечь флешку, запустить в терминале
dmesg -Wt и затем снова вставить флешку.

Для того чтобы загрузочную флешку можно было извлекать — нужно воспользоваться функцией загрузки дистрибутива в оперативную память, например для Ubuntu дописать в загрузчике параметр запуска toram.

Это потребует достаточно оперативной памяти чтобы вместить весь файл filesystem.squashfs (чуть меньше объема всего .iso образа). Исходя из размера современных дистрибутивов для работы потребуется минимум 6Гб оперативной памяти и процесс загрузки продолжительный во времени (зависит от скорости флешки).

LiveUSB DogLinux Debian 12

Предлагаю воспользоваться специализированным LiveUSB на основе Debian и DogLinux. Проект некоммерческий и таковым останется.

DogLinux это такой конструктор для сборки минималистичного LiveCD в стиле Puppy Linux на пакетной базе Debian

Скрипт для сборки актуальной версии на основе Debian 12 Bookworm доступен на сайте forum.puppylinux.com

Используется debootstrap и несколько пакетов в собственных репозиториях на GitHub

Доступен выбор различных DE/WM, SysVinit/SystemD, live-boot и/или Initrd от Porteus

Модифицированный мной скрипт, который я использовал для сборки базовой системы 01-filesystem.squashfs также доступен на forum.puppylinux.com

Проверка WEB-камеры

В LiveUSB сборке для этого предусмотрена luvcview. Минималистичная, не зависит от GStreamer/FFmpeg. Либо можно запустить из терминала mpv /dev/video0

В других дистрибутивах можно воспользоваться тем же MPV, либо установить Guvcview или Cheese

Проверка встроенных динамиков и микрофона

Для проверки стерео динамиков запустить в терминале speaker-test -c 2 -t wav
В LiveUSB сборке для этого предусмотрен ярлык в меню приложений speaker-test.desktop
Для настройки громкости можно запустить alsamixer

Для проверки микрофона запустить в терминале arecord test.wav, произвести какие либо звуки, затем нажать Ctrl+C и запустить aplay test.wav. Если все в порядке то вы услышите запись через динамики.

Проверка сетевых карт

Просмотр списка сетевых интерфейсов с IP-адресами (в терминале) ifconfig
В обычном дистрибутиве запускать /sbin/ifconfig и /sbin/ethtool

Для проверки текущей скорости (100/1000/2500Mb/s) Ethernet подключения можно запустить в терминале ethtool eth0
Либо воспользоваться графическим nm-applet в трее — правой кнопкой мыши на значке, пункт Connection Information.

Для мониторинга доступных WiFi сетей и параметров подключения (уровень и качество сигнала, частота, канал, ширина диапазона) в LiveUSB сборке имеется wavemon

Для нагрузочного тестирования сетевых соединений можно воспользоваться iperf или iperf3

Проверка состояния АКБ

Для просмотра номинальной и оставшейся емкости АКБ можно запустить в терминале
upower -i /org/freedesktop/UPower/devices/battery_BAT1

xfce4-power-manager

xfce4-power-manager

Либо воспользоваться графическим интерфейсом — значек батареи в трее. Для того чтобы показатели были ближе к истине рекомендуется предварительно сделать полный цикл зарядить, разрядить и снова зарядить.

Проверка состояния HDD и SSD

Команды приведенные ниже потребуют запуска от root. Если будете их использовать в обычном дистрибутиве то нужно добавлять sudo в начале.

Прежде чем запускать приведенные ниже команды. Если к системе подключено несколько SATA/USB/NVMe дисков. Команда lsscsi выведет список с адресами устройств, их нужно подставлять в команды вместо /dev/sda и /dev/nvme0n1

Для проверки S.M. A.R.T. HDD и SATA SSD запустить в терминале
smartctl -s on -a /dev/sda

Для NVMe SSD запустить в терминале
nvme smart-log /dev/nvme0n1

Также для HDD и SATA SSD существует графическая утилита GSmartControl. Имеется в LiveUSB сборке и доступна в репозиториях дистрибутивов.

WHDD для оценки задержек линейного чтения секторов HDD в стиле MHDD

HDD с ошибками, запущены GSmartControl и WHDD

HDD с ошибками, запущены GSmartControl и WHDD

В LiveUSB сборку добавлены модули с проприетарной программой для мониторинга HDD/SSD Hard Disk Sentinel Linux Edition (FREE). Поддерживаются NVMe SSD.

При вызове из меню hdsentinel.desktop генерирует отчет, который открывается в браузере NetSurf
hdsentinel -html -r ~/hdsentinel && netsurf ~/hdsentinel.html

Отчет Hard Disk Sentinel о NVMe SSD

Отчет Hard Disk Sentinel о NVMe SSD

Для проверки SATA/NVMe SSD на наличие ошибок чтения можно использовать dd_rescue
dd_rescue -d /dev/sda /dev/null
dd_rescue -d /dev/nvme0n1 /dev/null

Для проверки eMMC
dd_rescue -d /dev/mmcblk0 /dev/null

Для проверки на наличие ошибок при записи можно использовать утилиту badblocks из пакета e2fsprogs (есть в каждом дистрибутиве). Внимание все данные на диске будут уничтожены!
badblocks -sv -p 1 -w /dev/sdc
badblocks -sv -p 1 -w /dev/nvme0n1
badblocks -sv -p 1 -w /dev/mmcblk0

Вывод информации о системе и показаний датчиков температуры

Просмотр информации из DMI. Информация которую записал производитель или сборщик оборудования. Обычно присутствуют версия BIOS/UEFI, модель, серийный номер. Так как листинг очень длинный, в терминале для просмотра удобно использовать less
dmidecode | less

Просмотр списка PCI/PCE-E устройств (в терминале) lspci и подробно lscpi -v

CPU-X просмотр информации о системе (аналог CPU-Z)

Просмотр датчиков температуры и TDP: CPU, AMD GPU, NVMe SSD, скорости вращения вентиляторов watch sensors
Просмотр загрузки, температуры, TDP и других параметров NVIDIA GPU watch nvidia-smi

Для удобства в меню LiveUSB сборки добавлены соответствующие ярлыки.

Тестирование стабильности работы CPU и GPU под нагрузкой

Нагрузочное тестирование процессора (в терминале) stress -c кол-во_ядер

Видеокарты AMD и Intel работают со свободными драйверами (никакой установки не требуют, и уже содержатся в виде модулей ядра Linux + userspace библиотек Mesa).

Тем временем драйвер nouveau на данный момент не обеспечивает максимальной загрузки видеокарт NVIDIA и организовать стресс тестирование с его помощью не получится. Требуется использование проприетарных драйверов NVIDIA.
Вроде бы поддержку управления частотами в nouveau добавили при использовании GSP прошивок для видеокарт начиная с Turing. Насколько я понимаю для Maxwell и Pascal это не работает и возможно уже никогда не заработает.

В LiveUSB сборку включены три версии проприетарных драйверов NVIDIA — актуальная 525.x, и legacy 390.x и 340.x. Необходимый для загрузки модуль драйвера определяется автоматически.

При запуске GPUTest (FurMark) и Unigine Heaven автоматически определяются ноутбучные конфигурации с переключением видеокарты Intel+NVIDIA, Intel+AMD и AMD+NVIDIA и выставляются необходимые переменные окружения для запуска на дискретной видеокарте.

gputest.sh и unigine-heaven.sh

#!/bin/sh

if [ "$1" = "-h" -o "$1" = "--help" ]; then
echo "Usage:"
echo gputest [OPTION]... [TEST]
echo "                          Options:"
echo -e "Try to detect double GPU\E[34m\033[1m  gputest -auto"
tput sgr0
echo -e "Run on nVidia optimus GPU\E[32m\033[1m gputest -optimus"
tput sgr0
echo -e "Run on discrete AMD GPU\E[31m\033[1m   gputest -prime"
tput sgr0
echo -e "Show gallium HUD\E[36m\033[1m          gputest -hud"
tput sgr0
echo "                          *Only on AMD and modern Intel GPU"
echo "Tests:"
echo FurMark fur, GiMark gi, pixmark_volplosion, TessMark tess_x32, tess_x64
exit
fi

run () {
exec ./GpuTest /no_log_score /gpumon_terminal /test="$TEST" /width=1024 /height=640 "$@"
}

optimus () {
export __NV_PRIME_RENDER_OFFLOAD=1
export __GLX_VENDOR_LIBRARY_NAME=nvidia
}

export __GL_SYNC_TO_VBLANK=0

if [ "$1" = "-auto" ]; then shift
  [ -f /tmp/kmodules ] || lsmod >/tmp/kmodules
  if grep -q nvidia /mnt/live/tmp/modules; then
    if egrep -qe "i915|radeon|amdgpu" /tmp/kmodules; then optimus; fi
  elif egrep -qe "radeon|amdgpu|nouveau" /tmp/kmodules; then
    if grep -q i915 /tmp/kmodules; then export DRI_PRIME=1; fi
  fi
elif [ "$1" = "-optimus" ]; then shift; optimus
elif [ "$1" = "-prime" ]; then shift; export DRI_PRIME=1
fi

if [ "$1" = "-hud" ]; then shift
export GALLIUM_HUD=".x5.y30.w900.h180fps,.w900.h200GPU-load+temperature"
fi

if [ -z "$1" ]; then TEST=fur
else TEST="$1"
shift
fi

if [ -f GpuTest ]; then run
elif [ -f /opt/gputest/GpuTest ]; then
cd /opt/gputest && run
fi
#!/bin/sh

if [ "$1" = "-h" -o "$1" = "--help" ]; then
echo "                          Options:"
echo -e "Try to detect double GPU\E[34m\033[1m  unigine-heaven -auto"
tput sgr0
echo -e "Run on nVidia optimus GPU\E[32m\033[1m unigine-heaven -optimus"           
tput sgr0
echo -e "Run on discrete AMD GPU\E[31m\033[1m   unigine-heaven -prime"
tput sgr0
echo -e "Show gallium HUD\E[36m\033[1m          unigine-heaven -hud"
tput sgr0
echo "                          *Only on AMD and modern Intel GPU"
exit
fi

run () {
exec ./browser_x64 -config ../data/launcher/launcher.xml "$@"
}

optimus () {
export __NV_PRIME_RENDER_OFFLOAD=1
export __GLX_VENDOR_LIBRARY_NAME=nvidia
}

export __GL_SYNC_TO_VBLANK=0

if [ "$1" = "-auto" ]; then shift
  [ -f /tmp/kmodules ] || lsmod >/tmp/kmodules
  if grep -q nvidia /mnt/live/tmp/modules; then
    if egrep -qe "i915|radeon|amdgpu" /tmp/kmodules; then optimus; fi
  elif egrep -qe "radeon|amdgpu|nouveau" /tmp/kmodules; then
    if grep -q i915 /tmp/kmodules; then export DRI_PRIME=1; fi
  fi
elif [ "$1" = "-optimus" ]; then shift; optimus
elif [ "$1" = "-prime" ]; then shift; export DRI_PRIME=1
fi

if [ "$1" = "-hud" ]; then shift
export GALLIUM_HUD=".x5.y30.w900.h180fps,.w900.h200GPU-load+temperature"
fi

if [ -f heaven_x64 ]; then run
elif [ -f bin/heaven_x64 ]; then cd bin && run
elif [ -f /opt/unigine-heaven/bin/heaven_x64 ]; then
cd /opt/unigine-heaven/bin && run
fi

RTX 3060 Laptop FurMarkБольше скриншотов запуска на разных конфигурациях в альбоме группы в VK

Запускать тесты можно сразу после загрузки, никаких дополнительных действий не требуется.

LiveUSB сборка DogLinux позволяет запустить в режиме copy2ram одновременно по очереди сразу несколько ноутбуков (с железом разных поколений). Запустить на каждом FurMark или Unigine Heaven, а флешку извлечь.

© Habrahabr.ru