linux内核编程

在我们实现自定义内核之后我们就可以开始第一次关于内核的编程。我们是在树莓派上进行模块的安装与卸载
hello.c

#include<linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
MODULE_LICENSE("Dual DSB/GPL");

static int hello_init(void)
{
    printk(KERN_ALERT"hello world\n");
    return 0;
}

static void hello_exit(void)
{
    printk(KERN_ALERT"goodbay world\n");
}

module_init(hello_init);
module_exit(hello_exit);

然后在编写Makefile
Makefile

obj-m +=hello.o

KERNELDIR:=/work/linux
PWD=/work/95
all:
	make -C $(KERNELDIR) M=$(PWD) modules ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
clean:
	rm -rf *.ko *.mod.c *.omodules.* Module.symvers

在这里对makefile进行解释
make -C 内核源码绝对路径 M=模块源码文件所在的绝对路径 modules
为什么我们要加
ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
因为我们是在树莓派上使用的,所以我们需要交叉编译
然后clean里面删除的东西就是make完产生的哪些文件,可以通过make clean来进行删除

如果我们编译通过了,并且要通过scp来发送的时候出现以下错误

[root@localhost /]# scp linux.txt 172.16.26.2:/
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
5b:4e:bf:fa:a0:98:c2:a6:96?1e:d2:3d:3e:59:b6.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:2
RSA host key for 172.16.26.2 has changed and you have requested strict checking.
Host key verification failed.

我们就要通过删除ssh文件
他的路径在Add correct host key in /root/.ssh/known_hosts to get rid of this message.中有显示。
删除这个文件后就可以正常使用scp了
当我们完成传输完成后
sudo insmod .ko文件
完成安装
然后rmmod删除
查看消息dmesg

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux内核一直是学习的难点:将近3000万行代码,5万多个源文件,代码庞大繁杂、代码很难看懂。《Linux内核编程》将突破以往传统的学习方式,采取更有效和科学的学习方法,多角度地对内核进行多层次分析,不局限于形式,不拘泥细节,目的只有一个:更轻松、更高效地去理解内核、学习内核。为了更好地让学员掌握内核编程技能,更好地理解内核,本课程将采用并不局限于以下学习方法进行课程的录制:降维分析,化简为繁,将复杂的系统简单化用软件工程的方法分析内核:软件分层、模块化分解、框架迭代多角度立体分析Linux内核,目的只有一个:更好地理解内核利用Linux内核中的面向对象编程思想去分析复杂的子系统、子系统交互利用多任务编程的思想去分析Linux内核本套课程预计分为20个左右的小模块,每个模块一个专题,每个专题会陆续发布。拟录制的模块包括但不限于:模块机制、内核裁剪与配置、内核译与启动、系统调用、中断、文件系统、调度、内存管理、内核同步、设备模型、字符驱动、块驱动、定时器、input、platform设备驱动、device tree、proc、sysfs、I/O...  本课程是《Linux内核编程》的入门篇,主要给大家介绍一下Linux内核开发、Linux驱动开发的就业行情、行业生态、需要掌握哪些技能、Linux内核的学习方法、如何搭建Linux内核的学习开发环境。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值