为不同的Linux版本构建内核模块

2023-11-25

我是编写内核模块的新手,因此面临很少的非技术问题。

由于为特定内核版本(例如 3.0.0-10,10 是补丁号)创建内核模块需要相同版本的内核头文件,因此看起来直接安装内核头文件并在那里开始开发。 但修补内核版本的内核头不可用。 因为我有一个来宾内核 vmlinuz-3.0.0-10 在机器中运行,并且在下载内核标头时它说找不到。

  • 另一种方法是获取该特定内核的源代码,但同样的问题是修补内核的相同源代码不可用(不需要获取 linux-kernel-3.0.0-10 甚至 linux-kernel-3.0.0 的源代码和第 10 个补丁)。在某些情况下,可以获得正在运行的内核的源代码,但并不总是可行。

  • 另一种是构建运行内核之外的内核,并将构建的内核放置在机器中。但它需要构建该内核的模块,这是一个耗时且耗时的过程。

所以问这个问题的目的是想了解内核驱动开发人员的偏好是什么。还有其他选择吗?

是否可以在一个版本中编译内核模块并在另一个版本中运行(虽然会出现错误,但是有没有解决方法?)


因此,构建新内核并不是一个好的选择,因为它需要:

  • 构建内核
  • 构建模块和固件
  • 构建标题 将上述所有内容移动到适当的位置(如果您的机器与您要开发模块的机器不同)

因此,如果您有用于运行系统的内核头文件,那么您无需下载任何内核版本的源代码,并且在使用模块时

make -C /lib/modules/kernel-headers-x.y.z/build M=`pwd` modules

你的模块就准备好了。

