openEuler 内核中存在开启 binder(边缘版本的树莓派)和未开启 binder(服务器版本等)两种情况。在未开启 binder 的场景下,本仓库提供将 binder 编译成 ko 的方式,插入该 ko 文件即可开启 binder 功能。
说明:openEuler-22.03-LTS-SP2
分支下,本仓库主要存储 binder 的 rpm 包制作文件。
cat /boot/config-$(uname -r) | grep CONFIG_ANDROID_BINDER_IPC=y
CONFIG_ANDROID_BINDER_IPC=y
输出,说明内核已经开启 binder,只需 挂载 binderfs 来使用 binder;否则,插入 ko 文件 来使用 binder
检查环境中是否已有 /dev/binder
文件,如果已有,则无需再做任何操作,binder 已经是可使用状态。
如果环境还没有 /dev/binder
文件,通过以下命令来生成,进而让 binder 处于可使用状态。
mkdir /dev/binderfs
sudo mount -t binder binder /dev/binderfs
sudo ln -s /dev/binderfs/binder /dev/binder
下载本仓库 openEuler-22.03-LTS-SP2
分支的内容
git clone -b openEuler-22.03-LTS-SP2 https://gitee.com/src-openeuler/communication_ipc.git
安装编译需要的软件包
sudo dnf install make patch tar gcc kernel-devel
进入 communication_ipc 目录,解压源码包,并打上 patch
cd communication_ipc
tar zxvf binder-openEuler-22.03-LTS-SP2.tar.gz
cd binder
patch -p1 < ../0001-Adapt-binder-as-a-kernel-module.patch
编译生成 binder_linux.ko
make -j4
插入 binder_linux.ko
insmod binder_linux.ko
插入 ko 文件之后,即可看到 /dev/binder
文件已生成,此时 binder 功能已可用。
说明: 使用 rmmod binder_linux
命令卸载插入的 binder 可能会导致操作系统重启!!!,如果有重要业务在运行请勿直接卸载。
编译 binder 的时候,报错找不到 /lib/modules/xxx
目录
原因:当前环境的 kernel-devel
包和实际系统 kernel 版本不一致。
解决:修改 Makefile 中的 KERNEL_SRC
变量的值中 $(uname -r)
改成 kernel-devel 的版本号。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。