分享

T959 rom移植和内核移植以及基带相关的教程

 天马行空之我 2011-08-30
该教程不仅适用于t959也同时适用于所有的2.3rom的移植,不过具体出现的bug需要针对性的解决了
yan大写了些相关教程,我把我自己理解的部分简化写成好理解一些的发出来,希望t959移植内核和rom漫天飞扬~
其实rom移植很简单主要包含了这么几部分:
1.内核部分
就是一个名字是boot.img的文件,这个文件一般都在刷机包的根目录下(刷机包可以直接用rar解压),这是内核但是具体修改内核的事情就超出我能力范围了,也太过复杂鉴于这是一个为了让大家都能学会的教程,这里略过不表;
2.基带部分
一般其他机器rom的基带我们是不能拿过来直接用的,拿过来直接用的结果大部分是无信号或是严重的通话质量问题,所以一般情况下,都要刷回本身机器的基带,跟基带有关的文件有这么几个,也是在刷机包的根目录下:modem.bin(这个就是基带本身了),erase_image,busybox,updater.sh。如果都是2.3这几个文件不需要修改直接拿过来用就可以了,updater.sh这个文件可以用notepad2之类的软件打开,有能力的可以打开看看。
3.键盘布局
在\system\usr这个目录下有keychars和keylayout两个文件夹,如果说我现在要移植一个i9000的rom,这是rom名字是9000,而我需要拿t959刷机包下的keychars和keylayout两个文件夹替换掉9000rom对应路径下的这两个文件夹,如果不替换的话一般情况是触摸屏幕失灵,至少我实验下是这个情况。这两个文件夹直接拿过来去替换就好了,有能力的可以具体研究两个文件夹下文件的作用。
4.wifi部分,这部分不是一定要替换的,有的rom会在修改内核后wifi失灵,我移植cm内核到miui下的时候wifi失灵了,我把修正wifi的方法顺便写出来吧
具体是这几个文件:
system\bin目录下的wlan_cu、wlan_loader、wpa_cli、wpa_supplicant这4个文件;
system\etc\wifi目录下的tiwlan.ini;
wifi\system\lib目录下的libwpa_client.so;
system\lib目下的modules文件夹下的所有文件;
我在移植cm内核到miui下的时候,修正wifi只需要把system\lib目下的modules文件夹下的所有文件替换掉就行了,不需要替换其他的。
5.GPS部分
目前修正959gps的补丁包含这两个文件AngryGPS.apk和gpsd,把gpsd移到\system\vendor\bin下,把AngryGPS.apk移到system\app下
关于i9000 rom GPS驱动修改为959驱动的方法目前我也没太搞明白就不具体描述了
6.打包的方法,如果是移植rom的话把上面我提到的文件直接替换到想要移植的9000 rom下就可以了,在rar下操作,不要解压缩,直接在rar下替换就可以了。
如果是制作内核或基带就需要提到updater-script这个文件了,这个文件在\META-INF\com\google\android目录下,这个文件可以直接用notepad2软件打开编辑
下面我写的,就是我之前那个跟进cm内核的补丁下updater-script的内容,简单说包括这些内容:移植cm内核,修正gps补丁,修改wifi文件,以及修改基带。
updater-script 具体内容如下:
mount("yaffs2", "MTD", "system", "/system");
show_progress(0.200000, 0);
ui_print(" ");
ui_print("+++ CM 74 ** MI +++");
ui_print(" ");
show_progress(0.600000, 0);
package_extract_file("bml_over_mtd", "/tmp/bml_over_mtd");
set_perm(0, 0, 0777, "/tmp/bml_over_mtd");
package_extract_file("bml_over_mtd.sh", "/tmp/bml_over_mtd.sh");
set_perm(0, 0, 0777, "/tmp/bml_over_mtd.sh");
show_progress(0.200000, 10);
package_extract_dir("system/", "/system/");
show_progress(0.200000, 10);
package_extract_file("updater.sh", "/tmp/updater.sh");
set_perm(0, 0, 0777, "/tmp/updater.sh");
package_extract_file("busybox", "/tmp/busybox");
set_perm(0, 0, 0777, "/tmp/busybox");
package_extract_file("erase_image", "/tmp/erase_image");
set_perm(0, 0, 0777, "/tmp/erase_image");
package_extract_file("modem.bin", "/tmp/modem.bin");
set_perm(0, 0, 0777, "/tmp/modem.bin");
show_progress(0.100000, 0);
assert(package_extract_file("boot.img", "/tmp/boot.img"),
write_raw_image("/tmp/boot.img", "boot"),
run_program("/tmp/bml_over_mtd.sh", "boot", "72", "reservoir", "2004", "/tmp/boot.img"),
delete("/tmp/boot.img"),
run_program("/tmp/updater.sh") == 0);
show_progress(0.100000, 0);
unmount("/system");

如果是做内核的话为了能在recovery刷包,需要把对应rom下\META-INF文件夹的内容完整的复制到你制作的内核中,例如我移植cm内核到miui下就需要把miui rom下的\META-INF文件夹的内容完整的复制到我制作的内核中,然后修改updater-script文件。
嗯具体内容差不多了,等我想起来了再补充
我以前帖子里有我做的cm内核大家可以下下来解压缩后研究下里面的内容,可以少走不少弯路。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多