如果有更好的答案,我会毫不犹豫地接受其中任何一个。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为不同的Linux版本构建内核模块 的相关文章

  • Python:选择多个已安装模块版本之一

    在我的系统上 我多次安装了多个模块 举个例子 numpy 1 6 1安装在标准路径中 usr lib python2 7 dist packages 我有一个更新版本numpy 1 8 0安装于 local python lib pytho
  • Maven编译错误:包不存在

    我正在尝试向现有企业项目添加 Maven 支持 这是一个多模块项目 前 2 个模块编译和打包没有问题 但我面临编译错误 我尝试在多个模块中使用相同的依赖项 我的结构是 gt parent gt pom xml gt module 1 gt
  • 多线程进程的线程ID可以与另一个正在运行的进程的进程ID相同吗?

    我正在尝试找到一种方法来唯一标识多进程环境中的线程 我有一个服务器 它跟踪连接到它的不同进程 其中一些是多线程的 一些不是 为了识别多线程连接中的线程 我使用线程 ID 作为唯一标识符 在任何给定时间最多有 1 个多线程进程连接 我的问题是
  • /proc/kmsg 和 dmsg 有什么区别?

    我们通常这样做cat proc kmsg or dmesg从用户空间查看内核日志 我明白了dmesg是一个循环缓冲区 它从kmsg 但是kmsg也不是循环缓冲区 它们之间有什么区别和联系呢 宽松地说 dmesg 是一个转储 proc kms
  • 为什么存在系统调用

    我一直在阅读有关系统调用及其在 Linux 中如何工作的内容 我还有更多的阅读要做 但我读过的一件事都没有回答 那就是 为什么我们需要系统调用 我知道系统调用是用户空间程序要求内核执行某些操作的请求 但我的问题基本上是 为什么用户空间程序本
  • Linux 内核运行稀疏失败 - /bin/sh: 1:稀疏: 未找到

    我在 Linux 内核上运行稀疏 但它会抛出以下错误 在 Linux 上运行稀疏 lovegcy knltest VirtualBox git root linux make C 2make 1 不对 all 执行任何操作 HOSTCC a
  • 编译Linux内核模块时出现错误:“CONFIG_X86_X32已启用,但没有binutils支持”和不需要的“n”字符

    我想得到Rasta Ring0 调试器 http rr0d droids corp org 在我的 x86 64 Linux 中编译的 0 3 版本 它是一个 Linux 内核模块 我已将 32 位内联汇编替换为 64 位汇编 如我的问题中
  • 没有名为 pandas_datareader 的模块

    我刚刚安装了pandas datareader using pip install pandas datareader运行成功 现在我尝试将它用于教程 当我尝试导入时出现此错误 import pandas datareader as pdr
  • 从内存加载动态库

    是否可以从内存而不是从 mac gcc 上的文件系统加载库 在 Windows 中 我使用 MemoryModule 但它显然不跨平台兼容 首先 要做到这一点 我建议您阅读OS X ABI 动态加载器参考 https developer a
  • ioctl 命令的用户权限检查

    我正在实现 char 驱动程序 Linux 并且我的驱动程序中有某些 IOCTL 命令仅需要由 ADMIN 执行 我的问题是如何在 ioctl 命令实现下检查用户权限并限制非特权用户访问 IOCTL 您可以使用bool capable in
  • 在设备驱动程序中传递自定义标志以“打开”

    我需要将一些自定义标志传递给open 我的设备驱动程序的调用 我在LDD3中找到了这个例子 int dev open struct inode inode struct file filp if filp gt f flags O ACCM
  • module_init() 与 core_initcall() 与 Early_initcall()

    在驱动程序中 我经常看到使用这三种类型的初始化函数 module init core initcall early initcall 在什么情况下我应该使用它们 另外 还有其他的初始化方式吗 它们决定内置模块的初始化顺序 司机们会使用dev
  • 如何使用 Selenium 和 ChromeDriver 解决 TypeError: 'module' object is not callable 错误 [重复]

    这个问题在这里已经有答案了 代码试验 from selenium import webdriver from selenium webdriver chrome options import Options as Chromeoptions
  • 仅当我在 Windows 上时,如何有条件地使用 Perl 模块?

    以下 Perl 代码 if O eq MSWin32 use Win32 do windows specific stuff 在Windows下工作 但无法在所有其他平台下运行 无法在 INC中找到Win32 pm 如何指示 Perl 仅在
  • 更改 Linux 操作系统

    我为我的嵌入式板构建 Linux 内核 我想定制我的主板的功能 我怎样才能做到这一点 Thanks 在元自定义层中创建以下树 recipes kernel linux linux at91 0001 my custom dt patch l
  • 如何防止插件执行有害代码

    我目前正在为我的学士论文开发一个非常模块化和基于插件的框架 主要思想是 我的应用程序结构中有一个名为plugins您可以在其中放置已编译的插件 例如 dll 文件 符合特殊接口IPlugin 然后 应用程序使用用户选择的插件执行任务 因此
  • 如何在内核内部使用性能计数器?

    我想访问内核内部的性能计数器 我发现了很多在用户空间中使用性能计数器的方法 但是你能告诉我一些在内核空间中使用这些计数器的方法吗 Please 不指定工具名称 我想写自己的代码 最好是内核模块 我使用的是内核为 3 18 1 的 Ubunt
  • 如何有条件地使用 Perl 中的模块?

    我想在 Perl 中做这样的事情 Module1 ReportHashFile1 ReportHashFile1 pm Module2 ReportHashFile2 ReportHashFile2 pm if Condition1 use
  • Linux 堆栈大小

    我正在寻找 Linux 内核中堆栈的良好描述 但我发现找到任何有用的东西出奇地困难 我知道大多数系统的堆栈限制为 4k 而其他系统则限制为 8k 我假设每个内核线程 下半部分都有自己的堆栈 我还听说 如果中断发生 它会使用当前线程的堆栈 但
  • 如何在命令行中列出模块并检查函数是否存在?

    像许多 Windows 用户 一样 我不想花时间学习从源代码编译任何东西 所以 Lua 对于爱好者来说似乎是一个非常好的选择 抱歉 如果这是一个非常简单的问题 但是 Q1 如何列出解释器的任何给定实例可用的模块 有些二进制发行版有许多编译为

