本教程适合有一定移植基础的人去操作,新手不建议折腾。
本教程在三星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
代码: 全选
\system\etc\bash
\system\etc\nano
\system\etc\ppp
\system\etc\ssh
\system\etc\terminfo
\system\etc\updatecmds
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
接下来需要修改刷机脚本:
默认的都不要管,在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...
代码: 全选
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