建立aosp次级镜像

经常编译aosp的时候发现每次repo init -b切换分支的时候,都要sync很久,浪费的时间加起来都够给长者续无数秒了,反正硬盘也很大,于是决定建立一个本地的aosp mirror,增加一下工作效率,也给周围的小伙伴提供一下方便。

环境需要:ubuntu 16.04,一块大的硬盘(140G以上)。

第一步:下载aosp mirror

官方有教程,先选择好用的源(这里推荐google、清华、中科大的源)

repo init -u AOSP_URL/mirror/manifest --mirror

经过漫长的等待,1MB/s的话,需要48小时左右的时间,下载过后目录为:

1
2
APPSEC➜  google_mirror ls
accessories assets brillo device git-repo.git kernel mirror platform product third-party-review.git toolchain tools trusty

第二步:从本地的mirror里同步分支

如果是创建新的aosp仓库,执行

repo init -u /path/google_mirror/platform/manifest.git

之后repo sync就会使用本地的mirror。

如果是从其他源想切换到本地的源,需要修改2个文件。

1
2
3
4
5
6
nano $AOSP/.repo/manifest.xml
<remote name="aosp"
fetch=".." />

nano $AOSP/.repo/manifests.git/config
url = /path/google_mirror/platform/manifest # manifest.git is also OK

这里fetch的值一般不重要,因为我们根本不会向repo提交代码。

第三步:使用局域网内的mirror

客户端的方法一样,只修改repo里关于url的设置即可,同样也是那两个文件。

repo init -u git://192.168.1.103/platform/manifest.git

这里讲一下服务器端的设置。

请一定要严格按照下面这句话,路径末尾的"/"不可多也不可少,不然会造成在客户端尝试连接时git fetch whitelist的问题。

git daemon --verbose --export-all --base-path=/path/google_mirror /path/google_mirror

默认占用的是9418。

第四步:权限设置。

建立一个新的用户,用来存放driver的binary。这个目录用775的权限,里面文件也给775的权限,防止有人手残把这些文件删掉。。。

额外:添加硬盘后导致服务器无法开机的一种可能情况。

给服务器里复制次级镜像时候,新买了块硬盘,加上原先的两块一共有三块,开机说配置错误,让我输入root密码修改配置后重启,猜原因猜了比较久。

表现:一旦接入硬盘就会导致无法开机,拔掉却可以开机,整个过程已经被识别成功,开机后插上硬盘可以进行mount和format等操作。

折腾了比较久,修复磁盘的方法试过也没用,偶尔发现在将/etc/fstab的额外配置留空时发现可以开机了(虽然会少一块硬盘)所以结论是/etc/fstab被前人写坏了。。。

/etc/fstab的作用是开机前对设备进行挂载,每行表示一个设备,第一个参数用来标记硬盘的唯一性,一般用UUID做标记,也可以用/dev/sda1等做标记,后者也经常被提到说强烈不建议这么做。前人写的是/dev/sdc1,在我们插上硬盘后,这个数字是会变的,刚好变到我们新加的硬盘上,而测试过程中硬盘本身没有分区,或者分区的格式也不是ext3,就导致挂载失败拒绝开机。

尴尬,前人的锅我也的背了,所以按照规范将文件里的/dev/sdc1替换为UUID后,终于可以正常开机。之后就可以多人共享aosp,体验极速内网啦。

参考链接: