请教各位 最近碰到一个问题,我使用mini2440(64m内存)开发板,使用uboot引导linux-2.6.32.2启动,rootfs使用内核中的ramfs加载。 启动完毕后,加载一个约17m左右的ko文件,我所使用的ko文件功能相当简单,主要是加载完成后打印“hello world”,但是我加 入了一个巨大的数组,目的是增大ko文件体积,如下: int arr[] = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, ....................
by mingzm123 - 内核源码 - 2015-02-05 21:42:19 阅读(1887) 回复(9)
我按照系统(CentOS 5)原来的配置文件/boot/config-2.6.18-53.el5稍微做了一下修改重新编译了自己的内核,为什么我编译的内核的模块文件夹这么大呢? 这个是系统自带内核的模块文件,只有44M # du -sh /lib/modules/2.6.18-53.el5/ 44M /lib/modules/2.6.18-53.el5/ 我编译的内核模块文件却占用了235M # du -sh /lib/modules/2.6.24.3/ 235M /lib/modules/2.6.24.3/ 我自定义的内核加载的模块比系统自带内核的要少很多的,...
以前安装的是Ubuntu 7.04 Server版本, 内核版本是2.6.20. 最近想升级到2.6.22版本,但发现编译后的内核模块都变大了一个数量级。 比如 ext3.ko Old: 154940 Bytes New: 2049950 Bytes 通过file查看,都没有被strip过。 其他的也一样。 我怀疑是不是编译了Debug版本。 另外,使用新内核也很正常。 请问为什么会有这么大的差别?
本帖最后由 zzappled 于 2011-03-03 09:42 编辑 static inline u_int8_t nf_ct_protonum(const struct nf_conn *ct) { return ct->tuplehash[IP_CT_DIR_ORIGINAL].tuple.dst.protonum; } static inline bool already_closed(const struct nf_conn *conn) { if (nf_ct_protonum(conn) == IPPROTO_TCP) return conn->proto.tcp.state == TCP_CONNTRACK_TIME_WAIT || conn->proto.tcp.state == TC...
今天需要remove一个模块 使用命令 rmmod ceph 没有任何提示信息 查看/proc/modules如下: ceph 162898 1 - LIVE oxf8566545 是说明ceph这个模块没有依赖模块,那LIVE oxf856654 是什么意思呢?
今天学习了一下简单的内核模块编程。感觉很有意思,现在就简单记录一下。 Linux的这种模块机制有效的控制了内核的大小,他可以将一些并不是必需的功能直接编译到内核中,而是以模块的形式进行组织。这样我们要在现有的内核中增加或删除一些功能时就不需要重新编译内核了。模块本身并不会编译到内核映像中,这样就有效的控制了内核的大小 下面我们就来写一个简单的内核模块 #include linux/init.h> #include linux/module.h>...
module_param(name, type, perm)是一个宏,向当前模块传入参数,对源码分析如下 在include\linux\moduleparam.h中 #define module_param(name, type, perm) \ module_param_named(name, name, type, perm) #define module_param_named(name, value, type, perm) \ param_check_##type(name, &(value)); \ module_param_call(name, param_set_##type, param_get_##type,...
模块就是能用命令进行加载到内核或从内核卸载的程序,它们可以使机器在不重启的情况下可以扩展内核功能,其中一种模块类型就是驱动,可以用lsmod命令来查看什么模块已经被加进内核。 当内核需要一个不是驻留在内核里的模块时,它会执行modprobe命令去把模块加载上,而传递给modprobe命令的参数有两种形式,如char-major-180-* usbcore,该种形式定义在/etc/modprobe.d/aliases中,对应的模块名为usbcore.ko,然后mo...
内核模块是Linux内核向外部提供的一个接口,其全称为动态可加载内核模块(Loadable Kernel Module,LKM),简称模块。 一个模块程序应该包括: --模块加载函数 --模块卸载函数 --模块许可证声明 还有一些其他部分是可以选择的,如模块参数,模块到处符号,模块作者,版本等信息声明 就是说一个最简单的模块必须包含三部分。 如何编写一个模块,以编写Hello World模块为例。 //hello.c #include #include s...