我如何获得内核源代码?

Sab*_*Sab 29 kernel

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

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

Bry*_*yce 28

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

apt-get source linux-source
Run Code Online (Sandbox Code Playgroud)

您可以像这样检查内核的哪个版本正在运行:

uname -r
Run Code Online (Sandbox Code Playgroud)

这将打印如下内容:

3.13.0-46-generic
Run Code Online (Sandbox Code Playgroud)

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

apt-cache search linux-source
Run Code Online (Sandbox Code Playgroud)

要获取内核的上游版本:

git clone git://kernel.ubuntu.com/ubuntu/ubuntu-trusty.git
Run Code Online (Sandbox Code Playgroud)

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

cat /etc/lsb-release
Run Code Online (Sandbox Code Playgroud)

  • 如果我使用 git 克隆我如何指定版本。另外,如果我克隆,将其复制到 usr/src 文件夹中就足够了 (2认同)

小智 9

apt-get source linux
Run Code Online (Sandbox Code Playgroud)

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

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

apt-cache showsrc linux
Run Code Online (Sandbox Code Playgroud)

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

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


Tim*_*Tim 7

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

sudo apt install linux-source  # downloads into system directory
sudo apt source linux-source  # downloads into working directory
Run Code Online (Sandbox Code Playgroud)

如果有人告诉你给一些“来源网址即可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
Run Code Online (Sandbox Code Playgroud)

删除#最后一行上的 允许下载源存储库,包括内核源。

评论:

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


lem*_*eze 7

直接从 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

笔记: