我如何获得内核源代码?

我打算写一些设备驱动程序,我需要获得Linux内核源代码。 我的Linux内核版本是3.2.0-23-generic-pae,我从这里下载了图像。 在我读过的很多文章中,它告诉我需要让整个内核树开始插入新模块。

如果我下载此图像并将其粘贴到usr/src/文件夹中,还是我必须做其他事情,这是否足够?

这将获得股票内核的来源:

 apt-get source linux-source 

您可以检查正在运行的内核版本,如下所示:

 uname -r 

这将打印如下:

 3.13.0-46-generic 

您可以通过以下方式找到系统上可用的当前源包版本列表:

 apt-cache search linux-source 

要获取内核的上游版本:

 git clone git://kernel.ubuntu.com/ubuntu/ubuntu-trusty.git 

在上面的链接中,’trusty’是Ubuntu版本的代号。 您可以通过以下方式找到已安装的Ubuntu版本的代号:

 cat /etc/lsb-release 
 apt-get source linux 

是最简单的方法。 它将从您的存储库下载源代码 – 它将与您正在运行的版本相同(假设您尚未对其进行自定义)。

但是如果你想找到维护源的位置,你可以运行:

 apt-cache showsrc linux 

查找“Vcs-”属性(版本控制系统)。 它通常是一个git(Vcs-Git)或mercurial存储库。

注意 – 这些命令适用于任何包。 只需用您感兴趣的软件包替换’linux’。还要注意’apt-get source’不需要sudo访问权限,并将源转储到当前目录中。

只需选择一个:

 sudo apt install linux-source # downloads into system directory sudo apt source linux-source # downloads into working directory 

如果您被告知在sources.list提供一些“来源”url,请编辑您的/etc/apt/sources.list文件并取消注释所需的deb-src行,例如(如果您正在运行Xenial):

 deb http://fr.archive.ubuntu.com/ubuntu/ xenial main restricted # deb-src http://fr.archive.ubuntu.com/ubuntu/ xenial main restricted 

删除最后一行的#可启用下载源存储库,包括内核源。

备注:

  • 使用现代工具; 避免apt-get
  • 这些命令下载当前内核的源代码(在我的例子中为4.4.0-75-generic )。
  • 下载到系统目录时,文件存储在/usr/src/linux-source-4.4.0/ (例如)。

直接从Launchpad下载源代码

奇怪的是,如果您正在寻找特定的内核版本,每个人都建议使用apt-get source ,这在大多数情况下都不起作用:

假设您需要3.19.0-58的内核源代码:
apt-get source linux-image-3.19.0-58-generic将获得该系列中最新内核的源代码:3.19.0-80在这种情况下,这不是你要求的。

所以你有两个选择:

1)放弃,安装内核3.19.0-80并使用apt-get source

2)直接从启动板获取源代码:

  • 谷歌网站:launchpad.net“linux-image-3.19.0-58-generic”

  • 这应该会为您提供该版本的Launchpad Package页面 。

  • 向下滚动,单击“源:”链接,您现在位于包源页面上 。

  • 向下滚动并下载.tar.gz.diff.gz.dsc文件:

链接

  • 将它们放在一个新目录中,使用dpkg-source -x *.dsc解包

笔记:

  • 肯定有更好的办法。
  • 你可以从git获得你想要的版本,但是你可以进行大量下载。 请参阅Ubuntu Wiki Kernel源代码中的 “使用git获取Ubuntu发行版的内核源代码” 。