热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在VMware里Ubuntu下编译内核运行一个示例的驱动程序

1.下载并安装所需要的工具:$apt-getinstallkernel-packagelibncurses5-devbzip22.下载linux-kernel的新源码:http://www.kernel.org/下载完整的源码,即F在这里我下载的是linux-2.6.29.4.tar.bz23.解压源码:$tarxvjflinux-2.6.29.4.tar.bz24.建立编

1.下载并安装所需要的工具:
$ apt-get install kernel-package libncurses5-dev bzip2

2.下载linux-kernel的新源码:

http://www.kernel.org/
下载完整的源码,即F
在这里我下载的是
linux-2.6.29.4.tar.bz2

3.解压源码:
$ tar xvjf linux-2.6.29.4.tar.bz2

4.建立编译配置文件
$ cd linux-2.6.29.4
$ vi Makefile
修改EXTRAVERSION = .4EXTRAVERSION = -4-generic
$ sudo cp /boot/config-2.6.28-11-generic ./.config
$ make menuconfig
配置自己的选项或选择Load an Alternate Configuration File使用系统的配置

5.编译deb安装包
$ make-kpkg clean
$ sudo make-kpkg --initrd kernel_image kernel_headers modules_image
编译结束后,将在前一级目录上生成
linux-headers-2.6.29-4-generic_2.6.29-4-generic-10.00.Custom_i386.deblinux-image-2.6.29-4-generic_2.6.29-4-generic-10.00.Custom_i386.deb

6.安装内核镜,及模块包
$ cd ..
$ sudo dpkg -i linux-image-2.6.29-4-generic_2.6.29-4-generic-10.00.Custom_i386.deb
安装完成后,我们就可以在
/lib/modules目录下多出了2.6.29-4-generic目录
/boot目录下多出了config-2.6.29-4-generic,System.map-2.6.29-4-generic,initrd.img-2.6.29-4-generic,vmlinuz-2.6.29-4-generic这几个文件。
/boot/grub/menu.lst文件中多出了一些内容
title           Ubuntu 9.04, kernel 2.6.29-4-generic
uuid            41713c36-058e-4933-a2b3-81f3df0acb38
kernel          /boot/vmlinuz-2.6.29-4-generic root=UUID=41713c36-058e-4933-a2b3-81f3df0acb38 ro locale=zh_CN quiet splash
initrd          /boot/initrd.img-2.6.29-4-generic
quiet

title           Ubuntu 9.04, kernel 2.6.29-4-generic (recovery mode)
uuid            41713c36-058e-4933-a2b3-81f3df0acb38
kernel          /boot/vmlinuz-2.6.29-4-generic root=UUID=41713c36-058e-4933-a2b3-81f3df0acb38 ro locale=zh_CN  single
initrd          /boot/initrd.img-2.6.29-4-generic

7.安装内核头文件:
$ sudo dpkg -i linux-headers-2.6.29-4-generic_2.6.29-4-generic-10.00.Custom_i386.deb
完成后在
/usr/src目录下多出了linux-headers-2.6.29-4-generic头文件的目录

重启电脑。

运行示例驱动程序

//-----hello.c-----

#include
#include
MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void)
{
 printk(KERN_ALERT "Hello, world!/n");
 return 0;
}

static void hello_exit(void)
{
 printk(KERN_ALERT "Goodbye, cruel world!/n");
}

module_init(hello_init);
module_exit(hello_exit);

相应的Makefile:

ifneq ($(KERNELRELEASE),)
 obj-m := hello.o

else
 KERNELDIR ?= /usr/src/linux-source-2.6.29.4/
 PWD := $(shell pwd)
default:
 $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif

运行结果:


推荐阅读
  • 学习SLAM的女生,很酷
    本文介绍了学习SLAM的女生的故事,她们选择SLAM作为研究方向,面临各种学习挑战,但坚持不懈,最终获得成功。文章鼓励未来想走科研道路的女生勇敢追求自己的梦想,同时提到了一位正在英国攻读硕士学位的女生与SLAM结缘的经历。 ... [详细]
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • Linuxchmod目录权限命令图文详解在Linux文件系统模型中,每个文件都有一组9个权限位用来控制谁能够读写和执行该文件的内容。对于目录来说,执行位的作用是控制能否进入或者通过 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • vue使用
    关键词: ... [详细]
author-avatar
诺汐衹湜忲傻
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有