当前位置: 首页>>技术教程>>正文


我如何获得内核源代码?

问题描述

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

如果我下载此图像并将其粘贴到 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 访问权限,并且会将源代码转储到您的当前目录中。

第三种办法

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

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

笔记:

  • 肯定有更好的办法。

  • 您可以从 git 获得您想要的版本,但您需要大量下载。请参阅 Ubuntu Wiki Kernel Source Code 中的“使用 git 获取 Ubuntu 版本的内核源代码”。

第四种办法

只需从以下选项中选择一项:

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

如果您被告知在 sources.list 中提供一些 ‘sources’ 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/ 中(例如)。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12067.html,未经允许,请勿转载。