[转]基于CM 10.01的Ubuntu Touch通用移植教程

笔记本/便携移动设备,手机平板等软硬件
回复
felonwan
帖子: 262
注册时间: 2008-09-12 12:32

[转]基于CM 10.01的Ubuntu Touch通用移植教程

#1

帖子 felonwan »

原文作者: 明月浩空; 来源:http://limh.me/ubuntu_touch.html

本教程适合有一定移植基础的人去操作,新手不建议折腾。

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

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

其次必须知道的是,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
修改完内核,就可以打包刷机测试,然后找到自己机器的细节错误,慢慢修改。本教程适合有一定移植基础的人去操作,新手不建议折腾。
上次由 felonwan 在 2013-11-30 22:17,总共编辑 1 次。
seoul_sz
帖子: 50
注册时间: 2007-10-17 16:37

Re: [转]基于CM 10.01的Ubuntu Touch通用移植教程

#2

帖子 seoul_sz »

厨房-“Android Kitchen”,是安卓rom的定制、修改软件
felonwan
帖子: 262
注册时间: 2008-09-12 12:32

Re: [转]基于CM 10.01的Ubuntu Touch通用移植教程

#3

帖子 felonwan »

seoul_sz 写了:厨房-“Android Kitchen”,是安卓rom的定制、修改软件
:em06 原来是这样啊,受教了。不过直接写成这样还是欠妥的,最好加个引号。
lj940424
帖子: 2
注册时间: 2014-02-12 22:14
系统: win7

Re: [转]基于CM 10.01的Ubuntu Touch通用移植教程

#4

帖子 lj940424 »

:em01 :em01 :em01 支持。 谢谢楼主
回复