其他分享
首页 > 其他分享> > 如何为您的安卓手机开启docker支持?

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

作者:互联网

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

0x0001.前期准备:

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