Linux生成系统树,Linux内核源码树建立加载hello模块

Linux内核源码树建立加载hello模块

在加载模块之前,书中说要先建立内核源码树,那么,如何建立内核源码树呢?

首先,要先知道你的OS的内核版本,用uname -r可以查得到

9ae5035fd91d92bef0662630abe70a37.png

在/url/src/目录下可以看到对应的版本目录

e6e9313daa031b7de38b5c709960e4b9.png

如果没有可以用apt-cache search linux-source获取内核

337cf61325ba4c4a38e4aac5ad787a17.png

用sudo apt-get install linux-source-3.13.0下载内核

下载完成后在该文件夹中产生一个对应的压缩文件 linux-source-3.13.0.tar.bz2

然后解压该文件tar jxvf linux-source-3.13.0.tar.bz2

进入解压后的目录

然后进入root权限su (这里进入失败提示 Authentication failure),在终端中输入如下命令:

sudo passwd

Password:你当前的密码

Enter new UNIX password:这个是root的密码

Retype new UNIX password:重复root的密码

然后会提示成功的信息。

输入指令make oldconfig开始配置内核。

之前上网查资料看到配置内核要用一个小时左右,但我输入指令后输出

b2e4e0d3f220040aa9e92d18d230940b.png

资料说配置完成后会在/lib/modules下生成新的目录/lib/modules/3.16.0-30-generic/

在该目录ls一下发现已经存在了这个目录= =!也就是原来系统已经存在内核源码树了。

0a6d5051c5c56dae6d57a1703283b8ae.png

既然内核源码树已经存在,下面我们要做的就是将hello模块加载到内核中。

下面是hello的源代码

#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文件

obj-m := hello.o

KERNELDIR := /lib/modules/3.16.0-30/build

PWD := $(shell pwd)

modules:

$(MAKE) -C $(KERNELDIR) M=$(PWD) modules

modules_install:

$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install

运行make

c0c530e6db0b47ec5ff52e99d19f89cf.png

生成相应的hello.ko文件

b4f7689a83db83591beaf4cbfcd9f58b.png

然后加载hello.ko模块,注意要在root模式下加载,然后lsmod查看加载的模块(书中说会在控制台输出hello world ,但是我的控制台没有输出)

50d51a105c582ce17e34fc33ec164e8c.png

卸载模块

992282805c4961f149d2bad6765ba0f9.png

虽然控制台没有进行输出,但是可以在/var/log/syslog下查看hello模块的输出

b2566890126e0313307d9c230f1cc1d4.png

如何在Ubuntu 14.10,Ubuntu 14.04及其衍生版本安装 3.16.7 CKT2内核 http://www.linuxidc.com/Linux/2014-12/110189.htm

Linux Kernel 的详细介绍:请点这里

Linux Kernel 的下载地址:请点这里

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值