[教程]Ubuntu Touch基于CM10.1-通用移植教程

点击查看原图
本教程在三星S3和HTC ONE X上测试基本成功,One X开机之后屏幕黑死,但是可以链接ADB,可以链接刷机精灵等第三方软件,查询XDA之后得出Ubuntu底包在One X上确实存在开机黑屏,所以理论也算是移植开机成功。

移植前提要求必须机型有CM10.1(安卓4.2.1)要求电脑有文件对比工具,以及厨房等必备开发工具。

其次必须知道的是,Ubuntu开发者预览版,目前就算移植到手机上,也只是类似系统模拟器一样的原始版本,不具备实际使用功能,仅供体验试玩。

最后Ubuntu的运作原理:使用CM10.1内核,库来加载预先刷入Data区的Ubuntu系统镜像。

也许这么理解可能不太实际,但是至少目前确实是这样的。

操作过程很简单,如果机型能兼容Ubuntu底包数据开机,理论上都能正常进入系统,否则就只能等官方再次开源,或者基于源代码编译(官方教程不靠谱)。

以我移植的9300Ubuntu和官方的CM10.1对比得出,CM10.1的system/app,system/fonts和system/framework,这3个目录不会被Ubuntu用到,删除。
在system/bin存在3个Ubuntu必要文件:
\system\bin\ubuntu_chroot
\system\bin\ubuntuappmanager
\system\bin\uchroot

Etc文件夹在移植过程中完全可以过份阉割,因为Ubuntu并不会用到这些,删除:
\system\etc\bash
\system\etc\nano
\system\etc\ppp
\system\etc\ssh
\system\etc\terminfo
\system\etc\updatecmds

system/lib不需要做任何更改,你也可以理解为Ubuntu并不需要这些,因为有关Ubuntu的文件只有\system\lib\libubuntu_application_api.so,它就像一个系统Apk一样存在,运行。

system/xbin目录里面,根本都没有会被Ubuntu调用的文件。但是为了保证系统正常运行,需要保留基本文件:
\system\xbin\add-property-tag
\system\xbin\busybox
\system\xbin\check-lost+found
\system\xbin\dhdutil
\system\xbin\sqlite3
\system\xbin\su
以上文件都没具体作用了,至少在目前是这样,对CM10.1底包做深度阉割之后,可能大小不足100M了。

接下来需要修改刷机脚本:

默认的都不要管,在unmount("/system");之前添加刷入Ubuntu到data区的命令就行:
run_program("/sbin/mount","/data");
package_extract_file("ubuntu-i9300-myhk.tar.gz", "/data/ubuntu-myhk.tar.gz");
delete_recursive("/data/ubuntu_myhk_tmp_extract");
run_program("/sbin/mkdir", "/data/ubuntu_myhk_tmp_extract");
run_program("/sbin/tar", "--numeric-owner", "-xzf", "/data/ubuntu-myhk.tar.gz", "-C", "/data/ubuntu_myhk_tmp_extract");
delete_recursive("/data/ubuntu");
run_program("/sbin/mv", "/data/ubuntu_myhk_tmp_extract/binary/casper/filesystem.dir", "/data/ubuntu");
delete("/data/ubuntu-myhk.tar.gz");
delete_recursive("/data/ubuntu_myhk_tmp_extract");
unmount("/data");
run_program("/sbin/sync");

ubuntu-i9300-myhk.tar.gz这个文件是所有机型都通用,路径和BOOT.img在一起,原始文件是:quantal-preinstalled-phablet-armhf.tar.gz,可以在包里直接提取就行。或者百度一下,你就知道。。

最后我们需要对内核进行修改,简单的修改几句命令就可以使内核引导Ubuntu...

service sensorservice /system/bin/sensorservice
class main
user system
group graphics audio camera inet net_bt net_bt_admin net_bw_acct drmrpc

service ubuntuappmanager /system/bin/ubuntuappmanager
class main

service ubuntu_chroot /system/bin/ubuntu_chroot
class main
oneshot

修改完内核,就可以打包刷机测试,然后找到自己机器的细节错误,慢慢修改。本教程适合有一定移植基础的人去操作,新手不建议折腾。
版权声明:若无特殊注明,本文皆为《 明月浩空 》原创,转载请保留文章出处。
本文链接:[教程]Ubuntu Touch基于CM10.1-通用移植教程 https://limh.me/ubuntu_touch.html
正文到此结束

热门推荐

发表吐槽

你肿么看?

你还可以输入 250 / 250 个字

嘻嘻 大笑 可怜 吃惊 害羞 调皮 鄙视 示爱 大哭 开心 偷笑 嘘 奸笑 委屈 抱抱 愤怒 思考 日了狗 胜利 不高兴 阴险 乖 酷 滑稽

评论信息框
可使用QQ号实时获取昵称+头像

吃奶的力气提交吐槽中...

已有3条吐槽

小天

3年前(2014-12-10) 黑龙江省大庆市联通
1、如今touch进入了RTM正式发布的前期阶段,自家的手机也快要面世了,魅族前几天也放出了运行最新touch的mx4照片……这一切都在说明 touch越来越新了,touch越来越近了.
2、但最关键的问题的,看了你的博客后,发现自己想把这个touch移植的冲动越来越强烈了。
3、我自己有一部note3手机,n9002,双卡双待的,这样的手机能移植么?
4、如今最新的touch不知道还是不是如你及其他文章中提到的那样——与CM机制相同,剥离了java虚拟机的机制,像一个变种的android。
5、如今CM发展到最新的版本是CM11 M12阶段,是这样吧?
6、受自身设备的限制,我并没有体验过CM的ROM包,因为一直没有开发支持我这款手机的ROM包出现,不过似乎能感觉到其强大。那么追问的问题是,CM移植与touch移植应该都存在可能性,只是我找不到关键的点在哪里,或者说移植工作需要从哪里开始准备知识或者是开始呢?  
7、其实我更希望你的博客里能有更多的,更详细的移植类文章。
8、如果你方便的话,希望gtalk保持联系,并且可以推荐多多的移植类文章,因为这方面的文章在自己搜索的时候,居多都英文或者是关键字不正确而找不到有价值的。
 GNU/Linux   Google Chrome 39.0.2171.71

匿名

3年前(2014-10-14) 美国新泽西州伯灵顿县月桂山乡Comcast有线通信控股股份有限公司
defy没有改内核却依旧跑ut,搞不明白cm的库究竟怎么加载上data分区的ut的
 Windows 10   Internet Explorer 11.0

匿名

3年前(2014-08-22) 河南省郑州市联通
谢谢
 Windows 7 x64   Liebao Browser