2014-10-19
首先要学习一些基础知识:
1. 模块(module)是可以按照需求加载或卸载到系统内核中,扩展了内核的功能而不需要重启或重新编译内核。
2. makefile相关知识:注释用#
#obj-m 编译成内核模块
obj-m := hello.o
#makefile中:=是指引用,比如 KDIR:= /lib/modules/2.6.30/build,其中文件路径太长,用KDIR来表示,在后面的语句中就可以用$KDIR来代指/lib/modules/2.6.30/build;其实就是为了方便程序的书写。记着引用时要在前面加$。
KDIR := /lib/modules/$(shell uname -r)/build
#PWD代表当前路径,:=代表一经赋值不在改变,功能类似宏定义;shell pwd代表在shell输入pwd命令中取得的路径
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
今天做实验好坎坷,有时候过于着急得出结果,但是对一个东西不了解之前是很难的,无论是人机交互实验还是Linux实验,都想拿来现成的东西运行成功再慢慢学习。但发现这样效率很低,应该首先多了解一下相关的知识,不能太急功近利了,再去做,得结果。有时候盲目地照着网上的教程做,都不懂是什么意思,应该大致理解了才能融会贯通啊!
建内核源码树,但是使用apt-get install Linux_sources-3.0.0时不能更新源,是source.list的问题,又遇到文件只读,找不到更新包等一系列问题。现在有两种解决办法,一种是在网上下一个Linux 3.0.0的内核,直接复制过去,另一种就是安装最新版本的Ubuntu,就快断网了,只能明天再下了。只能看看接下来要做的,
source.list文件只读不能更改用该命令:
sudo gedit /etc/apt/sources.list 就能编辑文件了
下载Ubuntu14.04 用中科大的镜像比较快,不要使用Ubuntu官网,网址:
下载Linux 3.0.0内核,在优快云几年前报道Linux出新内核的新闻里找到的地址:
2014-10-21
这个实验无需建立内核源码树,被网上一些帖子误导,也由于自己没有看仔细,只加上一个命令即可,dmesg。