Linux 下面编译内核模块的 方法

2023-11-18

(1) 选择好你的内核版本,内核模块经常是和内核版本紧密相关的,建议尽量选择高内核的版本,否则有可能会遇到很大的问题。

(2) 下载内核代码到/usr/src/kernel/目录。如果有了,则不用下载。

(3) mkdir -p /lib/modules/3.10.102-1.el6.elrepo.x86_64  #其中3.10.102-1.el6.elrepo.x86_64  是uname -r 的结果。

     ln -s /usr/src/kernels/linux-3.10.102/    /lib/modules/3.10.102-1.el6.elrepo.x86_64/build #源代码的目录要和build的内核版本匹配

(4) #cd /usr/src/kernels/linux-3.10.102/

    这一步可能需要进行一些内核参数的配置 

    #make oldconfig

     #make prepare

     #make script ###如果不执行这个会导致下面的错误:

  error linux/scripts/recordmcount: No such file or directory

    # make

    #make bzImage (bzimage可以代替zImage)#主要用于编译内核的文件。

   #make modules  #将内核选项中的M选项的配置编译为了*.ko文件。

  #make modules_install #将生成的*.ko文件复制到/lib/modules/<内核版本号>/下面,并运行depmod生成modules.dep内核模块的依赖文件,insmod和modprobe需要这些依赖去自动加载依赖的ko文件,否则需要手动添加依赖模块后,才能将内核模块inster进内核中去。 或者用modprobe,modprobe会读取文件

 /lib/modules/3.10.0-229.el7.x86_64/modules.dep .此文件文件 可以由工具depmod 根据当前加载的ko模块生成或者收到编译。这个文件主要指明了内核版本需要加载哪些内核模块以及内核模块的依赖模块。modules.dep假设ko文件位于目录/lib/modules/version/目录下面。

以行为单位

#modulea.ko 依赖depend1.ko和depned2.ko

MODULEA.ko:  DEPEND1.ko  DEPEND2.ko 

更准确的描述如下:

/lib/modules/2.6.29/kernel/a.ko: /lib/modules/2.6.29/kernel/c.ko /lib/modules/2.6.29/kernel/b.ko
/lib/modules/2.6.29/kernel/b.ko:
/lib/modules/2.6.29/kernel/c.ko: /lib/modules/2.6.29/kernel/b.ko
modproe a.ko的时候,他会按照顺序(从右向左)加载b.ko和c.ko.



(5) 开始编译自己的内核模块

 
   如果在编译的时候遇到这个错误:
   error: inlining failed in call to `kzalloc.clone.0`--param max-inline-insns-single limit reach
建议将kzalloc 改成kmalloc试试 ,我再编译dpdk的时候遇到这个问题。
附加 centos 编译内核及内核模块的官方链接:
https://wiki.centos.org/HowTos/BuildingKernelModules


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

