【问题标题】:How to build kernel backport on CentOS 7?如何在 CentOS 7 上构建内核反向移植?
【发布时间】:2016-05-04 05:00:25
【问题描述】:

我在 2015 年初使用 Broadcom BCM43602 wifi 芯片在 Macbook Pro 上安装了 CentOS 7。我已经通过挖掘有关 wifi 设置的 CentOS 文档尝试了所有其他方法。我终于意识到一个潜在的解决方案是为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

我做了什么

下面的命令和输出日志。

[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

我在这里缺少什么?

【问题讨论】:

    标签: linux-kernel kernel-module backport


    【解决方案1】:

    4.0.1?

    centos 7 基于 3.10 内核,除了 Red Hat 应用了大量自定义补丁并且代码库已经与上游 3.10 不同。由于运气和/或 kabi 保证,上游补丁有可能无论如何都会起作用。

    但真正的问题是你为什么要在桌面匹配器上使用 centos 7。如果你想使用绑定到 red hat 的发行版,你可以试试 fedora。否则试试 ubuntu。

    【讨论】:

    • 我为什么要这样做有几个原因。 (1) 我使用的一些商业软件是为 Red Hat 7 开发的。(2) 它们在更新较新内核的代码时速度很慢。 (3) (当我读到 bacports 的时候就来了)想探索和尝试 backports 和内核定制。 (4) 在这种情况下,Ubuntu 对我来说不是一个选择。并且兼容的 Fedora 版本是 20,不再支持:da.wikipedia.org/wiki/Fedora_%28Linux-distribution%29
    • 您可以创建一个具有适当用户空间的容器。 rhel/centos 内核不会有上游不存在的特性。在某些极端情况下,上游内核可能不兼容 bug-to-bug,但这不太可能。在最坏的情况下,只需获得一个虚拟机。对于没有牢牢掌握内核开发的人来说,补丁向后移植不是一项任务。它具有误导性的明显琐碎性,因为您想要的补丁通常会编译得很好,尽管可能完全被破坏。
    猜你喜欢
    • 2021-04-19
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    • 2013-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多