Hatred's Log Place

DON'T PANIC!

Jun 23, 2023 - 1 minute read - Linux

ArchLinux: получение исходников системного пакета

Как обычно в мемориз.

Раньше был тул abs, потом вся структура мигрировала на Git. Теперь что бы получить пакет нужен тул Arch Build Source Management Toolили коротко - asp. Не путать с ASPLinux… Да был когда-то такой.

Ставится:

sudo pacman -S asp

Получить PKGBUILD:

asp checkout PKGNAME

или:

asp export PKGNAME

Например:

asp checkout kdiff3

Далее работам как обычно с PKGBUILD: makepkg с полезными опциями. Сам спек правим по необходимости.

На чистом Arch Linux ещё есть пакет devtools, который содержит тул pkgctl, который позволяет достичь той же цели: получить PKGBUILD для сборки:

pkgctl repo clone PKGNAME

На производных, типа Manjaro (мой случай) этого тула может не быть. А вот asp - есть.

Полезные ссылки:

  1. Arch Build System

May 4, 2023 - 2 minute read - programming projects

Qt Creator & CMake: завезли добавление/удаление/переименование файлов

Итак, обновляю свой CMakeProjectManager2 и что я вижу:

  • 71eb0ab9f8e98df9bd021c1c49d7ec00a66492cb - завезли парсер CMake в стоковый плагин.
  • d41365610ff80478d8c6c2812299d95d139561ec - его интегрировали в билд.
  • d8be2491a5f5cfdc512f63c766a550dd43694063 / 13 апреля 2023 - реализовали добавление новых и существующих файлов к таргету, причём файл пытается добавляться прямо в CMakeLists.txt: файл будет добавлен последним элементов к соответствующей “well-known” функции (они захардкожены) типа add_executable(), add_library(), qt_add_executable(), qt_add_library(), qt6_add_executable(), qt6_add_library(). Для кастомных функций будет добавлен вызов target_sources(), что тоже неплохо. Уже можно начинать пользоваться.
  • 039baab6e70160bc8130ef95e499141f7c875225 / 20 апреля 2023 - реализовали вышеперечисленное для QtQuick проектов, в список “well-known” функций добавились: qt_add_qml_module(), qt6_add_qml_module()
  • 54af6bd5b3f5ba5e3396f5cb9eb539f198abafff / 21 апреля 2023 - разрешили переименовывать файлы. Работает как для явно указанных файлов, так и для добавленных через file(GLOB|GLOB_RECOURSE).
  • 411b2e05b8ac4442d1ef179381dc7c37492ab37b / 24 апреля 2023 - разрешили удалять файлы.
  • 5c2b2966e78129dcbd220e35e15f6278a1b3d05d / 27 апреля 2023 - разрешили добавлять существующую директорию. Пока, как я понял, добавляются все файлы, а не add_subdirectory(). Что, по мне, более логично: все операции target-ориентированные.
  • 874b1133d9cfaef179851aa925b7d6b96e85019b / 26 апреля 2023 - пофиксили удаление и переименование, что бы оно срабатывало и с файлами, которые указываются через переменные для таргета.

Ну и пачка мелких фиксов.

На текущий момент, меня огорчает отсутствие вывода всех файлов их проектной директории (например, README.md или скрипты вспомогательные, которые вполне можно редактировать в QtC), но уже можно начинать пытаться нормально работать.

Собственно в рамках CMakeProjectManager2 я теперь попытаюсь реализовать возможность отобразить всех файлов, по аналогии с текущей реализацией и подключить добавление файлов из апстрима.

А вообще, тенденция к тому, что CMakeProjectManager2 можно будет выкинуть меня радует!

Apr 14, 2023 - 1 minute read - programming C++

[C++] std::tie() и range for

Сегодня мне не хватило такого (C++20):

for (std::tie(m_imageWidth, m_imageHeigth) : sizes) {}

Пришлось так:

for (auto const &size : sizes) {
    std::tie(m_imageWidth, m_imageHeigth) = size;
}

Mar 31, 2023 - 1 minute read - memo

Display Technology Information Repository and Utilities

В мемориз:

