Membangun Ulang Driver FGLRX di Kernel 3.2.13

27 Mar 2012

Sebelumnya saya pernah menulis di akun media sosial saya bahwa AMD Catalyst (FGLRX) versi 12.2 tidak dapat dibangun untuk kernel dengan versi di atas 3.2.7. Dan sekarang saya sudah memperbarui kernel Slackware ke versi 3.2.13-smp. Apakah saya tetap tidak dapat menggunakan driver AMD Catalyst? Ternyata saya keliru! Terima kasih untuk hacker-hacker ARCH Linux yang telah menyediakan patch untuk dapat menggunakan struktur TS_USEDFPU yang diimplementasikan sejak kernel linux 3.2.8. Nah yang menjadi masalah adalah bagaimana menerapkan patch tersebut ke sistem pembangunan paket FGLRX untuk Slackware?

Untuk itu saya harus melihat dahulu bagaimana cara kerja sistem pemaketan FGLRX yang dibuat oleh Emanuele Tomasi dan telah dibundel di dalam installer AMD Driver Installer. Setelah saya ekstraksi file installer tersebut, kemudian saya melihat-lihat skrip builder beliau, saya simpulkan cara menerapkan patch dari ARCH Linux tersebut cukup mudah.

Dalam setiap instalasi lengkap dari FGLRX di Slackware, kita akan mendapatkan direktori /etc/ati yang digunakan oleh driver untuk menyimpan beberapa konfigurasi defaultnya. Oleh Emanuele Tomasi, direktori tersebut juga dimanfaatkan untuk menyimpan patch yang akan kita terapkan saat membangun driver FGLRX dengan kernel baru. Jadi skrip pembangun dan pemaketan FGLRX punya Eric Tomasi secara otomatis akan mencari direktori /etc/ati/patch jika ada. Apabila direktori tersebut ada, skrip patch_functions.sh akan mengecek keberadaan file patch dengan format nama patch-${VERSI_FGLRX}-${VERSI_KERNEL}. Jika file patch tersedia, skrip make_module.sh akan menerapkan patch tersebut secara otomatis sebelum melakukan proses pembangunan modul kernel FGLRX.

Yang perlu saya lakukan adalah membuat direktori /etc/ati/patch sesuai petunjuk dalam skrip patch_function.sh yang ada di dalam direktori pemaketan FGLRX untuk Slackware di dalam file installer AMD Driver Installer. Kemudian saya mengunduh patch kernel 3.2.8 dari AUR ARCH Linux untuk FGLRX 8.95 dan menyimpannya dengan nama patch-8.95-3.2.13-smp dan meletakkannya di dalam direktori /etc/ati/patch. Setelah itu saya menjalankan installer AMD Driver Installer hingga menjadi paket FGLRX yang dapat saya install di Slackware saya.

Singkatnya saya melakukannya sebagai berikut:

# cd /tmp
# wget -c http://www2.ati.com/drivers/linux/amd-driver-installer-12-2-x86.x86_64.run
# wget -c http://aur.archlinux.org/packages/ca/catalyst/catalyst.tar.gz
# tar xf catalyst.tar.gz
# mkdir -p /etc/ati/patch
# cat catalyst/3.2.8.patch > /etc/ati/patch/patch-8.95-3.2.13-smp
-- Perlu penyesuaian pada file patch, soal lokasi firegl_public.c
-- Karena skrip berpindah direktori ke common/lib/modules/build_mod
-- sebelum menerapkan patch dengan perintah patch -p0

# vim /etc/ati/patch-8.95-3.2.13-smp
-- Dari:

--- 12.1/common/lib/modules/fglrx/build_mod/firegl_public.c
+++ 12.1/common/lib/modules/fglrx/build_mod/firegl_public.c

-- Menjadi seperti ini:

--- firegl_public.c
+++ firegl_public.c

-- lalu jalankan installer
# /bin/sh amd-driver-installer-12-2-x86.x86_64.run --buildpkg Slackware/Slackware

-- Paket yang terbentuk saya namai sesuai versi kernel yang saya pakai
# mv fglrx-8.95-x86-1.tgz fglrx-8.95_3.2.13_smp-x86-1.tgz
# upgradepkg --install-new fglrx-8.95_3.2.13_smp-x86-1.tgz
# aticonfig --initial

Setelah itu reboot.

Bagaimana? Tertarik mencoba?