This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] PROCESSOR-SDK-AM335X:在内核中禁用蓝牙

Guru**** 2551110 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/607348/processor-sdk-am335x-disabling-bluetooth-in-the-kernel

器件型号:PROCESSOR-SDK-AM335X

您好!

我正在尝试通过禁用不使用的模块来加快 Linux 内核启动速度。

按照我的理解、模块可以单独通过内核配置添加、也可以通过内核配置和器件树组合添加。

以便内核或器件树选择外设。

以蓝牙为例、器件树中未提及蓝牙、但在内核配置中已启用蓝牙:

编号
#蓝牙设备驱动程序
编号
未设置# CONFIG_BT_HCCBTUSB
未设置# CONFIG_BT_HIBTSDIO
未设置# CONFIG_BT_HCEUART
# CONFIG_BT_HCCCM203X 未设置
未设置# CONFIG_BT_HIBFUSB
# CONFIG_BT_HCIVHCI 未设置
CONFIG_BT_MRVL=m
CONFIG_BT_MRVL_SDIO=m
# CONFIG_AF_RXRPC 未设置
CONFIG_FIB_RULES=y
CONFIG_WIRELES=y
CONFIG_CFG80211=m
# CONFIG_NL80211_TESTMODE 未设置
# CONFIG_CFG80211_developer_warnings 未设置
未设置# CONFIG_CFG80211_REG_DEBUG
# CONFIG_CFG80211_certification _ONU 未设置
CONFIG_CFG80211_DEFAULT_PS=y
未设置# CONFIG_CFG80211_DebugFS
# CONFIG_CFG80211_INTERNAL_REGDB 未设置
CONFIG_CFG80211_CRDA_SUPPT=y
# CONFIG_CFG80211_WEXT 未设置
未设置# CONFIG_LIB80211
CONFIG_mac80211=m
CONFIG_mac80211_has _RC=y
CONFIG_mac80211_RC_minstrel=y
CONFIG_mac80211_RC_minstrel_HT=y
未设置# CONFIG_mac80211_RC_minstrel_VHT
CONFIG_mac80211_RC_DEFAULT_minstrel=y
CONFIG_mac80211_RC_DEFAULT="minstrel_HT"
未设置# CONFIG_mac80211_mesh
CONFIG_mac80211_LEDs=y
未设置# CONFIG_mac80211_DebugFS
未设置# CONFIG_mac80211_message_tracing
未设置# CONFIG_mac80211_DEBUG_MENU
CONFIG_mac80211_STA_hash-MAX_SIZE=0
未设置# CONFIG_WiMAX
CONFIG_RFKILL=y
CONFIG_RFKILL_LEDs=y
CONFIG_RFKILL_INPUT=y
未设置# CONFIG_RFKILL_电脑 控制器
CONFIG_RFKILL_GPIO=y
未设置# CONFIG_NET_9P
未设置# CONFIG_CAIF
未设置# CONFIG_Ceph LIB
未设置# CONFIG_NFC
# CONFIG_LWTUNNEL 未设置
CONFIG_WASE_BPF_JIT=y

如果我注释掉所有行、以便内核构建中不添加任何蓝牙模块、我仍会在内核启动日志中收到有关该模块的消息。

[27.365116]蓝牙:未知符号 rfkill_unregister (错误0)
[27.371282]蓝牙:未知符号 rfkill_blocked (错误0)
[27.38091] NET:注册协议系列15.
[27.495032]蓝牙:未知符号 rfkill_destroy (错误0)
[27.501305]蓝牙:未知符号 rfkill_alloc (错误0)
[27.549756]蓝牙:未知符号 rfkill_register (err 0)
[确定]已启动网络服务。

是否在其他地方添加蓝牙驱动程序?

我认为如果它不在配置文件中、引导程序甚至不应尝试启动它。

此致