Linux 下面编译内核模块的 方法 的相关文章

  • U盘插入电脑后,有提示音,但不能显示出来,如何解决?

    导致此类问题的原因可能是用户的失误操作或者病毒的恶意修改等 1打开我的电脑 U盘没有显示出来 2打开控制面板单击选择设备和打印机 3在设备那一栏里会发现如图中已点击的图标 如果你的U盘没有改名字的话默认就是这个名字 有些品牌点击的U盘显示的
  • daily-timeline.js——打造每日时间轴

    最近因为需要在做会议室预约系统 其中需要用到一个显示当天预约情况的时间轴 去网上找了一下 发现只有和微博类似的历史时间轴 于是便自己动手做了一个当日时间轴控件 daily timeline js 实际使用效果如下 原理是Canvas的绘制
  • c语言中strcat函数的作用

    原型 extern char strcat char dest char src 用法 include
  • 在浏览器地址栏中输入地址后浏览器发生了什么?

    文章目录 前言 一 DNS查询 二 TCP连接 三 发送HTTP请求 四 服务器处理HTTP请求并返回HTTP报文 五 浏览器解析并渲染页面 六 HTTP连接断开 前言 当我们向浏览器的地址栏中输入一个网址并按下enter键之后 便可以跳转
  • MySQL 删除表数据,重置自增 id 为 0 的两个方式

    MySQL 删除表数据 重置自增 id 为 0 的两个方式 1 truncate table table name truncate table user 2 delete 配合 alter 语句 delete from table nam
  • Notepad++编辑过的行颜色设置 LocationNavigate.ini设置 高亮 黄色 绿色 修改的行变为黄色 修改的行高亮显示

    使用NotePad 修改的行会显示为橘黄色 保存之后 则显示为绿色 这两种颜色太亮了 想把色值调低 于是 展开搜索 发现这个功能是插件Location Navigate 带的 之后 找到了配置文件C Users xx AppData Roa
  • 阿里服务器怎么用教程[第一部分]

    第一步 登录我们的阿里云账号 第二步 根据自己的具体情况 选择好服务器的配置 比如你是大型企业 预估网站访问量很大 那么就要选配置较好的服务器 如果是个人网站 预估流量较小 就可以选择配置较低的云服务器 第三步 购买好云服务器后 我们在阿里
  • 使用 Python 实现 Excel 自动化

    使用 Python 实现 Excel 自动化 从 excel 过渡到 python 并提高您的工作效率 此视频教程共8 0小时 中英双语字幕 画质清晰无水印 源码附件全 课程英文名 Excel Automation Using Python
  • Scoop包管理工具

    不同系统下包管理工具 系统 工具 范例 备注 Arch Linux Pacman pacman S pyenv Built in CentOS RHEL yum yum install python wheel Built in Debia
  • Cocos2d-x 3.9教程:10.使用CocosStudio的UI编辑器从UI文件中加载布局和控件

    Cocos2d x 3 9教程 10 使用CocosStudio的UI编辑器从UI文件中加载布局和控件 1 1 使用CocosStudio的UI编辑器 1 1 1 安装和启动 从官网上下载2015年11月18日版本 Cocos studio
  • 谷歌浏览器输入url地址后http自动转https问题解决方法

    谷歌浏览器输入 http 域名 后自动变成 https 域名 格式原因 安装配置了 SSL证书后 浏览器开启了 HSTS HTTP Strict Transport Security 功能 它会告诉浏览器只能通过 https 访问 绝对禁止
  • Dagger2的使用以及原理分析

    使用 Dagger2的使用说起来并不难 关键在于要掌握Dagger2的提供的几个注解及其意思 环境搭建 在模块级的build gradle文件中加入如下依赖 plugins id com android application id org
  • C++:基于浅拷贝/深拷贝对模拟string类的一些优化

    文章目录 string类和日期类 浅拷贝 深拷贝 对于上述代码的深拷贝写法 正常版本和优化版本 写时拷贝 string类和日期类 前面我们已经实现了string类和日期类 这两个类有没有想过它们有什么不同 其实答案很明显 不同的地方在于st
  • vue history模式刷新页面进入404解决方案

    前言 vue 的路由模式严格意义上来讲有三种 但是常见的hash模式和history模式 1 默认的路由模式 2 hash模式 就是连接后边会跟 号 3 history模式 history模式的详细配置请移步官方文档vue路由history
  • PLL时钟约束

    方法 1 自动创建基时钟和 PLL 输出时钟 例 derive pll clocks 这一方法使您能够自动地约束 PLL 的输入和输出时钟 ALTPLL megafunction 中指定的 所有 PLL 参数都用于约束 PLL 的输入和输出
  • 安恒10月夺旗赛

    概述 昨天参加的比赛 这个比赛是信安之路微信公众号和安恒合作的一个比赛 是个人赛 作为一个大一的嫩鸡 还是搞web的 对于re和pwn毫无办法 所以昨天最终的结果是这样的 过程 这一次部分题需要用VPN内网访问 但是不知道为什么刚开始的时候
  • Verilog HDL 语言笔记

    目录 一 基本语法 1 模块的结构 1 模块声明 2 端口定义 3 数据类型说明 4 逻辑功能描述 2 语言要素及数据类型 2 1语言要素 2 2 常量 2 3 变量和数据类型 2 4 参数 2 5 向量 2 6 存储器 2 7 运算符 3
  • phpstorm定位错误代码

    phpstorm可以智能的帮你发现错误 例如你在文件中有一处语法错误 它会自动帮你标红 但当你打开这个文件 想找到具体错误代码在哪一行 你需要一行一行的浏览 而且错误标记不是很明显 这样太痛苦了 解决方法 点击Next Highlighte
  • ios抓包工具stream抓包教程

    ios抓包工具stream抓包教程 1 首先在应用商店搜索并下载stream 2 安装后打开app 3 准备安装证书 4 选择安装证书 允许应用添加vpn配置 5 这时app会自动跳转至浏览器下载证书文件 允许即可 6 下载完成后在描述与文

随机推荐