Подборка полезный утилит и стандартов связанных с дисплеями: HDMI, DP:

К сожалению, свежие стандарты HDMI 2.0, 2.1 чувака заставили удалить из публичного доступа (почитайте письмо, которое ему написали).

Помимо этого есть спеки ITU/BT - там можно поискать коэффициенты RGB-YUV конвертаций для различных режимов (Rev.601 vs Rec.709 vs BT.2020, а вот про BT.2100 я уже не слышал) - бывает полезно (наипался, когда программировали матричный pCSC).

Офигенный раздел по кабелям и переходникам:

и его “продакшн” версия:

Так же раздел, для расчёта параметров монитора (например, DPI) по разрешению и диагонали:

Mar 31, 2023 - 1 minute read - memo

Online Tone Generator

В мемориз.

Предыстория: досталась Б/У “железная” дорога Tomica (японческий оригинал), а там оказался один локомотив, у которого два варианта управления:

  1. Пультом
  2. Свистком

Пульта, понятное дело, не нашлось. Изучая логотип свистка и помедитировав на картинки с этим локомотивом, где изображён этот самый свисток, сначала своим свистом попытался запустить, что через минут 15 удалось… Представьте себе картину маслом: сидит взрослый человек, и свистит на игрушечный тепловоз. Понравилось? :)

А потом решил поискать какой-то генератор тона, что бы более точно подобрать частоту.

Собственно в мемориз:

Mar 25, 2023 - 2 minute read - Linux Thinkpad

Thinkpad P15 Gen2: ноутбук не уходит в сон и фризится lspci при питании от батареи

Проблема: при питании от батареи, время от времени не можем уйти в сон. После чего наблюдаем:

  • фриз при вызове lspci
  • фриз при попытке сделать sudo
  • фриз при попытке перегрузиться или выключиться
  • фриз при запуске sddm, если включаться на батарее
  • 100% и стабильное воспроизведение при запуске sudo powertop, и тоже фриз

Mar 19, 2023 - 2 minute read - Linux

ArchLinux: сохранение модулей текущего ядра при обновлении

Проблема: когда мы в ArchLinux и производных дистрибутивах обновляем ядро и если поменялась минорная цифра сменилась, то меняется и директория для модулей, а старая удаляется. В результате чего после обновления вы или сразу должны перезагрузиться с новым ядром или получать эпичные глюки: флешка там не примонтируется или ещё чего.

Очевидное решение: временно сохранить текущую диреторию для ядра. Почистить потом можно, на загрузке, к примеру.

Решение ниже - хуки для pacman, которое это делают.

Mar 19, 2023 - 1 minute read - Linux

dmesg wheel group access

На системах с ядром 5.10.4+ dmesg доступен только для root. Делаем его доступным и для группы wheel и, по необходимости, добавляем туда пользователей. К слову, если не уверены, лучше не делайте. Мне в dmesg нужно очень часто во время разработки лезть. Можно в терминале запускать сессию от другого пользователя без привилегий, но в группе wheel:

mkdir -p /etc/pacman/hooks
cat > /etc/pacman/hooks/10-dmesg-wheel-access.hook << EOF
[Trigger]  
Operation = Upgrade  
Type = Package  
Target = util-linux  
  
[Action]  
Description = Allow dmesg wheel access...  
When = PostTransaction  
Exec = /bin/sh -c '/usr/bin/chown root:wheel /usr/bin/dmesg ; /usr/bin/chmod 750 /usr/bin/dmesg ; /usr/bin/setcap cap_syslog=ep /usr/bin/dmesg'
EOF

Mar 19, 2023 - 1 minute read - Linux Thinkpad

Thinkpad P15 Gen2: LEDs

А оказывается, что почти всеми (скорее вообще всеми) LED, которые присутствуют на этом лаптопе можно управлять через sysfs:

$ ls /sys/devices/platform/thinkpad_acpi/leds/ -1  
platform::micmute  
platform::mute  
tpacpi::kbd_backlight  
tpacpi::lid_logo_dot  
tpacpi::power  
tpacpi::standby  
tpacpi::thinklight  
tpacpi::thinkvantage

