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

VMware桥接模式实战:用手机热点给Linux虚拟机共享网络(附WiFi适配技巧) 本文详细介绍了在移动办公场景下,如何为VMware中的Linux虚拟机配置桥接模式,以通过手机热点共享网络。文章深入解析了桥接模式在无线环境下的工作原理,提供了从主机端准备、VMware设置到Linux虚拟机内部配置的完整实战步骤,并针对手机热点的特殊性,分享了MTU优化、DNS配置及常见网络问题的诊断与解决方案,帮助用户实现稳定高效的移动虚拟化办公。 阅读详情

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

IEM模型,地表粗糙度模拟 利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟 立即下载

相关推荐

企业微信微盘API权限避坑指南:为什么你的Python脚本无法获取文件列表?

本文深入解析了企业微信微盘API的权限模型,解释了为何即使使用超级管理员账号,Python脚本也可能因权限不足而无法获取文件列表。核心在于微盘API基于“应用身份”而非“用户身份”进行校验,应用只能访问自身创建的空间。文章提供了构建文件上传代理、利用事件回调等合规的替代方案,帮助企业实现高效数据同步。

weixin_29322553的博客 533

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

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

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

Codesys电子凸轮功能块MC_CamIn的masteroffset和slaveoffset参数的使用

问题1:在Codesys使用作轴电子凸轮时,MC_CamTableSelect的参数设置为MasterAbsolute=1,SlaveAbsolute=1,此设置为绝得模式, 此时主从轴当前位置都不为零时,此时Masteroffset=0、slaveOffset=0,凸轮启时出现突变,实轴无法启动。问题分析:在觉得模式下,主轴位置和从轴为是对应凸轮表的相位的,Masteroffset=0、slaveOffset=0,启动点时在主轴位置=0,从轴位置=0的点启动,此时主轴当前位置不为零则主从轴位置发生突变,

weixin_43587371的博客 1801

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

统一大型语言模型和知识图谱:路线图

大型语言模型(LLM),如ChatGPT和GPT4,由于其涌现能力和泛化性,正在自然语言处理和人工智能领域掀起新的浪潮。然而,LLM是黑箱模型,通常无法捕捉和获取事实知识。相反,知识图谱(KGs),例如维基百科和华普,是显式存储丰富事实知识的结构化知识模型。KGs可以通过为推理和可解释性提供外部知识来增强LLM。同时,KGs很难从本质上构建和演化,这对KGs中现有的生成新事实和表示未知知识的方法提出了挑战。因此,将LLM和KGs统一在一起并同时利用它们的优势是相辅相成的。

qq_32907491的博客 2842

CANoe制作网关实现CAN(FD)报文故障注入(报文长度/timeout/信号错误/E2E)2

CANoe制作网关实现CAN报文故障注入(报文长度/timeout/信号错误/E2E) 2.新建CANoe工程 3.透传功能 4.故障注入panel面板 5.CAPL代码 5.1故障注入开始、停止、定时 5.2DLC故障注入 5.3 Timeout故障注入 5.4 信号故障注入

天赐好车的博客 3678

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

AutoSAR系列讲解 - 前言

博主xyfx是一名汽车行业的嵌入式软件工程师,本职工作是同步电机的驱动控制(主要做FOC的,这个大家要是有兴趣,以后可以单独开一个专栏来讲解一下),由于做控制器的时候需要用到AutoSAR,所以特意的去学习了相关知识,同时博主自己也在同步提高中,有写的不合理的地方也请大家指正。我准备对AutoSAR开设两个大的方面来讲解,一是AutoSAR的入门篇,二是AutoSAR的实践篇,分别讲述AutoSAR的理论基础和工具的使用。

雪云飞星的博客 4万+

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

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

xie__jin__cheng的博客 493

冷门但实用:Python爬取微信公众号历史文章,突破微信反爬限制(2025有效)

2025年微信公众号爬取的核心是「冷门方法+指纹伪装」,而非常规接口破解,itchat-uos+Playwright组合是突破设备指纹的关键;登录态持久化、动态Token实时获取、频率严格控制是避免被封禁的三大核心;文章内容解析需解决2025新增的编码混淆问题,chardet+BeautifulSoup是冷门但有效的方案;合规是前提,爬取频率、数据用途需严格遵守平台/法律规则。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 3778

人像抠图 + OpenGL ES 还能这样玩?没想到吧(附带源码)

OpenGL ES 利用抠图算法实现人像留色。

字节流动 3万+

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

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

Xav Pun的博客 4421

【51单片机仿真】基于51单片机设计的多功能电子时钟日历(实时时钟闹钟秒表温度检测)系统__资料编号5

该项目是基于单片机的多功能电子时钟系统,集成了时间显示、闹钟设置、秒表功能以及温度显示等功能。主要硬件包括1602液晶显示屏、DS1302时钟芯片、DS18B20温度传感器和蜂鸣器。系统通过按键进行时间和闹钟的设置,并实时显示当前时间和温度。

嵌入式阿齐Archie 2万+

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

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

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

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Linux内核源码树的建立

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

XlX's NOTES 541

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值