В общем обновился я на ядро ветки 4.15. Но с этим ядром не собираются nvidia-drivers 340.104.
Для решения этой проблемы идём по этой ссылке и скачиваем патч для драйвера Nvidia и распаковываем его из архива.
А вот что нужно сделать, чтобы наложить патч. Запускаем пересборку nvidia-drivers, причём делать это нужно на новом ядре или чтобы символическая ссылка /usr/src/linux указывала на директорию с ядром 4.15. Т.е. обновили ядро и следом нужно запустить пересборку nvidia-drivers (хотя после каждого обновления ядра это и так нужно делать). Ждём, когда вылетит ошибка, примерно такая:
/var/calculate/tmp/portage/x11-drivers/nvidia-drivers-340.104/work/kernel/nv.c: In function ‘nv_start_rc_timer’:
/var/calculate/tmp/portage/x11-drivers/nvidia-drivers-340.104/work/kernel/nv.c:2407:5: error: implicit declaration of function ‘init_timer’ [-Werror=implicit-function-declaration]
init_timer(&nvl-;>rc_timer);
^~~~~~~~~~
/var/calculate/tmp/portage/x11-drivers/nvidia-drivers-340.104/work/kernel/nv.c:2408:28: error: assignment from incompatible pointer type [-Werror=incompatible-pointer-types]
nvl->rc_timer.function = nvidia_rc_timer;
^
/var/calculate/tmp/portage/x11-drivers/nvidia-drivers-340.104/work/kernel/nv.c:2409:18: error: ‘struct timer_list’ has no member named ‘data’
nvl->rc_timer.data = (unsigned long) nvl;
^
cc1: some warnings being treated as errors
Переходим в каталог /var/calculate/tmp/portage/x11-drivers/nvidia-drivers-340.104/work/ (у меня установлены nvidia-drivers-340.104) и копируем туда же патч.
Накладываем его такой командой (от рута, естественно):
patch -p0 <nv_patch_340.104_linux_kernel_4.15
Дальше просто продолжаем сборку, с помощью команды ebuild, про неё подробней можно прочитать здесь.
ebuild /usr/portage/x11-drivers/nvidia-drivers/nvidia-drivers-340.104.ebuild compile install qmerge clean
Уведомление: Патч (patch) для nvidia-drivers-340.106 - Genideb