|
|
libhybris是让安卓上的chroot或proot容器中的linux发行版本直接调用安卓bionic libc的兼容库,
但是linux的glic与安卓的bionic libc 之间存在TLS冲突
要解决这个冲突问题 三种方式来解决
1.修改一下安卓的bionic libc的源码,然后重新编译一份安卓bionic ubuntu touch就是这么干的
2.修改一下glic的源码并重新编译,此办法导致的后果就是,所有的基于glic的软件都需要重新编译,似乎termux就是走的这条路线
3.是用hook这种方式重新实现所有bionic libc的函数,不过部分函数用汇编实现,能hook一大部分.
对于普通人想要折腾libhybris在chroot上正常使用 那我们肯定是不能改代码的!
所以我想到了一个折衷的办法
先去ubuntu touch官网找一个支持的手机型号,把它的ubuntu的包下载回来,解压后会得到一个android_rootfs.img的文件
我们解压这个img文件可以得到一份魔改后编译好的bionic libc的库文件
安卓10或更高版本都是支持gsi刷机包的 这意味着安卓的bionic libc库应该是通用的,当然这种通用可能部分硬件还是有问题.
但是我们在安卓跑chroot linux的时候 网络直接使用安卓内核接口 这个不存在问题
声音 这个也是直接使用内核接口 也是没有问题的
那么最后的问题全都是gpu调用了
如果运气好,你提取到一份bionic libc的库 你在编译一下最新版本的libhybris 那就可以让chroot容器里面跑的debian或是ubuntu
用上gpu 的opengl es和vulkan硬件加速
也可以在chroot容器中使用virio-gpu来模拟一张支持opengl的虚拟显卡
这个虚拟显卡需要的服务器可以用overlay 0.0.8安卓版提供
也可以由termux中的zink提供
|
|