kali为一加三(oneplus3)编译lineage15.1(安卓8.1)

官方文档

https://wiki.lineageos.org/build_guides.html

环境配置

jdk8、Python2.7和repo等参考上篇文章: kali编译aosp和xposed

额外需要安装的依赖:
apt install -y bc bison build-essential ccache curl flex g++-multilib gcc-multilib git gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev liblz4-tool libncurses5 libncurses5-dev libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev

lineageOS对应的jdk版本:
在这里插入图片描述

下载源码

https://mirrors.tuna.tsinghua.edu.cn/help/lineageOS/

mkdir lineage
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/LineageOS/android.git -b lineage-15.1

等待完成后需要修改.repo/manifests/default.xml文件内容,需要修改的内容请看上面的网站

修改完之后开始同步源码:repo sync

准备一些内核和设备文件

本来执行下面两条命令即可自动下载
source build/envsetup.sh
breakfast oneplus3
但是国内访问github实在太慢了,导致一直报错
在这里插入图片描述

有两种方法可以解决(最好两种都用):

  1. 改hosts来提高下载速度
  2. 手动下载放到相应目录

突然发现只需要给git设置代理就可以,之前用proxychains用不了
git config --global http.proxy http://127.0.0.1:8080
git config --global https.proxy http://127.0.0.1:8080

第一种方法
参考链接:https://zhuanlan.zhihu.com/p/107334179
vim /etc/hosts
增加如下内容:

# GitHub Start 
52.78.231.108 github.com
52.68.31.213 nodeload.github.com
54.180.75.25 api.github.com
13.124.75.135 codeload.github.com
185.199.109.133 raw.github.com
185.199.110.153 training.github.com
# GitHub End

你可以试试ping 52.78.231.108能不能ping通,如果不能。需要按照上面的链接重新找一个ip来替换。

接着运行/etc/init.d/networking restart之后,就可以运行开始的两条命令下载了

这种方法访问依旧很慢,只是从不动变为了慢慢动

第二种方法
https://github.com/LineageOS/android_device_oneplus_oneplus3 |-------------------------| device/oneplus/oneplus3
https://github.com/LineageOS/android_device_oppo_common |--------------------------------| device/oppo/common
https://github.com/LineageOS/android_kernel_oneplus_msm8996 |--------------------------| kernel/oneplus/msm8996
https://github.com/LineageOS/android_packages_resources_devicesettings |----------|packages/resources

前面是需要下载的文件,后面是需要放置的路径。默认你当前路径是最开始创建的lineage文件夹,如果路径不存在则手动创建。就比如第一个下载完后:

在这里插入图片描述
下载的时候需要选择分支,比如我编译的是lineage15.1就需要选这个分支
在这里插入图片描述
所有文件下载完成后,就可以执行开头的两个命令了,当然你也可以改一下hosts文件,因为还要访问github对比一下文件的。

如果是其他设备,这个清单在运行breakfast 设备名称之后便可以在.repo/local_manifests/roomservice.xml中看到
在这里插入图片描述
name为github的路径,前面加上https://github.com/就是地址了,path为本地路径,也就是下载完的文件要放在哪

提取驱动

https://wiki.lineageos.org/extracting_blobs_from_zips.html#extracting-proprietary-blobs-from-block-based-otas

有两种提取方式:从已经编译的lineage15.1刷机包内提取;从已经刷入lineage15.1的手机提取

我用的是第一种,因为我使用第二种一直在等待设备,我使用adb device是存在设备的

刷机包下载链接:https://www.celsoazevedo.com/files/android/oneplus3-lineageos/

在其他目录创建一个文件夹来操作,不要污染源码的目录文件。

mkdir /root/oneplus3_blob
cd /root/oneplus3_blob
从lineage15.1刷机包中解压system.transfer.listsystem.new.dat.br两个文件

