【问题标题】:Modifications not taken into account when recompiling linux kernel sources重新编译 linux 内核源代码时未考虑的修改
【发布时间】:2021-09-18 17:27:25
【问题描述】:

我想使用 userfaultfd 功能的写保护模式,但它仅在 Linux 5.11 中实现。 我有内核 5.4 的 ubuntu 20,所以我从源代码安装了 5.11 版 Linux,但是当我在安装的版本上重新启动并尝试在 c 用户程序中使用写保护模式时,宏(例如,UFFDIO_WRITEPROTECT)似乎仍然没有定义.而且我验证了 userfaultfd 不是一个模块(正在执行 lsmod)。

另一方面,如果我在调度程序中进行修改只是为了测试(比如说在 kernel/sched/core.c:context_switch 中),那么修改会被考虑在内,因为这是在内核中,但是用户空间的修改不是,我很困惑。

userfaultfd.c 文件位于内核的 fs/ 目录中。 那么请问这是我在编译过程中缺少的东西吗(make menuconfig,make,make modules_install,make)?

【问题讨论】:

  • in a c user program the macros 那么你是否在程序中包含了新的 linux 头文件?
  • 我包含了从 5.4 修改为 5.11 的 userfaultfd.h 库

标签: compilation linux-kernel


【解决方案1】:

我错误地解释了我遇到的错误。 当我在新编译的内核上启动时,确实会考虑到这些修改。

但是,当我想了解在编译内核上启动时会发生什么时,我得到了这个:

  • 在从源代码编译的内核上启动时,/usr/include 中的库不会在磁盘上修改

  • 如果你想用修改过的覆盖它们,你应该这样做:

    make deb-pkg //从内核源目录 光盘.. sudo dpkg -i *.deb

这将安装新内核并覆盖头文件

【讨论】:

    猜你喜欢
    • 2013-09-27
    • 1970-01-01
    • 2023-03-12
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    • 2021-02-03
    • 1970-01-01
    相关资源
    最近更新 更多