驱动开发之简单构建内核树

Python爬取腾讯视频m3u8加密流实战(附完整代码) 本文提供了一份详细的Python实战教程,指导如何通过抓包分析、模拟请求头与载荷,破解腾讯视频的m3u8加密流防盗链机制,并附上完整代码实现视频片段的下载与合并。教程涵盖从侦察到代码实现的完整流程,并包含参数动态化、多线程下载等高级技巧与避坑指南,旨在帮助开发者掌握流媒体下载的核心技术。 阅读详情

N久前弄过的都丢了,没想到别人转载去了,呵呵,拿回来。

 

环境:ubuntu7.04 2.6.20-15

一.下载内核源代码

#apt-cache search linux-source


其中显示的有:linux-source-2.6.20,没有和我的内核版本完全匹配,不过也没关系,直接下载就可以了:
#apt-get install linux-source-2.6.20

下载后,在/usr/src/目录下有压缩包解压

#tar -jxvf linux-source-2.6.20.tar.bz2


二.配置,编译内核

进入/usr/src/linux--source-2.6.20目录下,可以看到Makefile文件,它包含了整个内核树编译信息。该文件最上面四行是关于内核版本的信息。对于整个Makefile可以不用做修改,采用默认的就可以了。

可以直接

#make oldconfig
即无需配置,用旧的配置文件也可以安装libncurses5-dev后

#make menuconfig
重新配置,选项很多,一时也搞不清楚状况
主要是保证内核启动模块可动态加载的配置
Loadable module support ----->
下的默认就行拉,可以看到已经支持模块加载编译内核image

#make
可以看点内核编译选项的介绍,要等一个小时左右
#make bzImage("I"大写) 然后编译模块

#make modules
#make modules_install

make install一切就绪后,查看/boot/下已经有vmlinuz-2.6.20.3了,但是没有对应的initrd.img。查了查资料,要mkinitrd.
可是竟然没有这个命令,又少了东东。

#apt-get install  initrd-tools

安装initrd-tools 然后执行

#mkinitrd -o /boot/initrd.img.2.6.20.3 /lib/modules/2.6.20.3

生成 新的initrd.img

再修改 /boot/grub/menu.lst 用新的内核启动

title  gnuser,:)
root  (hd0,1)
kernel  /boot/vmlinuz-2.6.20.3 root=/dev/sdb1 ro quiet splash
initrd          /boot/initrd.img-2.6.20.3
savedefault
boot


重启后,成功进入新配置内核


开始hello world啦

程序就不帖了,相信这个不是你关心的吧
编写好后,编写Makefile(M大写哦,不想有意外的话)

obj-m:=hello.o
KDIR:=/lib/modules/2.6.20.3/build
PWD:=$(shell pwd)

default:
    $(MAKE) -C $(KDIR) M=$(PWD) modules然后make,没什么错的话,就可以看见产生的文件拉

#ls
hello.c  hello.ko  hello.mod.c  hello.mod.o  hello.o  Makefile  Module.symvers
#insmod hello.ko

(应该看不见printk的东西,可以cat /var/log/messages)
#rmmod hello

C#计算八字 private string[] jq = { "小寒", "大寒", "立春", "雨水", "惊蛰", "春分", "清明", "谷雨", "立夏", "小满", "芒种", "夏至", "小暑", "大暑", "立秋", "处暑", "白露", "秋分", "寒露", "霜降", "立冬", "小雪", "大雪", "冬至" };private string[] dz = { "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥", "子" }; 阅读详情

相关推荐

WRF后处理:python cartopy绘制土地利用/土地分类图//python绘制WRF下垫面类型(以北极为例)

下垫面类型对于WRF的地表过程十分重要,而在我们研究WRF的地表过程之前,需要对输入的土地利用类型进行一些绘制,以便后续的修改。LU_MODIS21函数定义了绘制的土地类型、标签与对应色标,我们使用时,直接引用LU_MODIS21()即可返回。其实很简单,只要将你拥有的土地类型数据提取出来,将原本函数中的labels和C切片,重新定义色标再绘制即可。在这里,我将以北极地区为例,绘制北极地区的WRF下垫面数据,我使用的MODIS21这类。