Основные контрольные файлы:

  • brightness - собственно для включения или выключения: 0 - выключить. Максимальное значение зависит от следующего параметра.
  • max_brightness - максимальное значение для предыдущего параметра. Если 1, то LED работает как On/Off. Если отличное, то поддерживается установка яркости: максимальное значение - максимальная яркость.
  • trigger - можно задать системный триггер, который будет управлять этим LED. Типичный пример - активность жёсткого диска. Чтение из файла: список доступных триггеров и выбранный триггер, запись - назначение триггера.

Но вот я ни один LED не смог настроить на системный триггер disk-activity.

К слову, LED на крешке в букве i в Thinkpad:

  • /sys/devices/platform/thinkpad_acpi/leds/tpacpi::lid_logo_dot/

Mar 19, 2023 - 2 minute read - Linux Thinkpad

Thinkpad P15 Gen2: отключаем ненужные WakeUp sources

Проблема: просыпается при шевелинии мышкой Logitech MX Master, Unify receiver подключен в правый USB TypeA порт.

Старый метод через /proc/acpi/wakeup работает не для всех устройств:

cat /proc/acpi/wakeup | grep enabled | awk '{print($1)}' | grep -v 'SLPB\|LID' | while read line; do echo $line | sudo tee; done

Читаем:

Просканировать прочие устройства:

find /sys/devices -name 'wakeup' -a -type f | while read line; do sts=$(cat "$line"); echo "$line: $sts"; done | grep enabled

Сверяемся с выводом cat /proc/acpi/wakeup на предмет нужных устройств. К примеру, у меня:

/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/power/wakeup - LID
/sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/power/wakeup - SLPB

И выключаем:

find /sys/devices -name 'wakeup' -a -type f | grep -v 'PNP0C0D:00\|PNP0C0E:00' | while read line; do echo 'disabled' | sudo tee "$line"; done

Отражение состояния в /proc/acpi/wakeup тоже будет.

Но есть нюанс: устройствам может прилететь change и они могут опять включить этот источник пробуждения. Или /etc/rc.local вызваться в момент, когда ещё не все устройства проинициализированы.

Окончательное “лечение” проблемы: через udev, как по ссылке выше. Для себя я составил такой /etc/udev/rules.d/99-wakeup.rules:

ACTION!="add|change|bind", GOTO="wakeup_disable_end"  
  
# Disable all by default  
SUBSYSTEM=="*", ATTR{power/wakeup}=="*", ATTR{power/wakeup}="disabled"  
  
# Enable for selected:  
  
# LID  
#   /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00  
#DEVPATH=="/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00", ATTR{power/wakeup}="enabled"  
KERNEL=="PNP0C0D:00", ATTR{power/wakeup}="enabled"  
  
# SLPB  
#   cat /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/uevent  
#DEVPATH=="/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00", ATTR{power/wakeup}="enabled"  
KERNEL=="PNP0C0E:00", ATTR{power/wakeup}="enabled"  
  
LABEL="wakeup_disable_end"

Краткое пояснение:

  1. Реагируем только на действия add, change, bind
  2. По умолчанию, для все подсистем, у которых есть атрибут power/wakeup выставляем его в disable
  3. После чего, включаем только нужные источники пробуждения, у меня это LID и SLPB/WakeUp button.

Далее варианты:

  1. Перегрузиться - самый простой
  2. Вручную перегрузить правила (sudo udevadm control -R) и стригерить каждое устройство:
    sudo udevadm trigger /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00
    
  3. Так же перечитать правила и вызвать однострочник выше, а если уж прилетит change action, то уже отработается правилами udev.

В общем, какой удобнее - тот и использовать.

Mar 18, 2023 - 1 minute read - life

RIP

16.03.2016, Жека, помним.

bertolet.jpg

Mar 15, 2023 - 1 minute read - Linux Thinkpad

Thinkpad P15 Gen2: падение VLC и проблемы с VDPAU/VA-API

Проблема: VLC при попытке проиграть видео падает:

