如何检查和编译带有uhid支持的内核配置?

8次阅读
没有评论

问题描述

希望找到其手机 ROM 的 Linux 内核配置文件(特别是 CONFIG_UHID 参数)以支持蓝牙键盘。由于缺少 /proc/config.gz 文件,无法直接从设备上获取配置信息。需要了解如何通过查阅源码手动检查和编译带有此支持的内核。

解决方案

1. 获取内核配置

当系统未导出 /proc/config.gz 时,可以通过以下步骤来获取内核配置文件:

  1. 获得原始内核源码镜像
  2. 要确保自己手头有足够的ROM源代码,特别是与用户空间交互的设备树节点和驱动代码。
  3. 可以从 ROM 开发者提供的 GitHub 仓库或其它资源下载源代码。

  4. 定位配置文件 config.h.config 文件

  5. 在内核源码目录下查找配置文件(通常为 .config),或者使用 Makefile 手动运行构建步骤。
  6. 假如 ROM 的构建系统没有生成 config.gz,那么该 ROM 可能依赖于外部工具或手动配置。

  7. 检查编译选项

  8. 使用 make menuconfig 或其他内核配置工具进入到内核配置界面中。如果没有列出 CONFIG_UHID 等项,可能是因为:
    • 配置文件被静态链接到了内核,可以尝试使用 grep CONFIG_UHID .\*.d`` 搜索相关 Makefile(通常在drivers/input/keyboard` 目录下)。
    • 该配置仅在特定的构建版本中存在(如 OP 强调的 3.6 及以后的内核版本才支持 uhid),而当前用于 ROM 的内核版本不满足要求。

2. 编译内核

  1. 配置内核
  2. 复制并修改 .config 文件,启用你所需要的 CONFIG_UHID=y
    sh
    cp ./.config my_custom_config
    sed -i '/# CONFIG_UHID is not set/a CONFIG_UHID=m' my_custom_config

  3. 重新编译内核

  4. 运行 make 指令开始编译过程。可能会有许多依赖检查和构建步骤,确保所有工具链等都是最新且正确的。

  5. 准备设备:

  6. 使用适当的引导系统将新内核推送到设备,并尝试使用蓝牙键盘重试连接。

  7. 调试与优化

  8. 如果遇到错误或未成功解决的问题,请反复检查日志以及配置文件中的细节。必要时可以通过修改其他相关参数,例如 uinput 驱动支持(尽管在某些情况下 uinput 也可以完成相同的工作)来实现兼容性。

通过上述步骤,用户应该能较好地了解如何获取和调整内核配置以适配所需的设备特性,并能够解决蓝牙键盘无法正常工作的初步问题。进一步的问题可能需要更多对 ROM 及其构建工具的了解,特别是在特定版本或补丁中的细微差异及配置需求上。

正文完