weixin_43750300的博客 3859

make -C $(KDIR) M=$(PWD) modules

make -C $(KDIR) M=$(PWD) modules //执行的命令,该命令是make modules命令的扩展,-C选项的作用是指将当前的工作目录转移到指定的目录,即(KDIR)目录,程序到(pwd)当前目录查找模块源码,将其编译,生成.ko文件。...

kaggle expert,全球排名前1000,清华计算机研究生,兴趣算法工程 1万+

ROS水下仿真神器uuv_simulator:从零搭建水下机器人测试环境(附Gazebo配置全流程)

本文详细介绍了如何使用ROS和uuv_simulator从零搭建水下机器人仿真测试环境,包括Gazebo配置全流程。通过系统环境准备、水下世界构建、机器人模型定制开发等步骤,帮助开发者在虚拟海洋环境中高效验证算法,大幅降低研发成本。特别适合水下机器人研发人员参考。

ujm5678901的博客 263

make -C M=

Makefile为, PWD = $(shell pwd) KERNEL_SRC = /usr/src/linux-source-2.6.15/   obj-m := test.o module-objs := test.o   all:        $(MAKE) -C $(KERNEL_SRC) M=$(PWD) modules        clean:

fivedoumi的专栏 1721

ViViT视频分类实战:从Tubelet Embedding到4种Attention变体的保姆级解析

本文深入解析ViViT(Video Vision Transformer)在视频分类中的实战应用,重点介绍Tubelet Embedding技术和4种Attention变体的实现细节。通过对比分析Spatio-Temporal、Factorised Encoder等不同Attention机制的性能特点,提供工程优化策略和Kinetics数据集上的实战示例,帮助开发者掌握这一前沿视频理解技术。

weixin_29292535的博客 386

一图文带您认识磁编码器

磁编码器是以磁电原理技术生产的编码器。 磁编码器工作原理: 当电流通过一个位于磁场中的导体的时候,磁场会对导体中的电子产生一个垂直于电子运动方向上的的作用力,从而在垂直于导体与磁感线的方向上产生电势差。 如果让施加在这个导体上的磁场以电流流经路径为轴线,按照上图箭头所示的方向旋转,那么这个霍尔电势差就会因为磁场与导体之间角度的改变而发生变化,而这个电势差的变化趋势,与之前一文中次级线圈旋转时的输出电压一样,是一条正弦曲线。因此,基于这个通电导体两侧的电压,就可以反推计算出磁场旋转的角度了。 .

encoder_yang的博客 2万+

make -C $(kdir) M=$(pwd) modules

make -C $(kdir) M=$(pwd) modules这个指令中,其中的M是在/kernel/Makefile下的提到过:   75 ifeq ("$(origin M)", "command line")  #如果变量在命令行中定义,就把M赋值KBUILD_EXTEOD.   76   KBUILD_EXTMOD := $(M)   77 endif 总而言之M指定的是当前

Soar_dream的博客 2165

AI工程实战:如何在实际工程中运用Claude Code

本文探讨了利用大型语言模型(LLM)进行复杂工程项目的结构化工作流。核心策略包括:1)规划先行,通过"探索子代理任务"主动分析代码库并澄清需求;2)定制AI行为,要求简洁输出和列出未解决问题;3)将大型任务分解为多阶段计划以管理上下文窗口限制;4)利用GitHub Issues作为外部存储实现跨会话状态持久化。这种"规划-执行"模式将AI从代码生成器升级为项目管理代理,通过与GitHub CLI等工具深度集成,实现了高效的多阶段工程协作。该方法展示了AI辅助编程向流程

老孙 | Ethan Sun 的博客:AI 智能体与 AI 原生软件的工程实践 1094

make -C $(KDIR) M=$(PWD) modules 通过内核构建系统编译当前目录下的模块代码

make -C $(KDIR) M=$(PWD) modules 通过内核构建系统编译当前目录下的模块代码