apt-get install brotli # 安装brotli工具
brotli --decompress --output=system.new.dat system.new.dat.br # br文件转dat文件

下载https://github.com/xpirt/sdat2img中的sdat2img.py,然后执行python2 sdat2img.py system.transfer.list system.new.dat system.img,这会生成一个system.img文件。

接着在当前目录下mkdir system,然后挂载system.img到system目录下mount system.img system/

接着回到lineage/device/oneplus/oneplus3/目录中执行
./extract-files.sh /root/oneplus3_blob/system
提取完可以卸载那个目录了umount /root/oneplus3_blob/system

提取的时候可能会出现一个错误,没找到/sbin/dashd 这个文件(如下图)
在这里插入图片描述
我们需要在已经刷了lineage15.1的一加三手机上提取到这个文件,放到lineage/vendor/oneplus/oneplus3/proprietary/rootfs/sbin/dashd下,不然后面编译的时候会报这个文件找不到(如下图)
在这里插入图片描述
这是我提取的dashd(用于oneplus3的lineage15.1):https://www.lanzoui.com/iSaLAvufrpi

其他设备或系统需要自己提取,用这个可能会出问题。我想知道最开始的时候是怎么编译的,没有刷机包的时候官方是怎么生成这些文件。

开始编译

在编译之前需要先处理一件事,不然会报如下错误(图中圈中部分为实际错误),这个错误折腾了我好久,主要是多线程错误不是显示在最底部,藏的有点深。
在这里插入图片描述
解决方法很简单:https://blog.csdn.net/ZLK1214/article/details/113729027

编辑lineage/kernel/oneplus/msm8996/Makefile文件,在末尾加入HOSTCFLAGS += -fcommon即可

接着就可以愉快的编译了
export LC_ALL=C
brunch oneplus3
如果你新开过终端需要先执行下面两个命令再编译
source build/envsetup.sh
breakfast oneplus3

不出意外的话就可以看到这样的输出了
在这里插入图片描述
最后一行的路径就是刷机包的路径了,这是卡刷包,只需要在twrp下刷入即可。至于刷入后能不能成功开机我就不清楚了,我还没试。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kali Linux的步骤如下: 1. 首先,你需要解锁OnePlus 3T的引导程序。在解锁引导程序之前,你需要备份你的所有数据,因为这个过程会清除你的手机数据。 2. 在OnePlus 3T上启用USB调试。你可以通过进入设置 -> 关于手机 -> 软件信息 -> 连续点击“版本号”七次来启用开发者选项,然后进入开发者选项并启用USB调试。 3. 在电脑上下载并安装Android SDK,并确保你已经安装了OnePlus 3T的驱动程序。 4. 下载并解压缩Kali Linux NetHunter系统。 5. 将OnePlus 3T连接到电脑上,然后在命令提示符下输入“adb devices”以确认设备是否已连接。 6. 在命令提示符下输入“adb reboot bootloader”以将OnePlus 3T重启到引导程序模式。 7. 在命令提示符下输入“fastboot devices”以确认设备是否已连接。 8. 在命令提示符下输入“fastboot flash boot [Kali Linux NetHunter系统的boot.img文件路径]”以刷入Kali Linux NetHunter系统的boot.img文件。 9. 在命令提示符下输入“fastboot reboot”以重启OnePlus 3T。 10. 将OnePlus 3T连接到电脑上,然后在命令提示符下输入“adb devices”以确认设备是否已连接。 11. 在命令提示符下输入“adb shell”以进入OnePlus 3T的Shell界面。 12. 在Shell界面中,输入“su”以获取root权限。 13. 在Shell界面中,输入“setprop ro.opengles.version 196608”以解决Kali Linux NetHunter系统中的OpenGL问题。 14. 在Shell界面中,输入“startkali”以启动Kali Linux NetHunter系统。 完成以上步骤后,你的OnePlus 3T就已经成功刷入Kali Linux NetHunter系统了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值