Ubuntu Android binder 编译
下载ubuntu 内核源码
binder驱动代码在drivers/android。在标准linux内核下,默认是不编译进去的
-
通过命令下载
sudo apt-cache search linux-source
sudo apt-get install linux-source 或者 sudo apt-get install 内核版本1、命令下载使用
- 在系统目录/usr/src/下可以查看到下载下来的内核代码压缩包
tar -jxvf linux-source-x.xx.x.tar.bz2
编译源码
1、编译内核代码依赖安装
sudo apt-get install libncurses5-dev libssl-dev build-essential openssl zlibc minizip libidn11-dev libidn11 libelf-dev bc
2、在源码根目录运行sudo make menuconfig
sudo make menuconfig //弹出如下截图说明上述安装成功
3、在menuconfig中敲入 “/” 回车搜索 CONFIG_ANDROID_BINDER_IPC 4、第4步中找到配置路径 drivers/android/Kconfig
vi drivers/android/Kconfig //修改下图中两个default为 y保存
5、运行sudo make bzImage -j4
sudo make bzImage -j4
6、如果出现如下报错
DESCEND objtool
CALL scripts/atomic/check-atomics.sh
CALL scripts/checksyscalls.sh
CHK include/generated/compile.h
make[1]: *** No rule to make target ‘debian/canonical-certs.pem’, needed by ‘certs/x509_certificate_list’. Stop.
make[1]: *** Waiting for unfinished jobs…
Makefile:1116: recipe for target ‘certs’ failed
make: *** [certs] Error 2
make: *** Waiting for unfinished jobs…
修改源码目录的.config文件,修改CONFIG_SYSTEM_TRUSTED_KEYS
修改CONFIG_SYSTEM_TRUSTED_KEYS,将其赋空值。
7、重新sudo make bzImage -j4
安装内核模块
- 编译安装
sudo make install 1
- 安装完内核之后,再手动更新一下grub。
sudo update-grub
- 修改grub启动配置文件
vim编辑/etc/default/grub文件,改动三处:
将 “GRUB_TIMEOUT_STYLE=hidden” 注释掉(在前面加上“#”)。
将 “GRUB_TIMEOUT” 的值改为“15”。
将 “GRUB_CMDLINE_LINUX_DEFAULT” 的值改为“text”。
重新 sudo update-grub
- 重启选择新内核
- 重启开机界面按住shift,进入GNU GRUB引导界面中的内核选择加载界面,选择自己编译的内核的正常模式
选择高级选项:
选择新安装的内核x.xx.xx版本:
进入启动界面:
进入系统,执行uname -a,可以发现内核为新内核了:
- 重启开机界面按住shift,进入GNU GRUB引导界面中的内核选择加载界面,选择自己编译的内核的正常模式
binder 测试
链接: 参见文章
root@arm64:~# mount -t binder none /dev/binderfs/
root@arm64:~# ls -al /dev/binderfs/
binder features/ vndbinder
binder-control hwbinder
参考文档
https://blog.csdn.net/Xiaoma_Pedro/article/details/103892980
https://blog.csdn.net/tugouxp/article/details/117616804
http://kerneltravel.net/blog/2021/compile-kernel/
https://www.jianshu.com/p/deebba22240e
https://blog.csdn.net/sinat_31500569/article/details/53871555
https://segmentfault.com/a/1190000017075369
https://blog.csdn.net/qq_36393978/article/details/118157426
使用make install方式安装内核,就不需要再使用mkinitramfs制作initrd.img文件 了,也不需要再用update-initramfs来更新。这些操作都会由make install自动完成,不需要再手动进行。 ↩︎