linux编译ko文件方式(不同内核源码版本)

 更新时间:2026年01月30日 09:16:59   作者:坤昱  
文章总结:作者首先尝试编译内核驱动程序时遇到困难,后来通过更换内核版本并按照步骤成功编译出ko文件,编译步骤包括解压内核源码、配置、编译、安装模块、创建initrd文件、更新镜像、更改启动文件等,此外,还介绍了如何通过Makefile编译ko文件

linux编译ko文件(不同内核源码版本)

最近编译内核驱动程序遇到了一些困难,网上下载与我的linux系统相同的版本,编译的时候过不去(每次都是编译到sound文件夹下时提示找不到xxx.c文件),后来经过多次的实验后便把内核换了别的版本作为系统内核启动成功编译出ko文件,下面贴上具体过程:

只需要准备一个与自己linux系统内核接近的版本(我的系统内核是2.6.32.21后来下载了一个2.6.32稳定版成功编译并且可以进入这个新的内核)。

  • 1.首先解压下载的内核源码拷贝到/usr/src路径下:

  • 2.切换到root权限下进入内核源码文件夹 cd /usr/src/linux-2.6.32:

3.配置config:

​这里由于我的menuconfig无法启动(根据网上参考的资料安装了ncurses并且设置了桌面分辨率还是打不开,只能通过命令显示页面(ctrl+alt+f1)打开),我跳过了这一步直接进行make oldconfig (最后说明设置编译内核的设置);

4.编译内核 make:

5.安装模块 make modules_install:

6.make install:

7.创建initrd文件:mkinitramfs -o /boot/initrd.img-2.6.32(这一步执行后镜像就生成了),不过这一次生成的镜像重启后无法进入安装的这个内核···,这个执行后继续执行下个命令;

8.更新镜像:update-initramfs -c -k 2.6.32,到这里内核安装完成了(在这里膜拜下当初参考的那位大神,本以为不同内核版本的内核安装后不能进入,这条指令改变了我的看法···);

9.更改启动文件:进入/boot/grub文件夹,输入命令update-grub;

10.更改启动文件:gedit /boot/grub/grub.cfg ,然后找到安装的内核信息位置放到原来内核信息的上面(大括号内为内核的启动信息);

11.更改内核选择页面停留时间:还是在grub.cfg内找到所有timeout进行更改(单位为秒),if判断处不需要更改;

重启后,可以选择自己的新内核进入了。

下面说下.ko文件的编译情况

参考书籍、以及查看网上的资料一直没有编译出.ko文件,这里说下我的编译方式:

1.首先编写一个Makefile:

2.进行编译文件:

我增加了make编译指定,make -C /lib/modules/2.6.32/build M=/home/linux/work/Testlinux/Testhallo(这种方式成功编译出了.ko文件在别的工程中也是如此);

到这里整个内核编译ko的过程结束了,(由于我的电脑没有网络) 经历多次下载新的内核源码以及询问几位朋友总结出来的方法。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • linux设置hosts全过程

    linux设置hosts全过程

    这篇文章主要介绍了linux设置hosts全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • 工作中常用到的Linux命令总结

    工作中常用到的Linux命令总结

    这篇文章主要介绍了常用到的Linux命令总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • Centos7的Firewalld防火墙基础命令详解

    Centos7的Firewalld防火墙基础命令详解

    这篇文章主要介绍了Centos7的Firewalld防火墙基础命令详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Linux下使用使用socket实现TCP服务端的示例代码

    Linux下使用使用socket实现TCP服务端的示例代码

    套接字(socket)是 Linux 下的一种进程间通信机制(socket IPC),它不仅支持同一主机的不同进程间通信,还支持跨网络的不同主机的进程间通信,本文介绍了 Linux 下使用 socket 接口实现 TCP 服务端的示例程序,需要的朋友可以参考下
    2024-03-03
  • 使用ab工具对服务器进行API压力测试

    使用ab工具对服务器进行API压力测试

    本文详细讲解了使用ab工具对服务器进行API压力测试的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • Linux网桥配置br-lan、eth0、eth1、ra0、rai0方式

    Linux网桥配置br-lan、eth0、eth1、ra0、rai0方式

    这篇文章主要介绍了Linux网桥配置br-lan、eth0、eth1、ra0、rai0方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • linux如何启动openoffice服务

    linux如何启动openoffice服务

    这篇文章主要介绍了linux如何启动openoffice服务问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-09-09
  • Linux tac命令的实现示例

    Linux tac命令的实现示例

    这篇文章主要介绍了Linux tac命令的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • linux如何根据时间删除文件

    linux如何根据时间删除文件

    这篇文章主要介绍了linux如何根据时间删除文件的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-07-07
  • Linux多线程锁属性设置方法

    Linux多线程锁属性设置方法

    下面小编就为大家带来一篇Linux多线程锁属性设置方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01

最新评论