大多数博客和书籍提到获取linux kernel 往往就是提供一条命令:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
或是
git clone https://github.com/torvalds/linux.git
甚至是直接从github上下载对应releases的zip包。
在实际操作过程中我遇到了如下问题:
问题一、
git clone 到一半出现error:
error: RPC failed; result=18, HTTP code = 200B | 1 KiB/s
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: recursion detected in die handler
查找原因:curl 的默认postBuffer值过小
解决方案:
git config http.postBuffer 524288000
问题二、
git clone 到一半出现另一个error:
error: RPC failed objects: 4851777, done.
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
查找原因:国内到github服务器或kernel.org服务器网速过慢(也许是我这网速太慢),导致连接中断。
解决方案:
方案1、到国内代码托管平台搜索对应的linux kernel source,git clone 后将origin地址更改成github即可。国内的osc可以搜索到现成的linux kernel代码。
方案2、需求git版本1.9以上
git clone https://github.com/torvalds/linux.git --depth=1
git fetch --unshallow
这个方法相当于先下载source tree 中的一个版本然后补全,因为是阶段式的所以中断的概率较小,我下载其中一个版本一次就成了,补全试了两次成了,还是有运气成分。