随机推荐

  • Eclipse 执行错误的 Java 文件

    我正在使用 Eclipse 来编写和测试 Java 我是一个初学者 所以我对Eclipse一无所知 当我尝试运行我刚刚编写的 Java 文件时 就会出现问题 它不执行打开的文件 而是执行我之前成功运行的文件 我在同一个默认包中有几个文件 包
  • Mac OS Mojave 上的 Ruby 2.4:找不到图像...与 openssl.bundle 相关

    所以我在 Mac OS Mojave 上将 Ruby 升级到了 2 4 9 我在安装 gem 时遇到问题 proj gem install google cloud vision ERROR Loading command install
  • Python - 用于将文本拆分为句子的正则表达式(句子标记化)[重复]

    这个问题在这里已经有答案了 我想从字符串中列出句子 然后将其打印出来 我不想使用 NLTK 来执行此操作 因此 它需要在句子末尾的句点上分割 而不是在小数点或缩写或名称标题上分割 或者如果句子有 com 这是对正则表达式的尝试 但不起作用
  • .NET 验证码 https

    我们已经开始使用 ASP NET recaptcha 控件 它运行良好 但我们的要求之一是所有出站流量都通过 HTTPS 我知道 recaptcha 支持 https 但不清楚在使用 ASP NET 插件选项时如何配置 或者即使它是可配置的
  • Facebook PHP SDK 处理访问令牌

    我已经爬行了很多不同的答案 但我仍然对我应该如何处理 Facebook 感到有点困惑访问令牌 我遇到的主要问题之一是浏览器中存储的信息 例如 我登录应用程序 令牌过期 除非清除浏览器中的 cookie 应用程序设置 否则我无法再次登录 我偶
  • Glassfish 服务器库在 Eclipse Kepler 中不可用?

    我正在使用 Eclipse Kepler 设置一台新的开发机器 以部署在 Glassfish 3 1 2 2 实例上 当我去 project properties gt java build path gt libraries gt add
  • 如何以编程方式安全关闭 Google Chrome

    如何通过 C 安全地关闭 google chrome 我可以终止 chrome 进程 但在这种情况下 Google Chrome 会在下次运行时报告应用程序崩溃 你可以使用鲜为人知的用户界面自动化API 像这样 static void Cl
  • 如何在Powershell中连续读取串行COM端口并偶尔写入COM端口

    我需要知道如何连续从 COM 端口读取数据并使用 Windows Powershell 将其转储到文件中 当我读取数据时 我还需要监视正在读取的数据 并根据读取的最后一行内容将数据写入 COM 端口 要在 Powershell 中打开 CO
  • Java - 如何创建新条目(键,值)

    我想创建类似于的新项目Util Map Entry将包含结构key value 问题是我无法实例化Map Entry因为它是一个接口 有谁知道如何为 Map Entry 创建新的通用键 值对象 There s public static c
  • Ninject 如何在 ASP.NET MVC 中创建控制器?

    这可能是一个愚蠢的问题 但我正在查看 Ninject 源代码 但没有看到 NInject 注册自己的控制器工厂 我也没有看到任何IControllerFactory上课于Ninject Web Mvc集会 我错过了什么吗 Ninject 如
  • 获取强制推送的提交的历史记录

    昨天 我们团队的一名成员做了一个git push force在我们的 Bitbucket 存储库内 我知道是谁 但我想知道是否可以收集哪些提交被强制推送到存储库中 我从 git log history 中寻找的信息是这样的 1951097
  • SkiaSharp 和 GPU 加速

    我正在评估 SkiaSharp 库 来自 nuget 版本 1 59 3 一切都渲染得很好 但 Skia 似乎并没有使用 GPU 来加速渲染 Windows 10 任务管理器未检测到我的测试应用程序对 GPU 的任何使用 我正在使用下一个命
  • 使用 CSS 设置 HTML 标题属性的样式

    我正在尝试设置标题属性的样式
  • KStream 批处理窗口

    我想使用 KStream 接口批量处理消息 我有一个带有键 值的流 我尝试将它们收集在翻滚窗口中 然后我想立即处理整个窗口 builder stream longSerde updateEventSerde CONSUME TOPIC ag
  • jQuery - 使用canvas 在div 之间绘制线条

    我有 n div s 每个都有 h1 标题和 ul 中的项目列表 我想将它们漂浮在画布上并从中绘制线条 div 列出项目 y 至 div 我正在使用 jQuery UI 来制作 div 可拖动 canvas 元素位于页面下方的一部分 一段文
  • 在 Xcode 6 中设置选项卡栏项目选定的图像

    这是我对选项卡栏项目的设置 但是 当单击应用程序内的项目时 不会显示 1051 id badge selected 图像 而是不显示任何内容 我的设置有问题吗 有任何想法吗 为了解决这个问题并在不编写任何代码的情况下设置选定的图像 我们还可
  • Java 应用程序在 Linux 上挂在“java.io.UnixFileSystem.getBooleanAttributes0”处

    我们的客户应用程序似乎挂起并显示以下堆栈跟踪 java lang Thread State RUNNABLE at java io UnixFileSystem getBooleanAttributes0 Native Method at
  • 如何设置轴限制

    我需要帮助设置 matplotlib 上 y 轴的限制 这是我尝试过的代码 但没有成功 import matplotlib pyplot as plt plt figure 1 figsize 8 5 11 plt suptitle plo
  • 将 cookie 加载到 Python 请求会话时出错

    我正在尝试从 selenium 导出的 cookie 将 cookie 加载到 Python 中的请求会话中 但是当我这样做时 它会返回以下错误 list 对象没有属性 extract cookies def load cookies fi
  • 为不同的Linux版本构建内核模块

    我是编写内核模块的新手 因此面临很少的非技术问题 由于为特定内核版本 例如 3 0 0 10 10 是补丁号 创建内核模块需要相同版本的内核头文件 因此看起来直接安装内核头文件并在那里开始开发 但修补内核版本的内核头不可用 因为我有一个来宾