пятница, 17 сентября 2021 г.

В сборку DogLinux добавлен HWE стек (обновление 2021.09.16)

Добавлена папка live/hwe

Ядро Linux 5.14.3 mesa-21.2.1 libdrm-2.4.107 llvm-12
Для нового ядра собран модуль актуального драйвера nvidia-460.91.03

Обеспечена поддержка:
Видеокарт Radeon RX 6000 серии (проверено на 6800M в ноутбуке Asus G513QY-HQ007)
WiFi модуля Mediatek MT7921E 802.11ax [14c3:7961] (используется например в ноутбуках Asus G513QY и FX506LH)

Соответствующие опции добавлены в конфиги всех загрузчиков.

LiveUSB 1100MB сборка DogLinux Debian 11 Bullseye (nvidia-drivers, FurMark, Unigine Heaven, ddrescue, WHDD, DMDE) для тестирования, обслуживания ПК, ноутбуков

воскресенье, 29 августа 2021 г.

Реализация автоматического выбора версии nVidia драйвера при загрузке DogLinux с Porteus Initrd

Porteus Initrd это дальнейшее развитие livekit. Процесс загрузки хорошо описан на сайте slax.org.

В DogLinux структура папок отличается от Slax. В версии для Debian 11 Bullseye избавились от привязки к aufs (которая не включена в состав ядра) и используется overlayfs. Это позволяет использовать самые свежие ядра и не думать об адаптации патчей для поддержки aufs.

В системе установлен пакет nvidia-detect который в /usr/share/nvidia/ содержит текстовые файлы .ids со списками PCI ID видеокарт, поддерживаемых определенной версией драйвера. В скрипт /usr/local/cr-initrd/mkinitrd который создает файл initrd1.xz добавлен код для копирования файлов nvidia.ids, nvidia-legacy-390xx.ids и nvidia-legacy-340xx.ids.

В папке live/optional лежат готовые модули драйверов nVidia, имена файлов начинаются с префиксов nv340, nv390 и nvidia. И они должны быть загружены в зависимости от установленной в системе видеокарты nVidia или не загружены при её отсутствии.

В оригинальном скрипте linuxrc из Porteus Initrd был код для этого, но потребовались некоторые исправления и изменения логики его работы. Ниже приведены оба варианта.

#Оригинальный код отвечает за обработку параметра vga_detect
if param vga_detect; then
  echo $i"detecting GPU"
  lspci >/tmp/lspci
  nv=`grep "0300: 10de:" /tmp/lspci | cut -d":" -f4`
  amd=`grep "0300: 1002:" /tmp/lspci | cut -d":" -f4`
  if [ $nv ]; then
    echo $i"$nv chipset found, checking which nvidia driver supports it"
    cd /usr/share/pciids/NVIDIA; NV=`grep $nv * | cut -d: -f1`; cd /
    if [ $NV ]; then
      echo $i"nvidia-$NV.xx driver will be activated -"
      echo $i"if present in $PTH/optional folder"
      find $PTH/optional -name "nvidia-$NV*" 2>/dev/null >>/tmp/modules
    else
      #Здесь логика такая - если подходящая версия не найдена то будет
      #загружена последняя версия - это нам не подходит
      #Так как старые видеокарты до GeForce 8000 не поддерживаются
      #И должны использовать свободный драйвер nouveau
      echo $i"latest nvidia driver will be activated -"
      echo $i"if present in $PTH/optional folder"
      find $PTH/optional -name "nvidia-*" 2>/dev/null | \
      egrep -v '96.43.|173.14.|304.' >>/tmp/modules
    fi
  elif [ $amd ]; then
    echo $i"checking if $amd GPU belongs to 'Radeon HD' series"
    cd /usr/share/pciids/AMD; HD=`grep $amd * | cut -d: -f1`; cd /
    if [ $HD ]; then
      echo $i"$HD-xx driver will be activated -"
      echo $i"if present in $PTH/optional folder"
      find $PTH/optional -name "$HD-*" 2>/dev/null >>/tmp/modules
    else
      echo $i"$amd GPU is not supported by amd-catalyst driver"
    fi
  else
    echo $i"could not find any nVidia/AMD GPU on this PC"
  fi