libva error: /usr/lib/dri/i965_drv_video.so init failed  
[00007f437c007840] glconv_vaapi_x11 gl error: vaInitialize: unknown libva error  
libva error: /usr/lib/dri/i965_drv_video.so init failed  
[00007f437c007840] glconv_vaapi_drm gl error: vaInitialize: unknown libva error  
libva error: /usr/lib/dri/i965_drv_video.so init failed  
[00007f437c007840] glconv_vaapi_drm gl error: vaInitialize: unknown libva error

А vdpauinfo говорит:

libva error: /usr/lib/dri/i965_drv_video.so init failed

И рапортует, что не поддерживает ничего.

Решение: поставить новый драйвер от Intel и не забыть бридж VA-API → VDPAU:

sudo pacman -S intel-media-driver libvdpau-va-gl

Старый libva-intel-driver работал для графики на T530, но тут уже нет. В целом, наверное, его можно удалить.

После установки успешно отрабатывает и VLC, vdpauinfo и vainfo.

Для надёжности, наверное, стоит ещё задать:

# VA API (Firefox)
export LIBVA_DRIVER_NAME=iHD
# VDPAU
export VDPAU_DRIVER=va_gl

К слову, vainfo рапортует много больше возможностей по декодированию, по сравнению с vdpauinfo. Вики Debian говорит что он действительно более ограничен, но иногда (не наш случай), это единственный вариант. В общем, с учётом того, что тот же Firefox для аппаратного декодирования использует VAAPI и что последний более богат - это не может не радовать.

Для дополнительного чтения:

Mar 14, 2023 - 7 minute read - Linux Thinkpad

Thinkpad P15 Gen2: гибридная графика

Карта у меня стоит далеко не топовая:

nVidia T1200
$ lspci -nn | grep VGA
00:02.0 VGA compatible controller [0300]: Intel Corporation TigerLake-H GT1 [UHD Graphics] [8086:9a60] (rev 01)
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU117GLM [T1200 Laptop GPU] [10de:1fbc] (rev a1)

Карта поколения NV160 family (Turing). Это будет важно в дальнейшем.

Первое, у нас, аналогично T530 (там правда mDP, а VGA - на встроенную карту, но тут VGA нет /дополнительный порт - через TypeC/), HDMI разведён на дискретную карту. Соответственно нельзя использовать её без настройки оной.

Второе, эта карта поддерживается открытым ядерными драйверами от самой nvidia: nvidia-open / nvidia-open-dkms. К сожалению, самих драйверов не завезли в репозитории Manjaro (тогда как в ArchLinux они есть). Ставим beta или git из AUR.

Внешний монитор на HDMI

Главное - удалить пакет bumblebee: он блеклистит как драйвера нуво (nouveau), так и официальный драйвера nVidia.

При этом, при загруженной системе выход на HDMI работает как с открытыми драйверами nouveau из коробки, так и с закрытыми драйверами.

Для нуво ничего, собственно, делать не нужно, единственно, стоит удалить xf86-video-nouveau, так для карт поколения NVC50+ рекомендую использовать встроенный modeset.

Для проприетарных - ниже.

Для того, что бы средствами обычного xrandr/DRM внешний порт нормально цеплялся:

  1. Удалить bumblebee
  2. Добавить в загрузку nvidia_drm (не обязательно, при удалённом bumblebee он и сам загрузится)
  3. Добавить параметр nvidia_drm.modeset=1 (я сделал через параметры модулей)

Для загрузки модуля, пишем в /etc/modules-load.d/modules.conf:

# List of modules to load at boot  
nvidia_drm

TBD:

  • nvidia
  • nvidia_drm
  • nvidia_uvm
  • nvidia_modeset

Для параметров, создаём файл /etc/modprobe.d/nvidia.conf:

options nvidia_drm modeset=1

Это автоматически подгрузит и nvidia_modeset.

Всё, после чего у нас всё магическим образом заработает:

$ xrandr --listproviders
Providers: number : 2  
Provider 0: id: 0x49 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 4 outputs: 7 associated providers: 1 name:modesetting  
Provider 1: id: 0x2a2 cap: 0x2, Sink Output crtcs: 4 outputs: 5 associated providers: 1 name:NVIDIA-G0

А в KDE Plasma по Fn+F7 будет работать выбор режима расширения экрана при подключенном внешнем мониторе.

