8 月底 9 月初,作为 Linux 的老窝,Kernel.org 被黑客攻击了,其攻击原因众说纷纭。一直以来 Linux 对于我来说不是很感兴趣,所以从来不会关注类似事件,可是这次这个攻击,却影响到了 Android 源码的同步。
最近在研究 Android ROM,想尝试一下编译 ROM,结果是在同步源码这个环节遇到了问题。同步过程中,虽然指向是 android.com,但是仍然会从 kernel.org 获取部分信息。而到目前为止,使用原来的同步方法仍然不能正常同步。
经过与 hzkindy 同学交流,他给了个同步的方法。这里做一记录,供不能同步的各位同学使用。
在获取 Android 源码的第一步,就是需要获得 Git 和 Repo,在获得 “repo” 的时候,就需要到 “kernel.org” 获取:
curl http://android.git.kernel.org/repo >~/bin/repo
基于上述原因,你是无法同步的,会提示:
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- 0:00:01 --:--:-- 0 curl: (7) couldn't connect to host
即使你之前已经获取了 “repo”,而你在同步 Android 源码时候也会提示:
android.git.kernel.org[0: 130.239.17.13]: errno=Connection refused android.git.kernel.org[0: 199.6.1.173]: errno=Connection refused android.git.kernel.org[0: 2001:6b0:e:4017:1972:112:1:0]: errno=Network is unreachable android.git.kernel.org[0: 2001:500:60:10:1972:112:1:0]: errno=Network is unreachable fatal: unable to connect a socket (Network is unreachable) error: Cannot fetch platform/bionic
故本文这里就使用另外源,来取得 Android 源码。
一、获取 repo
这个是老外自己建立的,使用这个源可以获得 repo,但是后续的源码也是使用老外自己建立的。首先获取 repo:
curl "http://php.webtutor.pl/en/wp-content/uploads/2011/09/repo" > ~/bin/repo
给 “repo” 增加相应权限:
chmod a+x ~/bin/repo
添加环境变量:
PATH=~/bin:$PATH
这样就获取了第三方的 repo。
二、同步 Android 源码
同样是使用老外自己的源,首先进入工作目录:
[root@localhost ~]# cd ~/android/system/
同步源码:
[root@localhost ~]# repo init -u git://codeaurora.org/platform/manifest.git -b gingerbread
开始同步:
[root@localhost ~]# repo sync -j16
这个是第三方的源码,不知道其中会不会有什么问题,我自己也同步了。请大家自己斟酌,这里仅仅是提供一种方法。
这个是高通 MSM 的源码 类似, 可以更新 呵呵 不过要看你的CPU的类型了 如果是高通的话 就可以 如果是 德仪的话 貌似就用这个编译出来的 不能用
Google官方的源码仓库现已全面恢复,无需特别方式即可正常同步源码了。
哦,这样哈,谢谢大哥提醒,我试试看。
刚实验了,好像没有完全恢复,至少这个没法执行:
curl http://android.git.kernel.org/repo > ~/bin/repo
自20日开始,源码仓库已经完全恢复。初始化、同步均可正常完成。无需其他解决方案。
兄弟你试试这个没法执行啊?
curl http://android.git.kernel.org/repo > ~/bin/repo
还有,使用此方法以前获得的repo(http://android.git.kernel.org/repo),现在用来获取源码同样失败,会提示无法连接。
再一次强调,CM源码仓库已完全恢复正常。
如果无法同步或初始化,清除原来已同步的代码,重新初初始化、同步。
嗯,同步源码确实没有问题了,但是有时候速度超级慢,天朝的防火墙啊。
不过呢,我说的意思是,如果是从头开始,同步源码,第一步就是获取 “repo”,但是按照之前的方法:
curl http://android.git.kernel.org/repo > ~/bin/repo
这句是无法执行的,因为这个页面还是404错误,不信你试试,呵呵。
而没有repo,是无法同步源码的吧。