fi

#Новый код. Вводим новый параметр nvidia_detect
#Так как пропиетарные драйвера AMD больше не нужны
if param nvidia_detect; then
  echo $i"detecting nvidia GPU"
  lspci >/tmp/lspci
  #Здесь "0300: 10de:" исправлено на "030.: 10de:" так как бывает 0301 и 0302
  nvlist=`grep -i "030.: 10de:" /tmp/lspci | cut -d":" -f4`
  #Даем возможность отключить функцию определения, так как
  #nvidia_detect будет прописан по умолчанию в загрузчике
  if param nonvidia; then
    echo $i"skipping nvidia GPU detection"
  elif [ -n "$nvlist" ]; then
  #Так как видеокарт nVidia в системе может быть более одной
  #То вводим цикл для обработки массива
  for nv in $nvlist
  do
    echo $i"$nv chip found, checking which nvidia driver supports it"
    if grep -qi 10de$nv /usr/share/nvidia/nvidia.ids
      then NV=nvidia; break
    elif grep -qi 10de$nv /usr/share/nvidia/nvidia-legacy-390xx.ids
      then NV=nv390; break
    elif grep -qi 10de$nv /usr/share/nvidia/nvidia-legacy-340xx.ids
      then NV=nv340; break
    else echo $i"$nv chip is not supported by nvidia driver"
    fi
  done
  if [ $NV ]; then
    echo $i"$NV driver will be activated"
    find $PTH/optional -name "$NV*" 2>/dev/null >>/tmp/modules
    NOLOAD="$NOLOAD|mesa-vulkan-drivers"
  fi
  else echo $i"could not find any nVidia GPU on this PC"
  fi
fi

В /tmp/modules записывается список .squashfs модулей, далее скрипт скопирует их в память (если указан параметр copy2ram) и смонтирует.

Реализация поддержки Optimus для ноутбуков со старыми видеокартами nVidia, которые поддерживаются только legacy драйверами 340xx и 390xx.

Эти драйвера не поддерживают PRIME render offload. Применен метод предложенный в ArchLinux Wiki Use_NVIDIA_graphics_only

Создан конфиг /etc/nvidia-legacy-optimus-outputclass.conf. В скрипт /etc/xdg/xfce4/xinitrc добавлен вызов

[ -x /etc/nvidia-legacy-optimus-xrandr.sh ] && /etc/nvidia-legacy-optimus-xrandr.sh

В /etc/profile добавлена соответствующая логика для обнаружения Optimus при загруженных nv340 или nv390 модулях и применения изменений конфигурации перед запуском startx.

if [ -z "${DISPLAY}" ] && [ $(tty) = /dev/tty1 ]; then
  if egrep -qe "nv340|nv390" /mnt/live/tmp/modules; then
    if grep -q i915 /proc/modules; then
    mv /etc/nvidia-legacy-optimus-outputclass.conf /etc/X11/xorg.conf.d/
    echo "#!/bin/sh" > /etc/nvidia-legacy-optimus-xrandr.sh
    echo "xrandr --setprovideroutputsource modesetting NVIDIA-0" >> \
      /etc/nvidia-legacy-optimus-xrandr.sh
    echo "xrandr --auto" >> /etc/nvidia-legacy-optimus-xrandr.sh
    chmod +x /etc/nvidia-legacy-optimus-xrandr.sh
    fi
  fi
  if ! grep -q text /proc/cmdline; then
  sleep 3
  startx
  fi
fi

LiveUSB 1100MB сборка DogLinux Debian 11 Bullseye (nvidia-drivers, FurMark, Unigine Heaven, ddrescue, WHDD, DMDE) для тестирования, обслуживания ПК, ноутбуков

вторник, 18 мая 2021 г.

LiveUSB 1100MB сборка DogLinux Debian 11 Bullseye (nvidia-drivers, FurMark, Unigine Heaven, ddrescue, WHDD, DMDE) для тестирования, обслуживания ПК, ноутбуков