PRIME

В отличии от HDMI выхода, драйвера nouveau не работают от слова совсем. Ошибка. TBD: добавить вывод ошибки.

Поэтому рассматриваем только официальные драйвера.

Ставим:

$ sudo pacman -S nvidia-prime

Проверяем:

$ prime-run glxinfo | grep "OpenGL renderer"
OpenGL renderer string: NVIDIA T1200 Laptop GPU/PCIe/SSE2

По сути, он просто задаёт нужные переменные окружения:

Настройки для внешнего монитора должны быть сделаны.

Power Management

Как говорится тут для новейших карт Ampere ничего делать не нужно, а наша Turing мы можем полностью отключить карту, когда она не используется. Нужно создать udev правила /etc/udev/rules.d/80-nvidia-pm.rules:

# Enable runtime PM for NVIDIA VGA/3D controller devices on driver bind
ACTION=="bind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030000", TEST=="power/control", ATTR{power/control}="auto"
ACTION=="bind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030200", TEST=="power/control", ATTR{power/control}="auto"

# Disable runtime PM for NVIDIA VGA/3D controller devices on driver unbind
ACTION=="unbind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030000", TEST=="power/control", ATTR{power/control}="on"
ACTION=="unbind", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030200", TEST=="power/control", ATTR{power/control}="on"

И добавить параметры для главного модуля nvidia:

options nvidia "NVreg_DynamicPowerManagement=0x02"

Затем включить сервис nvidia-persistenced.service:

sudo systemctl enable nvidia-persistenced.service

Проблемы

Зависает ядро

Точнее так, это не беда nVidia, это беда только на процессорах 11gen от Intel, который, собственно у меня и стоит:

Сама проблема описана тут:

nvidia may not boot on Linux 5.18 (or later) on systems with Intel CPUs (likely only of 11th Gen and onward) due to FS#74886/ FS#74891. Until this is fixed, a workaround is disabling the Indirect Branch Tracking CPU security feature by setting the ibt=off kernel parameter from the boot loader. This security feature is responsible for mitigating a class of exploit techniques, but is deemed safe as a temporary stopgap solution.

У меня аффектит в том числе и работу Virtual Box:

