如何获得内核源代码?


25

我打算编写一些设备驱动程序,并且需要获取Linux内核源代码。我的Linux内核版本是3.2.0-23-仿制PAE和我从下载的图像。在我读过的许多文章中,它都告诉我需要整个内核树才能开始插入新模块。

如果我下载此图像并将其粘贴到usr/src/文件夹中就足够了,还是我需要做其他事情?


1
当我为一台机器自定义编译时,我通常只从synaptic安装'linux-source'软件包,但是鉴于您正在进行开发,您可能需要最新版本。该链接可能对您有用:help.ubuntu.com/community/Kernel/Compile
Mark

Answers:


27

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

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

如果我使用git克隆,该如何指定版本。另外,如果我克隆它是不够的,如果一个我复制八德入usr / src目录文件夹
审计局

那个git仓库专门保留到3.2.0; 它遵循Ubuntu Precise(12.04)中的内容。如果要使用其他版本,请将ubuntu-precise.git更改为ubuntu-quantal.git或其他名称。只需复制到usr / src中就可以了。
布莱斯2012年

好的,谢谢-但是您是如何找到git链接的呢?
2012年


使用...进行安装时,在哪里可以找到源代码树?该死,我应该读得更好。答案apt-get source不是apt-get install。源代码树最终将以您当前的路径结束。
专业备份

8
apt-get source linux

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

但是,如果要查找源的维护位置,可以运行:

apt-cache showsrc linux

查找“ Vcs-”属性(版本控制系统)。通常是git(Vcs-Git)或汞库。

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


这需要您要下载的计算机与目标计算机匹配。确实只有在拥有网络的情况下才有效。登陆此页面的大多数读者都没有网络(因此,为什么他们突然需要来源)。我需要它作为拇指驱动器上的压缩包,但我无法正常工作。
mckenzm

这仅将linux-headers下载到/usr/src- 而不是完整的内核源文件-在Ubuntu 16.04上
Pierz 18'8

4

直接从启动板下载源

奇怪的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)直接从启动板获取源代码:

链接

  • 将它们放在新目录中,并用 dpkg-source -x *.dsc

笔记:


感谢您这么清楚地解释这一点。但是,我仍然找不到linux-image-4.15.0-39-generic的源代码。这个过程不必要地复杂。我曾尝试使用谷歌搜索,但一直在寻找只有几千字节的软件包。有小费吗?
忘了

3

只需选择以下一项:

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

如果系统提示您在中提供一些“源” URL sources.list,请编辑/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/(例如)中。

对我不起作用(apt-get版本也不对)。我正在运行Ubuntu 16.04.4,内核4.4.0-98-generic。它说:“您必须在sources.list中放入一些'源'URI。” 我不知道该怎么做。
安德鲁·班布里奇

@AndrewBainbridge我添加了有关的信息。现在可以吗?
蒂姆(Tim)

是啊谢谢。这是我的愚蠢评论。我只需要搜索错误消息。无论如何,祝您努力。
安德鲁·班布里奇
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.