Это компактный (всего ~1GB) Linux LiveUSB с почти полной поддержкой оборудования в ноутбуках начиная от выпуска как минимум 2007г и заканчивая моделями которые вышли в 2021г.


Скачать: .torrent / magnet-link / drive.google.com


В состав входят такие приложения, как GPUTest, Unigine Heaven, CPU-X, GSmartControl, GParted, Partimage, Partclone, TestDisk, ddrescue, WHDD, DMDE.

Особенности:

  • Позволяет проверить/продемонстрировать работоспособность железа, нагрузить процессор и видеокарту, мониторить температуру, проверить SMART HDD и NVMe SSD
  • Поддерживается загрузка в UEFI и Legacy/CSM режиме. В том числе по сети через PXE с NFS. С устройств USB/SATA/NVMe, с файловых систем FAT32/exFAT/Ext2/3/4/NTFS. Secure Boot не поддерживается, его требуется отключать.
  • Для нового оборудования предусмотрен вариант загрузки HWE (live/hwe включает свежие ядро Linux, libdrm и Mesa).
  • Включает 32бит версию с ядром без PAE для совместимости со старым железом.
  • Размер дистрибутива оптимизирован для использования в режиме copy2ram (дает возможность после загрузки извлечь USB-накопитель/сетевой кабель). При этом копируются в оперативную память только те squashfs-модули, которые используются.
  • Содержит три версии проприетарных драйверов nVidia - актуальная 470, и legacy 390 и 340. Необходимый для загрузки модуль драйвера определяется автоматически. Видеокарты AMD и Intel всех поколений работают со свободными драйверами (никакой установки не требуют, и уже содержатся в виде модулей ядра Linux + userspace библиотек Mesa).
  • При запуске GPUTest (FurMark) и Unigine Heaven автоматически определяются ноутбучные конфигурации с переключением видеокарты Intel+nVidia, Intel+AMD и AMD+nVidia и выставляются необходимые переменные окружения для запуска на дискретной видеокарте.
  • Содержит ПО для копирования неисправных жестких дисков ddrescue и HDDSuperClone, а также WHDD для оценки задержек линейного чтения секторов в стиле MHDD
  • ПО для поиска потерянных/поврежденных разделов/файловых систем testdisk и DMDE
  • Можно устанавливать любое ПО из доступного в Debian а также создавать модули с необходимым дополнительным ПО. Поддерживается активация squashfs-модулей после загрузки системы.
  • Для поддержки свежего железа периодически обновляется HWE вариант ядра Linux и сторонние модули ядра. Без пресборки всего дистрибутива.
  • Shell-cкрипты и настройки можно копировать на флешку в папку live/rootcopy и они будут применены при загрузке без необходимости пересборки модулей.
  • Возможность установки с помощью скрипта installdog на жесткий диск/SSD предпродажного ПК/ноутбука для демонстрации работоспособности. Скрипт создает в начале диска 2GB раздел FAT32, который затем легко удалить, и не вносит изменений в UEFI variables (очередь загрузки в прошивке UEFI).
  • Из загрузчика с флешки доступны UEFI PassMark memtest86 и UEFI Shell edk2, а также Legacy/CSM memtest86+ freedos mhdd и hdat2
  • Установка с помощью installdog.sh / cmd syslinux.exe на FAT32 флешку. В качестве альтернативы предоставляются готовые конфиги для интеграции в мультизагрузочные флешки Ventoy и grub4dos.

Сборка выполнена на базе наработок проекта DogLinux - Puppy sized Debian Linux
Bullseye build script. By fredx181
Debian GNU/Linux https://www.debian.org/

Технические подробности:

root password: dog
puppy password: dog

Ядро Linux 5.10.92 / 5.16.7
mesa 20.3.5 / 21.3.5
Xfce 4.16

Интерфейс английский. Локализации по умолчанию вырезаны в DogLinux для экономии места. Настроено отображение кириллицы в консоли и переключение раскладки по Ctrl+Shift в X11 и консоли.

