1 августа 2013 г.

Патчим драйвер NVIDIA 319.32 для ядра Linux 3.10

Обновил себе ядро Linux до версии 3.10 и, как это всегда бывает в таких случаях, после перезагрузки нужно было пересобрать драйвер NVIDIA. Однако, оказалось, что последний драйвер NVIDIA (на этот момент версии 319.32) не поддерживает моё новое ядро. Вариантов в таком случае два: даунгрэйдить ядро до 3.9 или патчить драйвер NVIDIA (если есть чем патчить). Так уж сложилось, что даунгрэйдить я очень не люблю, а вот к добрым ребятушкам, которые в свободное время пописывают всякие патчи и улучшают наш тленный мирок, испытываю самые тёплые и нежные чувства. Конечно же, патч решающий мою проблему, был уже давно написан и выложен, за что автору большое спасибо. Осталось только разобраться, как его использовать. Разобрался. Делюсь.

Качаем патч, например, в домашний каталог. По умолчанию имя будет pastie-7942599.diff.

Распаковываем все внутренности скрипта с драйвером:

> NVIDIA-Linux-x86-319.32.run -x
Creating directory NVIDIA-Linux-x86-319.32
Verifying archive integrity... OK
Uncompressing NVIDIA Accelerated Graphics Driver for Linux-x86 319.32...

Переходим в созданный каталог:

> cd NVIDIA-Linux-x86-319.32

Патчим драйвер:

> patch -p1 < /home/user/pastie-7942599.diff
patching file kernel/nv-i2c.c
patching file kernel/nv-procfs.c
Hunk #4 succeeded at 161 with fuzz 1.

Выходим из каталога с драйвером:

> cd ..

Запаковываем наши пропатченные кишочки обратно:

> ./NVIDIA-Linux-x86-319.32/makeself.sh --target-os Linux --target-arch x86 NVIDIA-Linux-x86-319.32 NVIDIA-Linux-x86-319.32-patched-3.10.run "NVIDIA Accelerated Graphics Driver patched for Linux-x86 3.10 kernel" ./nvidia-installer

Устанавливаем пропатченный драйвер, как обычно:

> sh NVIDIA-Linux-x86-319.32-patched-3.10.run

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