原帖参见这里。
假设你编写的模块文件是mod.c
,编译会生成mod.o
文件。kernel
编译系统还会自动生成一个mod_kmod.c
文件(包含需要的kernel
数据结构),编译这个文件生成另一个object
文件。把mod_kmod.c
所新生成的object
文件和之前的mod.o
文件链接生成最后的mod.ko
文件。也就是可以被kernel
加载运行的模块文件。
原帖参见这里。
假设你编写的模块文件是mod.c
,编译会生成mod.o
文件。kernel
编译系统还会自动生成一个mod_kmod.c
文件(包含需要的kernel
数据结构),编译这个文件生成另一个object
文件。把mod_kmod.c
所新生成的object
文件和之前的mod.o
文件链接生成最后的mod.ko
文件。也就是可以被kernel
加载运行的模块文件。
原帖参见这里。
获得当前运行kernel
的配置信息的文件:
a)/proc/config.gz
(CONFIG_IKCONFIG_PROC
需要置成Y
)
b)/boot/config
c)/boot/config-$(uname -r)
对于每一种体系结构,都有一个kernel
主配置文件:arch/<arch>/Kconfig
。当执行make config/menuconfig/xconfig
命令时,如果当前kernel
根目录下没有.config
文件,则会读取Kconfig
文件。
Sometimes, you’ll change things so much that make can’t figure out how to recompile the files correctly. make clean will remove all the object and kernel object files (ending in .o and .ko) and a few other things. make mrproper will do everything make clean does, plus remove your config file, the dependency files, and everything else that make config creates. Be sure to save your config file in another file before running make mrproper. Afterwards, copy the config file back to .config and start over, beginning at make menuconfig. A make mrproper will often fix strange kernel crashes that make no sense and strange compilation errors that make no sense.
make clean
删除object
和kernel object
文件,还有其它一些文件。make mrproper
是make clean
的超集,它还会删除config
文件,依赖文件,以及其它make config
生成的文件。
首先看一下-j
选项在make
命令中的含义:
-j [jobs], --jobs[=jobs]
Specifies the number of jobs (commands) to run simultaneously. If there is more than one -j
option, the last one is effective. If the -j option is given without an argument, make will not
limit the number of jobs that can run simultaneously.
也就是-j
指定并行工作的job
数量,例如make -j4
。如果-j
选项后面没有参数,则不会限制job
数。
再参考《Linux kernel development》:
By default, make spawns only a single job because Makefiles all too often have incorrect dependency information.With incorrect dependencies, multiple jobs can step on each other’s toes, resulting in errors in the build process.The kernel’s Makefiles have correct dependency information, so spawning multiple jobs does not result in failures.To build the kernel with multiple make jobs, use
$ make -jn
Here, n is the number of jobs to spawn. Usual practice is to spawn one or two jobs per processor. For example, on a 16-core machine, you might do
$ make -j32 > /dev/null
可以看到指定job
数是系统core
数量2
倍是一种推荐的做法。
今天下午看了《夏洛特烦恼》,台词挺逗的。不过自己最喜欢的还是里面的歌曲,仿佛给我带回了90年代末期。最近很喜欢怀旧,看着电影中的校服,游戏厅,课本,还有标枪,感觉很亲切,仿佛自己也回到了高中年代。与其说是一部喜剧片,不如把它看成一部怀旧片,或是青春片。如果你喜欢怀旧的话,不妨可以看看,毕竟开怀一笑对身体也不错。
kernel.org提供的就是vanilla kernel
,而不同的发行版可能会在这个原始的vanilla kernel
上做一些改动。例如,改个bug
,增加对新设备的支持,等等。
参考资料:
What is vanilla kernel
先介绍两个术语:
a)Standard(production)kernel
:正常使用的kernel
;
b)Crash(capture)kernel
:用来收集crash dump
的kernel
。
Kdump
有两个重要的组件:Kdump
和Kexec
:
a)Kexec
:
是一种fastboot mechanism
。Kexec
允许不通过BIOS
,而是从运行的kernel
中启动另一个kernel
,这样做速度很快,可以节省大量时间。
b)Kdump
:
是一种新的,可靠的crash dumping mechanism
。Crash dump
是从新启动的kernel
中去捕获,而不是从已经crashed kernel
中。当系统crash
后,Kdump
使用Kexec
启动第二个kernel
(Crash kernel
),而第一个kernel
(Standard kernel
)会保留一部分内存供第二个kernel
使用。由于Kexec
没有通过BIOS
启动第二个kernel
,因此第一个kernel
的内存得到保护,也就是最终的kernel crash dump
。
参考资料:
Linux Kernel Crash Book。
今年的“十一”回家之旅宛如去年的翻版,基本没什么不同:9月30日上车回家,10月5日返回北京。在家的这几天也没做什么,吃饭,睡觉,聊天。。。同去年的不同之处在于我去了几趟镇里的公园。同小时候相比,现在的公园铺了柏油路和凳子,再加上蓝蓝的天,环境真的比北京美太多。小时候很羡慕住楼房的同学,现在自己住上楼房了,反而怀念在家乡住小院的生活。当然,在北京住上小院太难了。父母现在还是不易,60岁的人了,操的心一点不少,所谓的退休天伦之乐只不过是个梦想而已。
本文闲侃两句,没什么主题。假期转眼即逝,调整一下,又要开始工作了。离年底还有3个月,争取做出一点东西来。