Ubuntu Touch在小米note3上的移植记录一
文章目录
前言
三年前买的小米note3光荣退役,但是除了屏幕有道裂缝外其他的还能用,不忍心放家里吃灰,所以拿来搞一些有意思的东西。
最近想玩玩android下的linux,先尝试了LinuxDeploy和Terminal,效果都不咋好,有听说有能够直接运行linux的方法,研究了一下并没有适配我的老爷机。遂打算自己动手,丰衣足食。
一、准备工作
1、环境搭建
在虚拟机中安装用到的包
sudo apt install android-tools-mkbootimg bc bison build-essential \
ca-certificates cpio curl flex git kmod libssl-dev libtinfo5 python2 \
sudo unzip wget xz-utils img2simg jq
2、准备内核源码
环境搭建完成后去lineageos的github仓库寻找适配你自己设备的仓库
LineageOS官方git仓库
在仓库里搜索你设备的代号,然后选择android_kernel_xxxx_xxxx,fork到自己的仓库里(不fork也可以,自己修改deviceinfo里面的链接信息即可)。
3、获取boot.img启动参数
完成了上面几步,还剩下boot参数就可以开始编译了。去lineageos官网下载对应机型的16.0版本的适配刷机包。
现在官网已经下载不到老版本的刷机包,只有最新的18.0可以下载,为了保证不出问题,我们需要下载16.0版本。这里推荐一个网站可以搜索到各个历史版本的刷机包下载速度慢的自备梯子点我搜索下载
下载好后解压刷机包,找到里面的boot.img,复制到ubuntu里面,然后用大神的脚本获取boot参数,脚本在此,用法:
<path-to-unpack_bootimg.py> --boot_img <path-to-boot.img>
保存获取的参数。
准备工作到此结束。
二、编译
1.获取官方推荐的repo
采用官方推荐Xiaomi-violet的repo
新建工作目录
mkdir WorkSpace
cd WorkSpace
克隆到虚拟机
git clone https://gitlab.com/ubports/community-ports/android9/xiaomi-redmi-note-7-pro/xiaomi-violet.git
2.修改deviceinfo适配自己的机型
其中要注意几点
deviceinfo_name
机型自己填
deviceinfo_kernel_source
为lineageos16.0官方适配分支的linux kernel,最好是分支到自己的仓库,当然也可以直接使用,自己修改git仓库链接即可。
deviceinfo_kernel_source_branch
版本要选对,lineageos16.0,对应安卓9.0.
deviceinfo_kernel_defconfig
要换成对应的配置文件,在内核仓库的arch/arm64/configs/下面找到适合你的配置文件
deviceinfo_kernel_cmdline
这个是内核启动命令,复制刚刚获取的kernel启动参数到这里,再在后面加上一句console=tty0
,有疑问见上图笔者的deviceinfo
。
deviceinfo_kernel_clang_compile
这个是选择编译内核的编译工具,等与true使用clang,等于false使用gcc,两者主要是对c语法支持不一样,当遇到的函数嵌套定义时,使用gcc可以编过,但是clang不能。如果你发现编译函数嵌套定义出错,那么切换到gcc试一下吧。
deviceinfo到这里就差不多了。动手开始编译吧!
后续待发布…
总结
例如:以上就是今天要讲的内容,本文仅仅简单介绍了ubuntu touch的移植方法,如果有问题可以联系作者qq:2391627307,可以一起交流移植经验。