ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

如何为您的安卓手机开启docker支持?

2022-05-10 19:04:09  阅读:590  来源: 互联网

标签:xxxx 安卓 开启 defconfig 编译 内核 CGROUP docker CONFIG


首先你的手机得支持解锁bl,你还得能搞到你手机的内核源码,不满足这两个条件的设备请自行退出本文。
Redmi10X5G/GooglePixel3/GooglePixel3XL的内核可以在我的github找到编译好的。
我的github: https://github.com/Moe-hacker
k30U和小米6也有大佬编译了,可以去酷安找找

0x0001.前期准备:

  • 首先你需要root你的手机
  • 你还需要一点linux基础
  • 最好会点c语言,不会也行,反正我不会(摆烂,逃…………)

0x0002.环境搭建:

我用的是在我的小破笔记本上chroot运行的ubuntu系统,建议在电脑上编译,否则可能错误很多
安装必要的依赖,如bc,make,clang等,总之缺啥安装啥就是了。
注意:有些内核需要特定的clang/gcc版本,建议编译前问问作者用啥版本编译的,否则会出错。

0x0003.测试编译

进入内核源码目录
ls arch/arm64/configs/
查看有啥配置文件,
一般命名为xxxx_user_defconfig
有些在配置configs/vendor下
然后执行:

make O=out ARCH=arm64 CC=clang-版本号 CLANG_TARIPLE=aarch64-linux-gnu- CROSS_COMPILE=aarch64-linux-gnu- -j8 xxxx_user_defconfig

这里的版本号是内核要求的clang版本,如果内核要求使用gcc编译请换成gcc-版本号并删除CLANG_TARIPLE选项
xxxx_user_defconfig是配置文件名,如果配置文件在configs/vendor下,则改为vendor/xxxx_user_defconfig
上古设备可能ARCH为armhf/armel,自行修改。
然后:

make CONFIG_SECTION_MISMATCH_WARN_ONLY=y O=out ARCH=arm64 CC=clang-版本号 CLANG_TARIPLE=aarch64-linux-gnu- CROSS_COMPILE=aarch64-linux-gnu- -j8

同上条命令,只是少了最后的xxxx_user_defconfig,多了CONFIG_SECTION_MISMATCH_WARN_ONLY=y选项
编译过程中,最常见的错误是-Werror报错,找到Makefile,删除-Werror选项即可,Makefile在报错的文件的同一个目录,上级目录和上上级目录,以及源码根目录下都有,一层一层找到里面含有-Werror的地方,删除即可。
编译如果顺利,会在out/arch/arm64/boot下生成一个Image.gz-dtb或者Image.lz4-dtb文件,备份boot后使用anykernel3+ex kernel manager刷入即可。
如果成功开机,那么恭喜,你离成功不远了!!!
如果失败,你可能需要换个源码仓库或者直接放弃。

0x0004.开启支持

在你的xxxx_user_defconfig中先加入以下参数:

CONFIG_SYS_SUPPORTS_HUGETLBFS=y
CONFIG_HUGETLBFS=y
CONFIG_CGROUPS=y
CONFIG_HUGETLB_PAGE=y
CONFIG_NET_L3_MASTER_DEV=y
CONFIG_IPC_NS=y
CONFIG_CGROUP_DEVICE=y
CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y
CONFIG_NETFILTER_XT_MATCH_IPVS=y
CONFIG_POSIX_MQUEUE=y
CONFIG_USER_NS=y
CONFIG_CGROUP_PIDS=y
CONFIG_CFQ_GROUP_IOSCHED=y
CONFIG_BLK_CGROUP=y
CONFIG_BLK_DEV_THROTTLING=y
CONFIG_CGROUP_PERF=y
CONFIG_CGROUP_HUGETLB=y
CONFIG_NET_CLS_CGROUP=y
CONFIG_CGROUP_NET_PRIO=y
CONFIG_CFS_BANDWIDTH=y
CONFIG_RT_GROUP_SCHED=y
CONFIG_IP_VS=y
CONFIG_IP_VS_NFCT=y
CONFIG_IP_VS_PROTO_TCP=y
CONFIG_IP_VS_PROTO_UDP=y
CONFIG_IP_VS_RR=y
CONFIG_SECURITY_APPARMOR=y
CONFIG_VXLAN=y
CONFIG_BRIDGE_VLAN_FILTERING=y
CONFIG_IPVLAN=y
CONFIG_MACVLAN=y
CONFIG_AUFS_FS=y
CONFIG_BTRFS_FS=y
CONFIG_BTRFS_FS_POSIX_ACL=y
CONFIG_DM_THIN_PROVISIONING=y

然后重新编译内核,即重复上面的两条命令
手机刷入内核开机后,root权限执行以下脚本:
https://github.com/moby/moby/blob/master/contrib/check-config.sh
找到missing,zfs和aufs不用管
defconfig中加入missing的参数
再重新编译一次内核
如果还是missing
在源码目录下运行make menuconfig
按/查找missing的选项,
找到depends on
开启depends on的全部选项,记得在选项前加入CONFIG_
再次编译,刷入,开机
运行check-config.sh
像我一样全绿(除了zfs和aufs,这两个选项一般内核都打不开) ,或者如果没法全绿,最起码generally necessary全绿:
Screenshot-2022-05-04-10-55-05-754-com-termux.jpg
OK!

标签:xxxx,安卓,开启,defconfig,编译,内核,CGROUP,docker,CONFIG
来源: https://www.cnblogs.com/Moe-hacker/p/16254836.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有