Добавлена папка live/hwe
Соответствующие опции добавлены в конфиги всех загрузчиков.
![]() |
![]() |
![]() |
![]() |
Заметки о GNU/Linux и других ОС, примеры использования в работе, howto, интересные наблюдения
Добавлена папка live/hwe
Соответствующие опции добавлены в конфиги всех загрузчиков.
![]() |
![]() |
![]() |
![]() |
В 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) и смонтирует.
Эти драйвера не поддерживают 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
Сборка выполнена на базе наработок проекта 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
![]() |
FurMark одновременно на GTX 1660 Ti и i7-10750H iGPU |
![]() |
Unigine Heaven RTX 2060 SUPER |
![]() |
RTX 2060 SUPER Quake2 OpenGL |
![]() |
RTX 2060 SUPER Quake2RTX |
Листинг загрузки ядра. Содержит полезную информацию об инициализации драйверов устройств. Можно смотреть все сообщения с момента загрузки
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 утилита
Просмотр атрибутов 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