Нестандартный подход к сборке модулей в ArchLinux
Пользователям ArchLinux, использующим альтернативные ядра, известен геморрой с модулями ядра. В убунте то DKMS есть, а тут… Тот же модуль nvidia, находящийся в [extra], предназначен исключительно для стокового ядра -ARCH. А я вот использую ядра ветки -ZEN (которые сам и мейнтейню, впрочем) и каждые недели две выходит новый релиз, зачастую ломающий старые модули нвидии. Про смещение по ветви я и вовсе молчу.
Пакет nvidia-zen в AUR уже сто лет как устарел, а на мое письмо в maillist с просьбой забрать у текущего владельца пакет и оставить его без владельца никто не ответил.
Время шло, проблема не исчезала. Тогда я решился написать generic-way под все ядра.
Быстрый просмотр PKGBUILDа nvidia ясно дал знать, что все самое интересное и нужное находится в nvidia-binary-package/usr/src/nv. Все остальное было просто мусором. Посему исходники модуля были скопированы в /usr/src/nvidia и был написан простенький скрипт, который по команде buildmodule-nvidia собирал и устанавливал модуль под текущее запущенное ядро. Собственно скрипт, главная его часть, содрана с официального PKGBUILD.
cd /usr/src/nvidia/
ln -s Makefile.kbuild Makefile
make SYSSRC=/lib/modules/`uname -r`/build module || return 1
mkdir -p /lib/modules/`uname -r`/kernel/drivers/video/
install -m644 nvidia.ko /lib/modules/`uname -r`/kernel/drivers/video/
depmod `uname -r`
Заходим в консоль, от рута набираем buildmodule-nvidia, и все – модуль собран и установлен.
Казалось бы, проблема была решена. Но хотелось как то помочь людям с подобной проблемой, посему после 20-минутных потуг я родил пакет nvidia-builder, который вы и можете наблюдать в АУРе.






О спасибо. Наконец то больше не придеться мучаться.