xie__jin__cheng的博客 493

基于matlab的CNN验证码识别系统(UI界面版)

基于matlab的CNN验证码识别系统(UI界面版),CNN验证码识别系统包括数据集处理、模型搭建、模型训练、界面设计与实现

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 484

AUTOSAR 3万字面试题全面解析(持续更新)

ECU抽象层(EAL)是AUTOSAR架构中的一部分,它位于微控制器抽象层(MCAL)之下,但通常与MCAL一起被提及。EAL的目标是提供一个统一的接口来访问和管理ECU(Electronic Control Unit,电子控制单元)的硬件资源,包括处理器、存储器和外围设备。通过这种抽象,EAL使得上层软件能够以一种标准化的方式与ECU硬件交互,而不需要关心具体的硬件实现细节。EAL解决了硬件异构性带来的问题,即不同ECU可能采用不同类型的处理器和硬件配置。

大模型大数据攻城狮的专栏 5609

【超详细】Linux内核树的构建

想要编写自己的Linux驱动(driver),第一步是要先构建 Linux内核进程树。这里介绍构建进程树的具体步骤。

Xav Pun的博客 4421

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

2.6.20内核简单构建内核树 学习驱动开发

2.6.20内核简单构建内核树 学习驱动开发出自:http://bestbbs.5d6d.com 环境:ubuntu7.04 2.6.20-15 下载内核源代码apt-cache search linux-source其中显示的有:linux-source-2.6.20,没有和我的内核版本完全匹配,不过也没关系,直接下载就可以了:apt-get install linux-sourc

空着比乱晃好 1400

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

linux内核源码树构造,Linux驱动开发环境配置(内核源码树构造)

Linux驱动开发环境配置(内核源码树构造)初次接触Linux驱动程序开发,买了一本《Linux设备驱动程序》,第一件事当然就是构建开发环境了!!!它上面有一个Hello World的列子://hello.c#include#includeMODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){printk(KERN_ALERT "He...

weixin_35101697的博客 161

Linux内核源码树的建立

刚看 O'REILLY 写的《LINUX 设备驱动程序》时。作者一再强调在编写驱动程序时必须 建立内核树。先前的内核只需要有一套内核头文件就够了,但因为2.6的内核模块吆喝内核源码树中的目标文件连接,通过这种方式,可得到一个更加健壮的模块装载器,但也需要这些目标文件存在于内核目录树中。所谓内核树,我的理解和网上资料说的一致就是内核源码的一种逻辑形式。那怎么建立呢?为此上网“翻云覆雨”起来而结果却是

XlX's NOTES 541

linux 内核源码树的建立

刚看 O'REILLY 写的《LINUX 设备驱动程序》时。作者一再强调在编写驱动程序时必须 建立内核树。先前的内核只需要有一套内核头文件就够了,但因为2.6的内核模块吆喝内核源码树中的目标文件连接,通过这种方式,可得到一个更加健壮的模块装载器,但也需要这些目标文件存在于内核目录树中。所谓内核树,我的理解和网上资料说的一致就是内核源码的一种逻辑形式。那怎么建立呢?为此上网“翻云覆雨”起来而结果却是

xiaoaide01的专栏 837

搭建linux驱动开发环境(配合LDD阅读)

在学习ldd需要搭建linux驱动开发环境,在网上找到这篇文章http://xuxd32.blog.163.com/blog/static/481219332011814112045622/ 按照上面这篇文章的步骤会遇到许多困难,经过近2天的摸索和修改之后,终于成功。 以下为修正后的文章。 在看《Linux Device Driver Third Edition》的时候...

aiqieer2126的博客 287

[ldd] p21讲到的如何准备一个内核源代码树

看了一遍没有理解,随上网搜: http://www.cnblogs.com/Jezze/archive/2011/12/23/2299871.html

fengyunjh6的专栏 600

Ubuntu编译内核树