[  456.563262] SUPR0GipMap: fGetGipCpu=0x1b  
[  457.249272] traps: Missing ENDBR: 0xffffacace3a50c20  
[  457.249303] ------------[ cut here ]------------  
[  457.249304] kernel BUG at arch/x86/kernel/traps.c:255!  
[  457.249308] invalid opcode: 0000 [#1] PREEMPT SMP NOPTI  
[  457.249312] CPU: 14 PID: 6732 Comm: EMT-0 Tainted: G           OE      6.1.12-1-MANJARO #1 d419fb51ba9431ae2a4575820ea6b5b95f50a34f  
[  457.249314] Hardware name: LENOVO 20YQ0058RT/20YQ0058RT, BIOS N37ET39W (1.20 ) 04/15/2022  
[  457.249315] RIP: 0010:exc_control_protection+0xc2/0xd0  
[  457.249320] Code: fa ff 45 31 c9 49 89 d8 b9 09 00 00 00 48 8b 93 80 00 00 00 be fc 00 00 00 48 c7 c7 09 4e 44 b9 e8 c3 84 46 ff e9 64 ff ff ff <0f> 0b 66 66 2e 0f 1f 84 00 00 00 00 00 9  
0 66 0f 1f 00 55 53 48 89  
[  457.249321] RSP: 0018:ffffacace1cf7c38 EFLAGS: 00010002  
[  457.249323] RAX: 0000000000000028 RBX: ffffacace1cf7c58 RCX: 0000000000000000  
[  457.249324] RDX: 0000000000000000 RSI: ffff8afd1f7a1660 RDI: ffff8afd1f7a1660  
[  457.249325] RBP: 0000000000000003 R08: 0000000000000000 R09: ffffacace1cf7ad0  
[  457.249325] R10: 0000000000000003 R11: ffffffffb9ccc7e8 R12: 0000000000000000  
[  457.249326] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000  
[  457.249327] FS:  00007fe0241fd6c0(0000) GS:ffff8afd1f780000(0000) knlGS:0000000000000000  
[  457.249328] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033  
[  457.249329] CR2: ffffacace38c5b10 CR3: 00000002ac0d0006 CR4: 0000000000f70ee0  
[  457.249330] PKRU: 55555554  
[  457.249331] Call Trace:  
[  457.249333]  <TASK>  
[  457.249335]  asm_exc_control_protection+0x26/0x30  
[  457.249337] RIP: 0010:0xffffacace3a50c20  
[  457.249339] Code: 16 9d e6 ff 4c 89 e7 89 c3 e8 7c 94 e6 ff 85 db 0f 48 c3 5b 41 5c 5d c3 66 90 b8 fe ff ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 <83> fe 0f 77 53 55 83 ce 10 48 89 e5 53 4  
8 89 fb 48 8d 7f 18 48 83  
[  457.249340] RSP: 0018:ffffacace1cf7d08 EFLAGS: 00010246  
[  457.249341] RAX: 0000000000000000 RBX: ffffacace2219010 RCX: 0000000000000001  
[  457.249342] RDX: 0000000000000000 RSI: 0000000000000000 RDI: ffffacace2219030  
[  457.249343] RBP: ffffacace1cf7de0 R08: ffffacace3a5b95d R09: ffffacace2219010  
[  457.249343] R10: ffffacace226a000 R11: 0000000000000000 R12: ffff8af9c6c79a10  
[  457.249344] R13: ffffffffc0bffce0 R14: 0000000000000004 R15: ffff8af9c6c79a10  
[  457.249346]  ? asm_exc_page_fault+0x26/0x30  
[  457.249348]  ? supdrvIOCtl+0x2d77/0x31b0 [vboxdrv 2ebee49653aba23a54dbd683c8be87cd93f03860]  
[  457.249364]  ? _copy_from_user+0x47/0x60  
[  457.249368]  ? VBoxDrvLinuxIOCtl_7_0_6+0x162/0x260 [vboxdrv 2ebee49653aba23a54dbd683c8be87cd93f03860]  
[  457.249376]  ? do_syscall_64+0x6b/0x90  
[  457.249378]  ? __x64_sys_ioctl+0x91/0xd0  
[  457.249381]  ? do_syscall_64+0x5c/0x90  
[  457.249382]  ? exc_page_fault+0x74/0x170  
[  457.249384]  ? entry_SYSCALL_64_after_hwframe+0x63/0xcd  
[  457.249385]  </TASK>  
[  457.249386] Modules linked in: snd_seq_dummy snd_seq snd_seq_device ccm rfcomm qrtr cmac algif_hash algif_skcipher af_alg bnep btusb uvcvideo btrtl videobuf2_vmalloc btbcm videobuf2_memo  
ps btintel videobuf2_v4l2 btmtk videobuf2_common videodev bluetooth mc ecdh_generic joydev mousedev snd_ctl_led snd_soc_skl_hda_dsp snd_soc_intel_hda_dsp_common snd_soc_hdac_hdmi snd_sof_pr  
obes snd_hda_codec_realtek snd_hda_codec_generic snd_soc_dmic snd_sof_pci_intel_tgl snd_sof_intel_hda_common soundwire_intel soundwire_generic_allocation soundwire_cadence snd_sof_intel_hda  
snd_sof_pci snd_sof_xtensa_dsp intel_tcc_cooling snd_sof snd_sof_utils x86_pkg_temp_thermal snd_soc_hdac_hda intel_powerclamp snd_hda_ext_core coretemp snd_soc_acpi_intel_match kvm_intel s  
nd_soc_acpi vfat fat soundwire_bus kvm snd_soc_core iwlmvm irqbypass crct10dif_pclmul snd_compress crc32_pclmul ac97_bus polyval_clmulni snd_hda_codec_hdmi snd_pcm_dmaengine polyval_generic  
gf128mul ghash_clmulni_intel mac80211 sha512_ssse3  
[  457.249418]  snd_hda_intel aesni_intel processor_thermal_device_pci_legacy snd_intel_dspcfg crypto_simd snd_intel_sdw_acpi processor_thermal_device cryptd libarc4 mei_hdcp mei_pxp snd_hd  
a_codec processor_thermal_rfim iTCO_wdt rapl nouveau iwlwifi snd_hda_core spi_nor intel_pmc_bxt processor_thermal_mbox snd_hwdep mei_me intel_cstate iTCO_vendor_support ee1004 intel_rapl_ms  
r ucsi_acpi processor_thermal_rapl think_lmi snd_pcm intel_uncore cfg80211 psmouse pcspkr firmware_attributes_class mtd wmi_bmof typec_ucsi i2c_i801 mxm_wmi igc mei intel_rapl_common thunde  
rbolt snd_timer drm_ttm_helper i2c_smbus typec intel_soc_dts_iosf roles int3400_thermal int3403_thermal acpi_thermal_rel int340x_thermal_zone intel_hid acpi_pad sparse_keymap acpi_tad mac_h  
id dm_multipath dm_mod vboxnetflt(OE) vboxnetadp(OE) vboxdrv(OE) sg crypto_user fuse acpi_call(OE) bpf_preload ip_tables x_tables ext4 crc32c_generic crc16 mbcache jbd2 rtsx_pci_sdmmc mmc_c  
ore nvme thinkpad_acpi nvme_core crc32c_intel spi_intel_pci  
[  457.249452]  xhci_pci serio_raw rtsx_pci ledtrig_audio spi_intel nvme_common xhci_pci_renesas atkbd platform_profile libps2 snd vivaldi_fmap soundcore i8042 rfkill serio i915 drm_buddy i  
ntel_gtt video wmi drm_display_helper cec ttm  
[  457.249462] ---[ end trace 0000000000000000 ]---  
[  457.249463] RIP: 0010:exc_control_protection+0xc2/0xd0  
[  457.249465] Code: fa ff 45 31 c9 49 89 d8 b9 09 00 00 00 48 8b 93 80 00 00 00 be fc 00 00 00 48 c7 c7 09 4e 44 b9 e8 c3 84 46 ff e9 64 ff ff ff <0f> 0b 66 66 2e 0f 1f 84 00 00 00 00 00 9  
0 66 0f 1f 00 55 53 48 89  
[  457.249466] RSP: 0018:ffffacace1cf7c38 EFLAGS: 00010002  
[  457.249467] RAX: 0000000000000028 RBX: ffffacace1cf7c58 RCX: 0000000000000000  
[  457.249468] RDX: 0000000000000000 RSI: ffff8afd1f7a1660 RDI: ffff8afd1f7a1660  
[  457.249468] RBP: 0000000000000003 R08: 0000000000000000 R09: ffffacace1cf7ad0  
[  457.249469] R10: 0000000000000003 R11: ffffffffb9ccc7e8 R12: 0000000000000000  
[  457.249469] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000  
[  457.249470] FS:  00007fe0241fd6c0(0000) GS:ffff8afd1f780000(0000) knlGS:0000000000000000  
[  457.249471] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033  
[  457.249472] CR2: ffffacace38c5b10 CR3: 00000002ac0d0006 CR4: 0000000000f70ee0  
[  457.249473] PKRU: 55555554

В выхлопе nVidia тоже будет присутстввать:

traps: Missing ENDBR: 0xffffacace3a50c20  

Решение: добавить параметр ibt=off для ядра.

Открываем /etc/default/grub и добавляем:

GRUB_CMDLINE_LINUX_DEFAULT="... ibt=off ...

После чего:

sudo update-grub

и перезагрузка.

Не запускается SDDM

У меня такое на дровах из репозитория. Поставил nvidia-open-beta - проблема ушла.

Особенности

Кто кого блеклистит и когда.

Первое, пакет nvidia-utils содержит в себе конфиги для modprobe (/usr/lib/modprobe.d/nvidia-utils-beta.conf), который блеклистит nouveau. Имейте ввиду.

Второе, как было сказано выше, bumblebee блеклистит походим образом как nouveau, так и официальные драйвера. Внесение в чёрный список защищает от автоматической загрузки, а принудительно загрузить всё так же можно. Чем bumblebee и пользуется для организации offloading.

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

Ссылки