Ugnius

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    这是什么 Linux 版本?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它的 Linux 4.4.41与处理器 SDK Linux RT 一起提供。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    禁用模块的理想方法是通过 menuconfig 执行、而不是手工制作、因为您可能会遇到上述冲突。

    因此、当您执行 menuconfig (假设您使用的是4.4内核)时:

    如果您在“Networking Support (网络支持)”下执行以下操作: >
    []蓝牙子系统支持-->

    因此您需要禁用它。 (执行此操作时,.config 应该没有设置#CONFIG_BT)

    此外,如果您使用基于 systemctl 的系统,则需要禁用启动时启动的蓝牙服务。

    谢谢、
    Prabhakar LAD
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Prabhakar、您好!

    感谢您的回答。
    我尝试按照您的建议通过 menuconfig 禁用它。
    这会注释#CONFIG_BT 以及我在手动编辑时未删除的其他几行。
    但是、内核启动时仍会显示相同的蓝牙错误消息。
    您在建议的最后一位中提到、在哪里可以禁用启动时的蓝牙服务?

    此致、
    Ugnius
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    1:是否可以附加.config 文件?

    2:您使用的是基于 systemd 的系统还是 initd?

    如果是基于系统的系统、您可以通过执行以下操作来执行此操作:

    systemctl 禁用蓝牙

    3:您是否正在使用任何 WiFi 鼠标? 如果是、您需要启用 CONFIG_RFKILL。

    谢谢、
    Prabhakar LAD
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../2068.config.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如何判断其 systemd 还是 initd?

    此致
    Ugnius
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    查看您的第一篇文章、它看起来像是一个基于系统的系统。

    只需尝试以下命令:

    systemctl 禁用蓝牙

    然后重新启动并查看是否收到警告。

    谢谢、
    Prabhakar LAD
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它似乎识别了 disable 命令:

    root@AM335x-EVM:~# systemctl 禁用蓝牙
    删除了符号链接/etc/systemd/system/dbus-org.bluez.service.
    删除了符号链接/etc/systemd/system/bluetooth.target.wants/bluetooth.service.

    但我仍然收到错误消息:

    [21.501641]蓝牙:未知符号 rfkill_unregister (错误0)
    [21.563608]蓝牙:未知符号 rfkill_blocked (错误0)
    [21.56368]蓝牙:未知符号 rfkill_destroy (错误0)
    [21.5696676]蓝牙:未知符号 rfkill_alloc (错误0)
    [21.569885]蓝牙:未知符号 rfkill_register (err 0)

    此致、
    Ugnius
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    很好。 您能否发布命令'zcat /proc/config.gz 的输出

    谢谢、
    Prabhakar LAD
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    还有一点需要检查,您是否在构建内核后重新刷写文件系统?
    我的意思是,当您构建内核时,您是否重建了模块并在文件系统中进行了更新? 您需要执行该操作。

    谢谢、
    Prabhakar LAD
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../config_5F00_output.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    还会在启动时发布 dmesg 输出

    谢谢、
    Prabhakar LAD
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../boot-log.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您已启用无线功能。 您需要启用 CONFIG_RFKILL

    谢谢、
    Prabhakar LAD
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我取消了 CONFIG_RFKILL=Y 的注释

    现在蓝牙消息显示它已初始化。

    [26.619699]蓝牙:内核版本2.21
    [26.651935] NET:注册协议系列31.
    [26.678313]蓝牙:HCI 设备和连接管理器已初始化
    [26.715165]蓝牙:HCI 套接字层已初始化
    [26.739834]蓝牙:已初始化 L2CAP 套接字层
    [26.7563]蓝牙:SCO 套接字层已初始化

    此致、

    Ugnius

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我建议您在 WiLink 论坛上提出此问题 :e2e.ti.com/.../307 我们的专家可以帮助您更好地解决有关蓝牙堆栈的问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我添加了:

    systemctl 禁用 systemd-networkd-wait-online

    现在、引导程序上的蓝牙消息消失了。