Водопады Березняк и Маруськины слёзы
На выходных, 22-23 июня 2023, отлично прогулялись с сыном по двум водопадам у подножия хр.Большой Воробей: Березняк и Маруськины слёзы.
На выходных, 22-23 июня 2023, отлично прогулялись с сыном по двум водопадам у подножия хр.Большой Воробей: Березняк и Маруськины слёзы.
Как обычно в мемориз.
Раньше был тул 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
-
есть.
Полезные ссылки:
Итак, обновляю свой 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 можно будет выкинуть меня радует!
Сегодня мне не хватило такого (C++20):
for (std::tie(m_imageWidth, m_imageHeigth) : sizes) {}
Пришлось так:
for (auto const &size : sizes) {
std::tie(m_imageWidth, m_imageHeigth) = size;
}
В мемориз:
python -m http.server 9000
Подборка полезный утилит и стандартов связанных с дисплеями: HDMI, DP:
К сожалению, свежие стандарты HDMI 2.0, 2.1 чувака заставили удалить из публичного доступа (почитайте письмо, которое ему написали).
Помимо этого есть спеки ITU/BT - там можно поискать коэффициенты RGB-YUV конвертаций для различных режимов (Rev.601 vs Rec.709 vs BT.2020, а вот про BT.2100 я уже не слышал) - бывает полезно (наипался, когда программировали матричный pCSC).
Офигенный раздел по кабелям и переходникам:
и его “продакшн” версия:
Так же раздел, для расчёта параметров монитора (например, DPI) по разрешению и диагонали:
В мемориз.
Предыстория: досталась Б/У “железная” дорога Tomica (японческий оригинал), а там оказался один локомотив, у которого два варианта управления:
Пульта, понятное дело, не нашлось. Изучая логотип свистка и помедитировав на картинки с этим локомотивом, где изображён этот самый свисток, сначала своим свистом попытался запустить, что через минут 15 удалось… Представьте себе картину маслом: сидит взрослый человек, и свистит на игрушечный тепловоз. Понравилось? :)
А потом решил поискать какой-то генератор тона, что бы более точно подобрать частоту.
Собственно в мемориз:
Проблема: при питании от батареи, время от времени не можем уйти в сон. После чего наблюдаем:
sudo powertop
, и тоже фризПроблема: когда мы в ArchLinux и производных дистрибутивах обновляем ядро и если поменялась минорная цифра сменилась, то меняется и директория для модулей, а старая удаляется. В результате чего после обновления вы или сразу должны перезагрузиться с новым ядром или получать эпичные глюки: флешка там не примонтируется или ещё чего.
Очевидное решение: временно сохранить текущую диреторию для ядра. Почистить потом можно, на загрузке, к примеру.
Решение ниже - хуки для pacman, которое это делают.
На системах с ядром 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
А оказывается, что почти всеми (скорее вообще всеми) 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/
Проблема: просыпается при шевелинии мышкой 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"
Краткое пояснение:
add
, change
, bind
power/wakeup
выставляем его в disable
Далее варианты:
sudo udevadm control -R
) и стригерить каждое устройство:
sudo udevadm trigger /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00
В общем, какой удобнее - тот и использовать.
16.03.2016, Жека, помним.
Проблема: 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 и что последний более богат - это не может не радовать.
Для дополнительного чтения:
…ну и росы %)
Наконец-то получилось пройти этот маршрут. До этого в разное время года по разным причинам мне этого сделать не удавалось.
Карта у меня стоит далеко не топовая:
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.
Главное - удалить пакет bumblebee: он блеклистит как драйвера нуво (nouveau), так и официальный драйвера nVidia.
При этом, при загруженной системе выход на HDMI работает как с открытыми драйверами nouveau из коробки, так и с закрытыми драйверами.
Для нуво ничего, собственно, делать не нужно, единственно, стоит удалить xf86-video-nouveau
, так для карт поколения NVC50+ рекомендую использовать встроенный modeset.
Для проприетарных - ниже.
Для того, что бы средствами обычного xrandr/DRM внешний порт нормально цеплялся:
nvidia_drm
(не обязательно, при удалённом bumblebee он и сам загрузится)nvidia_drm.modeset=1
(я сделал через параметры модулей)Для загрузки модуля, пишем в /etc/modules-load.d/modules.conf
:
# List of modules to load at boot
nvidia_drm
TBD:
Для параметров, создаём файл /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 будет работать выбор режима расширения экрана при подключенном внешнем мониторе.
В отличии от HDMI выхода, драйвера nouveau не работают от слова совсем. Ошибка. TBD: добавить вывод ошибки.
Поэтому рассматриваем только официальные драйвера.
Ставим:
$ sudo pacman -S nvidia-prime
Проверяем:
$ prime-run glxinfo | grep "OpenGL renderer"
OpenGL renderer string: NVIDIA T1200 Laptop GPU/PCIe/SSE2
По сути, он просто задаёт нужные переменные окружения:
Настройки для внешнего монитора должны быть сделаны.
Как говорится
тут для новейших карт 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
и перезагрузка.
У меня такое на дровах из репозитория. Поставил nvidia-open-beta - проблема ушла.
Кто кого блеклистит и когда.
Первое, пакет nvidia-utils содержит в себе конфиги для modprobe (/usr/lib/modprobe.d/nvidia-utils-beta.conf
), который блеклистит nouveau. Имейте ввиду.
Второе, как было сказано выше, bumblebee блеклистит походим образом как nouveau, так и официальные драйвера. Внесение в чёрный список защищает от автоматической загрузки, а принудительно загрузить всё так же можно. Чем bumblebee и пользуется для организации offloading.
Далее, данные о блеклистинге попадают в том числе в initramfs, поэтому, вцелом, на гибридной графике можно не отказываться от kms - нуво всё равно не загрузится при наличии проприетарных драйверов, только если вы сами этого явно не скажите.