我如何知道内核是否是使用 CONFIG_MODVERSIONS 构建的?

use*_*508 5 kernel

我正在运行 Ubuntu:

#lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 12.04.4 LTS
Release:    12.04
Codename:   precise## Heading ##
Run Code Online (Sandbox Code Playgroud)

和:

内核信息:

3.8.0-38-generic #56~precise1-Ubuntu SMP Thu Mar 13 16:23:47 UTC 2014 i686 i686 i386 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

我想知道这个正在运行的内核是否是使用构建的CONFIG_MODVERSIONS。有什么命令吗?

更新

#/usr/src/ubuntu-precise# make oldconfig | grep CONFIG_MODVERSIONS
/boot/config-3.8.0-38-generic:3420:warning: symbol value 'm' invalid for SPI_PXA2XX_PCI
/boot/config-3.8.0-38-generic:4222:warning: symbol value 'm' invalid for VIDEO_EM28XX_RC
/boot/config-3.8.0-38-generic:6694:warning: symbol value 'm' invalid for NFS_V3
/boot/config-3.8.0-38-generic:6696:warning: symbol value 'm' invalid for NFS_V4
Run Code Online (Sandbox Code Playgroud)

此后没有任何进展。在这里挂了30多分钟

ter*_*don 4

尝试这个:

  1. 安装dpkg-dev软件包。这是步骤 2 所需要的。

    sudo apt-get install dpkg-dev
    
    Run Code Online (Sandbox Code Playgroud)
  2. 下载您当前使用的内核的源代码:

    apt-get source linux-image-$(uname -r)
    
    Run Code Online (Sandbox Code Playgroud)

    这将在当前目录中创建一个包含内核源代码的目录。例如,在 13.10 运行内核版本 上3.11.0-12-generic,它创建了:

    /home/terdon/linux-3.11.0
    
    Run Code Online (Sandbox Code Playgroud)
  3. 检查文件中是否设置了该选项~/linux-3.11.0/.config

    $ grep CONFIG_MODVERSIONS  ~/linux-3.11.0/debian.master/config/config.common.ubuntu
    CONFIG_MODVERSIONS=y
    
    Run Code Online (Sandbox Code Playgroud)

正如您在上面看到的,该选项默认设置为y(on),因此大概,除非您编译了自己的内核,否则该选项是在您正在使用的内核中设置的。


小智 3

尝试:

grep MODVERSIONS /boot/config-$(uname -r)
Run Code Online (Sandbox Code Playgroud)

如果你得到

CONFIG_MODVERSIONS=y
Run Code Online (Sandbox Code Playgroud)

然后就可以了。