Установка Radeon 7730 HD на Linux Fedora

Предъистория

Подключил новую видеокарту к компьютеру Radeon HD 7730. На компе крутился Debian Wheezy, который при обновлении драйверов сразу отвалился. Xubuntu устанавливалась с видео-артефактами, Mageia - заработала из коробки, но не понравилась. Fedora по аналогии с Xubuntu запустилась с такими же артефактами (все в черный квадратик шахматной доски). При установке официального драйвера вылетала ошибка компиляции и в логах было видно следующее:

make -C /lib/modules/3.15.10-201.fc20.x86_64/build SUBDIRS=/usr/lib/modules/fglrx/build_mod/2.6.x modules
make[1]: Вход в каталог `/usr/src/kernels/3.15.10-201.fc20.x86_64'
  CC [M]  /usr/lib/modules/fglrx/build_mod/2.6.x/firegl_public.o
/usr/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c: В функции «KCL_GetEffectiveUid»:
/usr/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:1787:5: ошибка: incompatible types when returning type «kuid_t» but «KCL_TYPE_Uid» was expected
     return current_euid();
     ^
/usr/lib/modules/fglrx/build_mod/2.6.x/firegl_public.c:1793:1: предупреждение: control reaches end of non-void function [-Wreturn-type]
 }
 ^
make[2]: *** [/usr/lib/modules/fglrx/build_mod/2.6.x/firegl_public.o] Ошибка 1
make[1]: *** [_module_/usr/lib/modules/fglrx/build_mod/2.6.x] Ошибка 2
make[1]: Выход из каталога `/usr/src/kernels/3.15.10-201.fc20.x86_64'
make: *** [kmod_build] Ошибка 2
build failed with return value 2
[Error] Kernel Module : Failed to compile kernel module - please consult readme.
[Reboot] Kernel Module : dracut

Решение

Если еще не скачали, скачиваем официальный драйвер отсюда: http://support.amd.com/ru-ru/download

Ставим необходимые библиотеки:

# yum install gcc kernel-headers kernel-devel

Ставим драйвер и получаем ошибку указанную в предъистории, после чего начинаем патчить.

Патч #1

Все файлы находятся в папке /lib/modules/fglrx/build/mod

(Если вдруг вы не в курсе, строчки с минусами удаляем, строчки с плюсами вставляем).

Файл firegl_public.c, строка 1784 (или чуток ниже)

#ifdef current_euid
- return current_euid();
+ return __kuid_val(current_euid());
#else

Добавьте __kuid_val(..) по аналогии в строчку 1787 (двумя строчками ниже).

Патч #2 (Feb 2015)

Каждое новое ядро дается с боем. Вышло 3.18 и патчим под него. Файл kcl_acpi.c, 845 строка:

- tdev->flags.no_hotplug = true;

+ tdev->flags.removable = 0;
+ tdev->flags.ejectable = 0;

Решение найдено здесь: http://theg4sh.ru/?p=481

Сборка

Далее в той же директории пересобираем:

# ./make.sh

Выходим на уровень вверх и устанавливаем:

# cd ..
# ./make_install.sh

Готово, перезапускаем компьютер и радуемся. Этого достаточно, заново инсталлятор драйвера запускать не нужно.

Спасибо nuk0, он подсказал решение здесь: http://devgurus.amd.com/thread/168727

Дополнительно:

  1. Если у вас ОС не установлена, то вытаскиваем видеокарту и делаем полную установку на встроенной
  2. Посмотреть ошибки установки: less /usr/share/ati/fglrx-install.log
  3. Указанное проводилось на Fedora 20 c Mate
  4. В целом решение должно подойти и для deb-дистрибутивов
  5. Если драйвер вдруг слетел в далеком будущем, повторите последнюю операцию:
# cd /lib/modules/fglrx
# ./make_install.sh
# reboot