建立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 | APPSEC➜ google_mirror ls |
第二步:从本地的mirror里同步分支
如果是创建新的aosp仓库,执行
repo init -u /path/google_mirror/platform/manifest.git
之后repo sync就会使用本地的mirror。
如果是从其他源想切换到本地的源,需要修改2个文件。
1 | nano $AOSP/.repo/manifest.xml |
这里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,体验极速内网啦。
参考链接: