Как собрать бэкпорт ядра на CentOS 7?

Я установил CentOS 7 на Macbook Pro в начале 2015 года с Wi-Fi-чипом Broadcom BCM43602. Я пробовал все другие методы, копаясь в документации CentOS о настройке Wi-Fi. Наконец я понял, что потенциальное решение состоит в том, чтобы скомпилировать бэкпорты для модуля ядра brcmfmac.

Запуск ядра

Linux centos7.localdomain 3.10.0-327.13.1.el7.x86_64 #1 SMP Thu Mar 31 16:04:38 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

Что я сделал

  • Загруженный и разархивированный бэкпорт с https://www.kernel.org/pub/linux/kernel/projects/backports/stable/
  • Прочтите документацию по бэкпорту
  • Побежал make defconfig-brcmfmac

  • Запустил make и был встречен с ошибками.

Журнал команд и вывод ниже.

[admin@centos7 backports-4.0.1-1]$ make mrproper
  CLEAN   /home/admin/Documents/backports-4.0.1-1/.tmp_versions
[admin@centos7 backports-4.0.1-1]$ make defconfigs-brcmfmac
Generating local configuration database from kernel ... done.
make[1]: *** No rule to make target `defconfigs-brcmfmac'.  Stop.
make: *** [defconfigs-brcmfmac] Error 2
[admin@centos7 backports-4.0.1-1]$ make defconfig-brcmfmac
cc -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer   -c -o conf.o conf.c
cc -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer   -c -o zconf.tab.o zconf.tab.c
cc   conf.o zconf.tab.o   -o conf
boolean symbol HWMON tested for 'm'? test forced to 'n'
boolean symbol HWMON tested for 'm'? test forced to 'n'
#
# configuration written to .config
#
[admin@centos7 backports-4.0.1-1]$ make
make[5]: `conf' is up to date.
boolean symbol HWMON tested for 'm'? test forced to 'n'
boolean symbol HWMON tested for 'm'? test forced to 'n'
#
# configuration written to .config
#
Building backport-include/backport/autoconf.h ... done.
  CC [M]  /home/admin/Documents/backports-4.0.1-1/compat/main.o
In file included from include/linux/rcupdate.h:43:0,
                 from /home/admin/Documents/backports-4.0.1-1/backport-include/linux/rcupdate.h:3,
                 from include/linux/srcu.h:33,
                 from include/linux/notifier.h:15,
                 from include/linux/memory_hotplug.h:6,
                 from include/linux/mmzone.h:824,
                 from include/linux/gfp.h:5,
                 from include/linux/kmod.h:22,
                 from include/linux/module.h:13,
                 from /home/admin/Documents/backports-4.0.1-1/backport-include/linux/module.h:3,
                 from /home/admin/Documents/backports-4.0.1-1/compat/main.c:1:
/home/admin/Documents/backports-4.0.1-1/backport-include/linux/completion.h:14:20: error: redefinition of ‘reinit_completion’
 static inline void reinit_completion(struct completion *x)
                    ^
In file included from /home/admin/Documents/backports-4.0.1-1/backport-include/linux/completion.h:3:0,
                 from include/linux/rcupdate.h:43,
                 from /home/admin/Documents/backports-4.0.1-1/backport-include/linux/rcupdate.h:3,
                 from include/linux/srcu.h:33,
                 from include/linux/notifier.h:15,
                 from include/linux/memory_hotplug.h:6,
                 from include/linux/mmzone.h:824,
                 from include/linux/gfp.h:5,
                 from include/linux/kmod.h:22,
                 from include/linux/module.h:13,
                 from /home/admin/Documents/backports-4.0.1-1/backport-include/linux/module.h:3,
                 from /home/admin/Documents/backports-4.0.1-1/compat/main.c:1:
include/linux/completion.h:86:20: note: previous definition of ‘reinit_completion’ was here
 static inline void reinit_completion(struct completion *x)
                    ^
make[6]: *** [/home/admin/Documents/backports-4.0.1-1/compat/main.o] Error 1
make[5]: *** [/home/admin/Documents/backports-4.0.1-1/compat] Error 2
make[4]: *** [_module_/home/admin/Documents/backports-4.0.1-1] Error 2
make[3]: *** [modules] Error 2
make[2]: *** [modules] Error 2
make[1]: *** [modules] Error 2
make: *** [default] Error 2

Что мне здесь не хватает?


person biocyberman    schedule 03.05.2016    source источник


Ответы (1)


4.0.1?

Centos 7 основан на ядрах 3.10, за исключением того, что Red Hat применила множество пользовательских исправлений, а кодовая база уже отличается от исходной версии 3.10. Есть шанс, что апстрим-патч все равно сработает из-за удачи и/или гарантий каби.

Но реальный вопрос в том, почему вы пытаетесь использовать Centos 7 на настольном компьютере. Если вы хотите использовать дистрибутив, привязанный к Red Hat, вы можете попробовать Fedora. В противном случае попробуйте убунту.

person employee of the month    schedule 03.05.2016
comment
У меня есть несколько причин, почему я пытаюсь это сделать. (1) Некоторые коммерческие программы, которые я использую, были разработаны для Red Hat 7. (2) Они медленно обновляют код для более новых ядер. (3) (Пришло, когда я прочитал о бэкпортах) Хочу изучить и попробовать бэкпорты и настройку ядра. (4) Ubuntu в данном случае для меня не вариант. И совместимая версия Fedora — 20, которая больше не поддерживается: da.wikipedia .org/wiki/Fedora_%28Linux-дистрибутив%29 - person biocyberman; 04.05.2016
comment
Вы можете создать контейнер с соответствующим пользовательским пространством. Ядра rhel/centos не будут иметь функций, отсутствующих в основной ветке разработки. В некоторых крайних случаях вышестоящее ядро ​​может быть несовместимо с ошибками, но это достаточно маловероятно. В худшем случае просто получите vm. резервное копирование исправлений не является задачей для людей, не разбирающихся в разработке ядра. в нем есть вводящая в заблуждение кажущаяся тривиальность, так как часто нужный вам патч будет скомпилирован очень хорошо, практически без усилий, несмотря на то, что, возможно, он будет полностью сломан. - person employee of the month; 04.05.2016