搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
寸_铁
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
OkHttp原理第一篇—使用与分发机制_callsperhost
2
5003笔记 Statistic Chapter1-Basics of statistical computing and visualization_statistic basics
3
使用示波器计算CAN总线负载率_can总线负载率测试工具
4
flinkSQL-iceberg测试案例_flink 1.10.1 写iceberg的代码案例
5
机器学习中的数据隐私保护:技术和应用_隐私保护的机器信息
6
Nginx负载均衡与后端服务器自动扩展:实现高可用性架构
7
【Spring Cloud系列】Config详解与应用_springcloud 使用config
8
Java 17正式发布, Oracle宣布免费提供!“版本任你发,我用Java 8”或成历史?...
9
【FFMpeg SDK使用】1、FFMPEG简介与视频处理工具的使用_sdcb.ffmpeg
10
2019.4.2遇到的第一个问题--win10提示“因为文件共享不安全,所以你不能连接到文件共享”如何处理
当前位置:
article
> 正文
Ubuntu/Debian 之内核模块开发准备_debian11 kernel-source
作者:寸_铁 | 2024-08-19 02:03:43
赞
踩
debian11 kernel-source
原贴:http://linux.e800.com.cn/articles/2007/827/1188149605814778692_1.html
如果你想要升级你的Debian/Ubuntu Linux内核,或者你希望为内核开发新的模块,或者您要为某个硬件写新的驱动程序……这一切都涉及到Debian/Ubuntu Linux内核编程。
作为一个内核编程者,有那么几个软件是你必须要有的,看作是你进行内核编程的几件法宝吧,下面我一一列举出来:
1、gcc
大名鼎鼎的gcc我想没有人不知道的吧?它是任何编程者必然要先安装的一个武器了。不过一般如果你是安装的Debian系统,应该已经默认安装了的。要是Ubuntu你就安装一下吧,安装方法嘛,就是输入:
apt-get install gcc
2、make
如 果你实实在在地写过有用的程序,你一定输入过make clean、make、make install等命令的,make是一个源代码维护工具,它能自动检测出需要重新编译的源文件并根据你设定的编译规则去重新编译程序。这里也不多说,如果 不了解的朋友就google一下吧。不过一般如果你是安装的Debian系统,应该已经默认安装了的。要是Ubuntu你就安装一下吧,安装方法一样,输 入:
apt-get install make
3、kernel-source
从这个包的名称上已经知道了,这是内核源 码包。你可以apt-cache search kernel-source搜索到内核源代码包,并用uname -r命令查看到当前系统内核版本,然后用apt-get install kernel-source-xxxx来安装和你内核版本一致的内核源代码包。
但 我并不建议你这样做,因为大多数发行版的Linux的内核源代码包并不是和你从kernel.org上下载来的完全一致,应该是经过发行者们修改优化过的 包,虽然发行版的制作者们花了心血在上面,但对我们编程者来说这并不是件好事,因为大多发行版的源代码包缺少某些必要的头文件和某些有用的脚本程序,这会 导致我们在编写内核模块时遇到麻烦,比如编译时可能会报错说某个头文件找不到,又可能报错说某个脚本程序不存在啦。
如果你直接去kernel.org上下载一个新的内核来编译升级你的内核,并在此基础上进行内核编程可能会省事一些,至少我后面讲到的这些包你都可以不用安装了,把KERNEL_DIR变量设置为你内核源代码包的位置就够了。
在这里还是以Debian 3.1、内核2.6.8-2-386为基础来教大家准备内核编程环境吧。那么你依次用这几个命令来安装kernel-source包吧。
apt-cache search kernel-source
uname -r
apt-get install kernel-source-xxxx
注:如果你不想重新编译内核,内核源代码包kernel-source是完全可以不下载来的。
4、kernel-headers
这 是内核源代码头文件包,不管你是要进行内核模块开发还是进行驱动程序开发,这个包都是必须要安装的。因为作为一个内核模块编写者,通常会调用内核里的一些 东西,比如内核头文件,内核数据结构申明等。它里面包含了一些关键的内核头文件。否则在编译内核时会报类似下面的错误:
HOSTCC scripts/basic/fixdep
scripts/basic/fixdep.c:105:23: error: sys/types.h: 没有那个文件或目录
输入如下命令来安装吧:
apt-cache search kernel-headers
uname -r
apt-get install kernel-headers-xxxx
注:在Ubuntu下,好象这个包的前面都加上了linux-,从而变成了linux-kernel-headers。
如果之前没有安装过kernel-kbuild包,安装此包的过程中会安装kernel-kbuild包,这个包在下面介绍。
关于本文档:
/**********************************************
*filename: Debian/Ubuntu Linux下内核编程者必备的几件法宝
*purpose: 记录Linux内核开发者必备的几个软件包
*wrote by: zhoulifa(zhoulifa@163.com) 周立发(http://zhoulifa.bokee.com)
Linux爱好者 Linux知识传播者 SOHO族 开发者 最擅长C语言
*date time:2006-07-01 22:50:00
*Note: 任何人可以任意复制代码并运用这些文档,当然包括你的商业用途
* 但请遵循GPL
******************************************************/
5、kernel-kbuild
这个包是用来编译内核模块的,下载安装这个包后会发现在/usr/src目录下多了一个kernel-kbuild-xxxx开头的目录,下面只有scripts一个目录,显然这是用来编译内核模块的一些脚本程序。安装方法一样:
apt-cache search kernel-kbuild
uname -r
apt-get install kernel-kbuild-xxxx
注:你也会发现,在上面安装kernel-headers包后,/usr/src/kernel-headers-xxxx目录下有个scripts目录,其实是到/usr/src/kernel-kbuild-xxxx目录下的scripts的一个链接。
6、build-essential
这个包包含一个在建立deb包过程中起关键作用的包的信息列表,如果你不想建立deb包你就不需要安装此表,如果需要生成deb包就最好安装一下这个包吧。安装方法:
apt-get install build-essential
7、kernel-package
如果你想把内核镜像做成一个deb包来用,那么必须用安装这个包了。也就是说只有安装了这个软件包你才能有make-kpkg命令可用。安装方法一样了:
apt-get install kernel-package
8、initrd-tools
如果你想制作启动过程的initrd镜像,则这个包是必不可少的。安装了这个包之后才有mkinitrd命令可用的。安装方法:
apt-get install initrd-tools
最后来一个内核模块编程示例吧:
假设你编写了一个内核模块程序,源代码如下:
/* hello.c */
#include <linux/init.h>;
#include <linux/module.h>;
#include <linux/kernel.h>;
static int hello_init(void)
{
printk(KERN_ALERT ”Hello, linux kernel module/n”);
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT ”Goodbye, I''ve created a linux kernel module sucessfully/n”);
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_LICENSE(”GPL”);
你需要这此源程序编写一个makefile,内容如下:
#Makefile for hello.c file
#
KERNEL_DIR:=/usr/src/linux
RM=rm -fr
obj-m:=hello.o
default:
$(MAKE) -C $(KERNEL_DIR) SUBDIRS=$(PWD) modules
clean:
$(RM).*.cmd *.mod.c *.o -r .tmp
注 意:这里的KERNEL_DIR是指内核源代码头文件所在目录的上一级目录,通常就是指内核源代码目录。该目录一般包括有arch,drivers, fs,include,init,ipc,kernel,lib,mm,net,scripts,usr,sound,security等目录。
在本示例中,/usr/src/linux是一个链接,指向了/usr/src/kernel-headers-2.6.8-3目录。
编写好makefile后就可以输入make命令生成hello.ko内核模块了,然后你可以用:
insmode hello.ko
命令来加入内核模块,然后用:
rmmod hello
来删除内核模块。
当然,操作过程中,你可以用dmesg命令来查看运行结果。
如下:
[ 4773.939275] Hello, linux kernel module
[ 4785.945665] Goodbye, I''ve created a linux kernel module sucessfully
Linux联盟
收集整理 ,转贴请标明原始链接
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/寸_铁/article/detail/1000330
推荐阅读
article
Install
kernel
source
_
please
install
kernel
source
...
Server: OS: CentOS 5.6 ip:eth0 192.168.1.17 netmask 255.255....
赞
踩
article
如何在
Debian
或
Ubuntu
上安装完整的内核源码_
debian
安装
kernel
source
...
原文地址:http://ask.xmodulo.com/install-full-
kernel
-
source
-debia...
赞
踩
article
install
kernel
source for
fedora8
...
install
kernel
source for
fedora8
...
赞
踩
article
如何处理错误消息
Please
install
the Linux
kernel
header
fil...
Please
install
the Linux
kernel
"
header
"
files
matching the ...
赞
踩
article
解决
VirtualBox
需要安装内核的
DKMS
的问题 查看
linux
内核_
the
virtual...
解决
VirtualBox
需要安装内核的
DKMS
的问题。_
the
virtualbox
linux
kernel
driv...
赞
踩
article
Centos7
安装
NVIDIA
的驱动的坑_
error
!
your
kernel
headers
fo...
错误:
NVIDIA
-SMI has failed because it couldn’t communicate wit...
赞
踩
article
解决
Fedora
安装Virtualbox后无法运行_
virtualbox
kernel
moudle...
在
Fedora
下安装了Virtualbox,发现运行时出现以下问题:Kernel driver not installe...
赞
踩
article
Linux
平台下各种
问题
集合_
error
!
your
kernel
headers
for kern...
本文档汇总了Ubuntu系统中遇到的各种
问题
及其解决方案,包括DNS解析
问题
、依赖包安装、安全机制关闭、内核 Panic...
赞
踩
article
linux
内核
安装教程_
error
!
your
kernel
headers for
kernel
...
linux
内核
安装教程
内核
是操作系统的核心,是一个系统软件。负责管理系统中的进程、内存、设备驱动程序、文件和网络。
内核
的...
赞
踩
article
Selenium
关闭INFO
:
CONSOLE提示_
:
info
:
console
(150)] "
none
...
Selenium
关闭INFO
:
CONSOLE提示_
:
info
:
console
(150)] "
none
",
source
:
...
赞
踩
article
Linux(
Ubuntu
)下
Hadoop
环境配置和伪
分布式
布置(图文)_
hadoop
配置
bashrc
...
Linux(
Ubuntu
)下
Hadoop
环境配置和伪
分布式
布置_
hadoop
配置
bashrc
hadoop
配置
bashrc
...
赞
踩
article
亲测:Ubuntu 20.04上安装
OpenCV
5.x with
CUDA
_
ubuntu20
op...
ubuntu下,安装
opencv
5.x,可以使用cuda_
ubuntu20
opencv
cudacodec
::vid...
赞
踩
article
ROS1
主从机(
ubuntu
)_
ubuntu
中
的
ros
——
hostname
的
ip
...
ROS主从机配置及验证_
ubuntu
中
的
ros
——
hostname
的
ip
ubuntu
中
的
ros
——
hostname
的
ip
...
赞
踩
article
ubuntu
docker
ROS
主从机配置
screen
ssh
基本使用方法_
ubuntu
doc...
ubuntu
docker
ROS
主从机配置
screen
ssh
volume挂载基本使用方法_
ubuntu
dock...
赞
踩
article
MTK
Genio
系列平台
Ubuntu
客制化Kernel实现过程经验分享_
linux
mtk
-g...
MTK
Genio
有如下产品是可以支持
Ubuntu
22.04桌面版本和服务器版本的。我们可以从
Ubuntu
官网下载对应的...
赞
踩
article
如何解决
linux
(
ubuntu
/
CENTOS
)中
gedit
中文乱码的问题_org.
gnome
.te...
如何解决
linux
(
ubuntu
/
CENTOS
)中
gedit
中文乱码的问题_org.
gnome
.
terminal
.leg...
赞
踩
article
ubuntu
gedit
中文乱码解决...
对较高版本三
gedit
执行命令:即可gsettings set org.gnome.
gedit
.preferences....
赞
踩
article
ubuntu
解决
TXT
文本的
乱码
的问题。...
windows 系统上编辑的 txt 文本,在
ubuntu
上出现
乱码
,我是这样
解决
的1.terminal上输入以下命令...
赞
踩
article
Ubuntu
常见
错误
及
解决
方法
——长期
不
定时
更新
...
1. 修复 /etc/sudoers 文件损坏导致
不
能使用 sudo 命令这是之前
错误
地编辑了 /etc/sudoers...
赞
踩
article
Ubuntu
11.10
gedit
中文乱码
解决办法
_
ubuntu11
中文乱码解决...
Ubuntu
11.10
gedit
中文乱码
解决办法
在终端输入: sudo apt-get install d...
赞
踩
相关标签
download
centos
server
os
运维
操作系统
vbox
module
linux
ubuntu
build
rust
linux 内核安装
python
分布式
hadoop
大数据
opencv
容器
docker
ssh