[转]http://www.360doc.com/content/17/0410/16/23107068_644444795.shtml

1. 前言

本文主要讲述ubuntu下通过git下载linux kernel源码的方法

2. git安装

sudo apt-get install git-core ,安装完后查看版本如下:

图 查看git版本

3. 获取linux内核源码

在kernel的官网上有三种版本,mainline,stable,longterm

  • mainline是主线版本,最新的
  • stable是稳定版
  • longterm是长期支持版
  • eol,当然就是不再支持

通过git下载除了第一次要全部下载外后续的下载都比较快,且获取不同版本的内核也很方便,管理方便,与使用SVN获取代码类似,只需要执行checkout命令即可。

下面介绍如何利用git获取源码:

1. 新建一个文件夹

2. 在该文件夹下 使用git命令git clone URL获取linux内核源码如下:

git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git

该指令的源地址可以到linux kernel的官方网站(https://www.kernel.org/)获得,点击GIT https://git.kernel.org/选项,在弹出的界面找到 kernel/git/stable/linux-stable.git,点击后在底部可以看到git源地址如下:

图 stable kernel的git url

注1:以上地址用第一个即可,第一次获取源码会比较久,后续再进行获取及其它版本的获取就比较快了。获取完源码后会在内核源码的顶层目录下看到一个隐藏的.git文件夹,该文件夹是git用于版本库管理的文件夹,对linux源码本身无影响,这跟SVN的是类似的。

注2: 通过实际查看下载后的版本发现这个GIT URL下载的是mainline版本

3.   查询下载的源码的版本:

下载源码后可以通过在源码顶层目录下执行make kernelversion命令查询源码的版本,如下

图 查看kenrel的版本

也可以通过打开源码顶层目录下的Makefile文件在文件开始处看到,如下

图 Makefile中显示的内核版本号

注意:要查看当前运行的系统的内核版本可以使用uname -a,如下

当然,也可行通过查看相关文件知道当前运行系统的内核版本。

4.   获取不同版本的kernel及分支管理:

很多时候不仅需要最新稳定版本的内核,也需要以前版本的稳定内核,这时可以通过git的branch和checkout命令实现(必须是先完成了2中的clone才能切换到其它版本进行其它版本源码的获取)。

查看branch的帮助信息可了解branch的使用方法,如下:

图 git branch 帮助信息

其中选项r可以查看远程的分支版本,选项a可以查看本地和远程的分支版本,通过在branch后加分支名可以创建分支,选项d是删除前合并分支,D则是强制删除。

创建分支:git branch <分支名>
  切换分支: git checkout <分支名>
  该语句和上一个语句可以和起来用一个语句表示:git checkout -b <分支名>
  删除分支:git branch -d <分支名>, 如果该分支没有合并到主分支会报错,可以用命令git branch -D <分支名>强制删除。

通过git branch -a查看本地和远程的分支如下:

图 git branch -a查看远程和本地所有分支

git不能删除当前所在的分支,必须退出要删除的分支才能对该分支进行删除。通过执行git checkout remotes/origin/linux-3.8.y

切换到远程分支获取3.8.8版本的内核源码,整个获取过程不到一分钟。同样的,可以检出其它版本的linux内核源码,若不清楚远程都有些什么版本可以通过git branch -r或-a查询,选项r只能查远程版本,选项a会把本地和远程的版本都列出。

现在大家都知道git 获取的可不仅仅是“最新”的代码,还包括历史代码。 你还可以用 git log, git tag, git branch -a.git branch -r 等命令查看内核代码的历史信息, 标签信息(不同的正式版本应该都打有相应标签),分支信息等。 可以用 git checkout xxx 的命令来切换到 xxx 版本,xxx就是通过用git branch -a, git branch -r 命令查到的版本。

git还会涉及到一些分支的合并、提交等的问题,此处不作介绍。

4.  git、svn与gitHub

  • git

git是分布式的版本管理系统。也就是说git可以进行本地commit和checkout,不需要远程服务器干涉,比如进行了修改后可以进行本地的commit,也可以checkout进行再次修改,等到最终确定OK后如果需要,再提交到远程的版本库中,这样就会大大减轻远程服务器的负担,特别适合于开源项目的版本管理,目前linux、android等大型开源项目都是通过git进行管理的,因为这些开源项目面向的是全球,所有人都可能会进行访问。

  • svn

SVN是集中式的版本管理系统。SVN必须是直接提交到远程服务器的版本库中,没有远程的服务器就无法commit或checkout,这样如果很多人对服务器进行访问就会对服务器 造成很大的负担甚至瘫痪,所以SVN这种集中式的管理方式不适合开源项目的版本管理,比较适合公司或个人的非开源项目的代码版本管理。

  • github

github是基于git的用于提供代码的托管,GitHub可以托管各种git库,GitHub项目本身自然而然的也在GitHub上进行托管,只不过在一个私有的,公共视图不可见的库中。对于gitHub的使用,要进行用户的注册,开源项目可以免费托管(你可以免费申请托管你自己的开源项目),但私有库则并不如此,更多相关资料和使用方法可以在网上查,此文不作介绍。

5. 参考文档

[1]http://www.360doc.com/content/17/0410/16/23107068_644444795.shtml

git获取内核源码的方法的更多相关文章

  1. Linux内核源码分析方法

    一.内核源码之我见 Linux内核代码的庞大令不少人“望而生畏”,也正因为如此,使得人们对Linux的了解仅处于泛泛的层次.如果想透析Linux,深入操作系统的本质,阅读内核源码是最有效的途径.我们都 ...

  2. 【转】Linux内核源码分析方法

    一.内核源码之我见 Linux内核代码的庞大令不少人“望而生畏”,也正因为如此,使得人们对Linux的了解仅处于泛泛的层次.如果想透析Linux,深入操作系统的本质,阅读内核源码是最有效的途径.我们都 ...

  3. Linux内核源码分析方法_转

    Linux内核源码分析方法 转自:http://www.cnblogs.com/fanzhidongyzby/archive/2013/03/20/2970624.html 一.内核源码之我见 Lin ...

  4. Ubuntu下获取内核源码

    查看当前系统使用的内核版本: apt-cache search linux-source 输出如下: linux-source - Linux kernel source with Ubuntu pa ...

  5. Windows下比较简单的获取网页源码的方法

    第一个方法是使用MFC里面的 <afxinet.h> CString GetHttpFileData(CString strUrl) { CInternetSession Session( ...

  6. php之获取程序源码的方法

    文件hello.php和index.php在同一目录 hello.php <?php class hello{ public function __construct() { echo 'hel ...

  7. centos的linux内核源码下载方法

    http://vault.centos.org/ http://blog.csdn.net/xiongzhizhu/article/details/51816243

  8. jenkins获取git上的源码

    jenkins获取git上的源码会遇到三种情况,我们在这里会分别介绍一下: 一.获取git上public(公有)的项目 只需配置仓库的URL即可 jenkins下使用git获取源码的配置方法 二.获取 ...

  9. Kernel.org 被黑,获取 Android 源码方法一则

    8 月底 9 月初,作为 Linux 的老窝,Kernel.org 被黑客攻击了,其攻击原因众说纷纭.一直以来 Linux 对于我来说不是很感兴趣,所以从来不会关注类似事件,可是这次这个攻击,却影响到 ...

随机推荐

  1. 【转】Linux系统进程的知识总结,进程与线程之间的纠葛

    我们先打个比方,多线程是十字路口多线程是平面交通系统,造价低,但是红绿灯多,老堵车,而多进程是则是立交桥,虽然造价高,上下坡多耗油,但是不堵车.这是一个抽象的概念.相信大家看完会有这种感觉. 进程和线 ...

  2. cf500E New Year Domino (倍增)

    先用线段树处理出推倒某一个后能覆盖到的最右端的位置R(绝对不能是最右边的那个骨牌,因为有可能右面的很短,左面的巨长(R不随L单调),后面算花费又需要用到这个位置),之后可以花费R到第一个比R大的左端点 ...

  3. BFS求解迷宫的最短路径问题

    题目:给定一个大小为N*M的迷宫,迷宫由通道('.')和墙壁('#')组成,其中通道S表示起点,通道G表示终点,每一步移动可以达到上下左右中不是墙壁的位置.试求出起点到终点的最小步数.(本题假定迷宫是 ...

  4. android 同时打开两个sqlite database db

    1,数据库类 package com.example.testdb; import android.content.Context; import android.database.SQLExcept ...

  5. 读入字符串/字符 scanf与getchar/gets区别

    1. 读入字符 scanf/getchar:空格.Tab.回车都可以读入.但要以回车作为结束符. 所以当读入字符时,注意去掉一些干扰输入的字符,如空格和回车 2. 读入字符串 scanf:不能读入空格 ...

  6. 原生js操作option

    <script type="text/javascript"> // 1.动态创建select function createSelect() { var mySele ...

  7. 2018.10.2浪在ACM 集训队第三次测试赛

    2018.10.26 浪在ACM 集训队第三次测试赛 今天是暴力场吗???????可怕 题目一览表 来源 考察知识点 完成时间 A 1275 珠心算测试 NOIP 普及组 2014 暴力??? 201 ...

  8. spoj QTREE - Query on a tree(树链剖分+线段树单点更新,区间查询)

    传送门:Problem QTREE https://www.cnblogs.com/violet-acmer/p/9711441.html 题解: 树链剖分的模板题,看代码比看文字解析理解来的快~~~ ...

  9. 20145215《网络对抗》Exp3 免杀原理与实践

    20145215<网络对抗>Exp3 免杀原理与实践 基础问题回答 杀软是如何检测出恶意代码的? 基于特征来检测:恶意代码中一般会有一段有较明显特征的代码也就是特征码,如果杀毒软件检测到有 ...

  10. 搭建Telnet服务器

    搭建Telnet服务器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 可能大家都知道现在已经很少有人用TELNET服务器, 因为它传输数据是以明文的方式,我们很容易通过抓包软件讲数 ...