如何从内核的源代码中获取特定文件?

Big*_*ack 2 kernel files

我需要 Linux 内核源代码中的两个文件,我错误地删除了它们:

  1. Option.c
  2. usb-wwan.h

我使用这些命令进行搜索,但没有找到它们:

find -name Option.c
find -name usb-wwan.h
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到这些文件?(我确实可以访问 Ubuntu 12.04 安装盘。)

Eli*_*gan 5

获取 Linux 的源代码(对于 Ubuntu 的下游内核)

您以某种方式获得了内核源代码。您应该重新下载它们,或者重做您为获取它们所做的任何事情。

特别是,如果您运行的是 Ubuntu 12.04,并且您不知道内核源代码是如何获得的,或者是通过安装名称以 开头的软件包获得的linux-source,那么您可以通过完全重新安装软件包来恢复任何已删除的文件:

sudo rm -rf /usr/src/linux-source-3.2.0/linux-source-3.2.0
sudo apt-get update
sudo apt-get --reinstall install linux-source-3.2.0
cd /usr/src/linux-source-3.2.0
sudo tar xvjf linux-source-3.2.0.tar.bz2
Run Code Online (Sandbox Code Playgroud)

(请注意,linux-source-3.2.0在第一个命令中出现两次是有意的,这将删除手动提取的源目录(如果有)。)

  • 您可能还希望安装该软件包linux-source(名称中没有版本号),以便在新内核可用时继续获取它们的源代码。但是重新安装 linux-source上面的方法将不会替换丢失的文件,linux-source只是一个元数据包总是依赖于最新的版本控制linux-source-包在你的Ubuntu版本。

在内核源中按名称搜索文件

现在你应该有丢失的文件,所以搜索它们:

find /usr/src/linux-source-3.2.0/linux-source-3.2.0 -iname Option.c -or -iname usb-wwan.h
Run Code Online (Sandbox Code Playgroud)

请注意,我使用了-iname执行不区分大小写匹配的选项。(Option.c带有大写O字母 的 ,对于 Linux 内核源代码中的源文件来说是一个不太可能的名称。)

输出将如下所示:

/usr/src/linux-source-3.2.0/linux-source-3.2.0/drivers/usb/serial/option.c
/usr/src/linux-source-3.2.0/linux-source-3.2.0/drivers/usb/serial/usb-wwan.h
Run Code Online (Sandbox Code Playgroud)

请注意,这些文件来自 Ubuntu 的下游内核,专门为 Ubuntu 及其父发行版 Debian打补丁(即修改)。有关详细信息,请参阅此页面(尤其是本节)。这可能就是您想要的,因为它对应于可能实际安装在您的机器上的内核。但是根据您的特定需求,您可能需要完全不同的内核。