如何获取内核源代码?

如何获取内核源代码?

我计划编写一些设备驱动程序,我需要获取 Linux 内核源代码。我的 Linux 内核版本是 3.2.0-23-generic-pae,我从以下网址下载了映像在我读过的许多文章中,它告诉我需要有整个内核树才能开始插入新模块。

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

答案1

这将获取库存内核的源代码:

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

答案2

apt-get source linux

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

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

apt-cache showsrc linux

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

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

答案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/(例如)。

答案4

在某些情况下,直接从以下位置下载你感兴趣的版本的 Linux 内核源代码和头文件更为实用http://kernel.org(一个相当可靠的 URL/网站,不会消失[例如,标准的 stackoverflow 对陈旧链接的担忧不是一个问题])

原因?例如,您可能对调试较旧/已停用且不再受支持的 Linux 版本感兴趣,其中软件包存储库指向死区,在某些情况下,要么没有可行的当前替代方案,要么存储库的密钥已过期,不允许您获取内容,需要难以记住的难以搜索的神秘技术才能使这些存储库正常工作。

或者您使用的 Linux 机器(或 VM)上的互联网网络可能出现故障,但文件共享或 NFS 可以正常运行,您可以将源下载到另一台机器上并通过文件系统访问。

如果您使用的是相对过时的 Linux 版本,您很可能必须从源代码构建一些内容,并以困难的方式获取它们。

相关内容