什么是内核树?刚开始我也没弄明白,通过这几天的学习,有所感悟,就说说我的理解吧!从形式上看,内核树与内核源码的目录结构形式是相同的,都是由各个层次的文件目录结构组成,但是其中的具体内容肯定是不同的。从功能上看,内核树中含有编写或编译Kernel程序或驱动时所需要的一些内核函数库以及定义好的一些数据结构,数据类型等,说白了,当你在进行kernel编程或者是编写linux设备驱动...

weixin_30687811的博客 72

linux 驱动开发之内核树构建

    在看的时候,作者其中提到Setting Up Your Test System。他只是指出为2.6.X编写模块,首先,要求你在Linux系统上构建和配置内核树,对于2.6版本的内核来说,已有的头文件已经足够了,但是2.6的模块链接着内核源码树中的对象文件。这样模块加载器将更健壮,但是也要求这些对象文件存在。所以驱动开发的第一件事情就是构建内核源码树。     他没有提到如何构建,我从网上找了一些资料,构建了自己的内核树,写出来大家分享一下,本人用的是Ubuntu  Linux 10.10 装在虚拟

JK1860的专栏 4862

嵌入式Linux驱动开发环境深度配置:从内核树构建到GDB调试

嵌入式Linux驱动开发环境深度配置的关键环节包括内核树构建与GDB调试。内核树构建涉及获取内核源码、配置Makefile、选择配置方式(makemenuconfig等)、编译内核及安装模块等步骤,需要注意目标平台适配和依赖库安装。GDB调试需要安装调试工具并移植GDBserver到开发板,掌握break、continue、step等核心调试命令,通过调试案例可有效定位驱动问题。开发过程中可能遇到内核配置错误、调试符号缺失等问题,需针对性解决。随着物联网等技术的发展,嵌入式驱动开发工具将趋向自动化与智能化。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 814

Debian 7.6 64bit 驱动开发 内核源码树搭建

1,搜索源码包apt-get update搜索源码包 root@demo-2:~/dm# apt-cache search linux-source linux-source-3.2 - Linux kernel source for version 3.2 with Debian patches linux-source - Linux kernel source (meta-package

guoer9973的专栏 1336

内核树的建立

在进行内核相关的开发时,经常需要根据目标内核在开发平台中建立相应的内核树,那么什么是内核树?为什么需要内核树呢? 一、内核树简单来说,内核树,就是关于内核中各个目标模块提供的内核API的一个逻辑树;这棵逻辑树对于设备驱动程序或其他内核模块等内核层次的编程来说,是至关重要的。举个相近的例子,我们使用C开发应用程序经常需要包含#include头文件,这些头文件会告诉编译器我们代码中的exit()Pri

chinaclock的专栏 2709

android驱动开发从零到一

驱动c文件放在编译好的安卓源码里,放在其本身有的驱动一起的位置,所有驱动一起编译并构建镜像

icedrunker的博客 1万+

如何编译自己的内核树

什么是内核树?刚开始我也没弄明白,通过这几天的学习,有所感悟,就说说我的理解吧!从形式上看,内核树与内核源码的目录结构形式是相同的,都是由各个层次的文件目录结构组成,但是其中的具体内容肯定是不同的。从功能上看,内核树中含有编写或编译Kernel程序或驱动时所需要的一些内核函数库以及定义好的一些数据结构,数据类型等,说白了,当你在进行kernel编程或者是编写linux设备驱动时都需要用到这里面的一

SuperCora的专栏 586

基于Ubuntu14.04构建Linux内核源码树

一直在做DSP的驱动开发,思虑良久,觉得对后续职业发展不利,面太窄,决定转向ARM+Linux平台开发,遂开始学习Linux,看了一些资料,有了一定的基础之后在网上找了一个很简单的hello字符驱动准备实践一下,结果一编译就碰见找不到Linux很多头文件的错误(如下图),断断续续搞了有两周,网上也查了好多资料,其中也有说道需要构建Linux内核源码树,但是看Ubunt...

baoa18984的博客 278
上一篇: 快速排序
下一篇: code2html
gnuser
博客等级 码龄20年 35粉丝 141原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值