Используется Porteus Initrd. В скрипте linuxrc доработан механизм определения необходимой версии nvidia драйвера. Используются nvidia.ids из пакета nvidia-detect

Вся работа происходит от root.
Используется sysvinit. Отсутствует systemd
Отсутствует какой либо DM. startx запускается из /etc/profile на tty1
Отсутствуют gvfs и udisks2. За монтирование отвечает pup-volume-monitor
Отсутствует pulseaudio. Используется ALSA напрямую.
Применен свой скрипт для решения проблемы с приоритетом HDMI звуковых карт.

Доработанные конфиги и скрипты находятся в 05-customtools.squashfs

Для загрузки Legacy/CSM используется syslinux 4.07
Для UEFI systemd-boot (gummiboot) и syslinux 6.04

GPUTest FurMark AMD Radeon 6370M Unigine Heaven AMD Radeon 6370M
GSmartControl и HWMon Tools WHDD
FurMark RTX 3060 Optimus Unigine Heaven GTX 1650 Optimus
Unigine Heaven GeForce 210 nvidia-legacy-340xx Intel Atom D525 и Nvidia ION 2
Unigine Heaven GeForce 920M Optimus Unigine Heaven GTX 1070 Desktop
Unigine Heaven GTX 1660 Ti Optimus Unigine Heaven on Intel i7-10750H iGPU
Ryzen 7 4800H RTX 2060 FurMark Ryzen 7 4800H AMDGPU FurMark
Ryzen 9 5900HX RTX 3070 FurMark Ryzen 9 5900HX AMDGPU FurMark
Ryzen 7 4800H RTX 2060 Unigine Heaven Ryzen 9 5900HX RTX 3070 Unigine Heaven
AMD A6-3410MX APU FurMark AMD A6-3410MX Radeon HD 6750M FurMark
FurMark одновременно на GTX 1660 Ti и i7-10750H iGPU
Unigine Heaven RTX 2060 SUPER
RTX 2060 SUPER Quake2 OpenGL
RTX 2060 SUPER Quake2RTX

понедельник, 17 мая 2021 г.

Утилиты для работы с железом доступные в GNU/Linux

Листинг загрузки ядра. Содержит полезную информацию об инициализации драйверов устройств. Можно смотреть все сообщения с момента загрузки
dmesg -Ht

dmesg -Wt
Будет выводить только новые сообщения. Например о подключении USB устройств

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

Просмотр и редактирование списка загрузки UEFI
efibootmgr

Просмотр датчиков температуры, скорости вращения вентиляторов
watch sensors

Просмотр информации о процессоре
lscpu

Просмотр текущей частоты для каждого ядра процессора
watch grep MHz /proc/cpuinfo

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

Просмотр списка PCI/PCI-E и USB устройств
lspci
lsusb


lspci -v
Покажет загруженные для устройств "драйвера" модули ядра

Просмотр списка подключенных SATA/USB/NVME дисков
lsscsi

Просмотр таблицы разделов жесткого диска
parted /dev/sda p
gparted - графическая GTK утилита

parted -l
Выведет таблицы разделов всех SATA/USB/NVME дисков

Просмотр атрибутов S.M.A.R.T. жесткого диска или SSD
smartctl -s on --all /dev/sda
gsmartcontrol - графическая GTK утилита

Для NVME дисков
nvme smart-log /dev/nvme0n1

Тест задержек чтения секторов жесткого диска в стиле MHDD
whdd

Поиск удаленных разделов на жестком диске
testdisk

Тест динамиков
speaker-test -c 2 -t wav

Просмотр сетевых интерфейсов
ifconfig

Просмотр режима 10/100/1000Mb/s проводного Ethernet соединения
ethtool eth0

Просмотр состояния, качества сигнала, статистики WiFi подключения и доступных сетей
wavemon

Включатель-выключатель беспроводных интерфейсов
rfkill list

Нагрузочное тестирование Ethernet и WiFi соединений
iperf
iperf3