linux内核配置模块编译安装借鉴.pdf
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
Linux内核配置模块编译安装指南 Linux内核结构非常庞大,包含的组件也非常多,想要把我们需要的部分添加到内核中,有两个方法:直接编译进内核和模块机制。直接编译进内核有两个缺点,一是生成的内核过大,二是每次修改内核中功能,就必须重新编译内核,浪费时间。因此我们一般采用模块机制,模块本身不被编译进内核映像,只有在加载之后才会成为内核的一部分,方便了修改调试,节省了编译时间。 配置内核模块的步骤: 1. 在 drivers 目录下创建 hello 目录,存放 hello.c 源文件。 2. 在 hello 目录下新建 Makefile 文件和 Kconfig 文件。 * Makefile 文件内容:obj-y += hello.o // 要将 hello.c 编译得到的 hello.o 连接进内核 * Kconfig 文件内容:使 hello 目录下的 Kconfig 起作用,用于生成 Makefile 文件 3. 在 hello 目录的上级目录的 Kconfig 文件中增加关于新源代码对应项目的编译配置选项,修改 driver 目录下的 Kconfig 文件,添加 tristate source "drivers/hello/Kconfig" 使 hello 目录下的 Kconfig 起作用。 4. 在 hello 目录的上级目录的 Makefile 文件中增加对新源代码的编译条目,修改 driver 目录下的 Makefile 文件,添加 obj-$(CONFIG_HELLO_FOR_TEST) += hello/ 使能够被编译命令作用到。 5. 命令行输入“make menuconfig”,找到 driver device,选择 select,发现 test menu 已经在配置菜单界面显示出来。 6. 选择 test menu 进入具体的配置,可以选择 Y/N/M,这里选择编译为 M,即模块化。 7. 保存退出后出现,进入 kernels 目录中使用“ls -a”查看隐藏文件,发现多出 .config 隐藏文件,查看 .config 文件被成功配置,配置为模块编译模块方式。 模块编译: 1. 编写 Makefile 文件,对已有的 Makefile 文件进行修改。 * KVERS = /usr/src/kernels/2.6.18-8.el5-xen-i686 // Kernel modules * obj-m += hello.o // 指定要添加的模块 * Specify flags for the module compilation. // 优化选项,调试阶段先注销 * EXTRA_CFLAGS=-g -O0 * build: kernel_modules * kernel_modules: make -C $(KVERS) M=$(CURDIR) modules // 使用 -C 目录下的 Makefile 对 M=后变的目录中的模块(即当前目录中的模块)进行编译 * clean: make -C $(KVERS) M=$(CURDIR) clean 2. 在当前目录下执行“make”命令,发现多出 .ko 文件,这就是形成的模块。 模块加载: 1. 在终端输入:“insmod hello.ko” 进行加载,再用“lsmod”查看当前系统中使用的模块 Hello 模块已经被插入。 2. 在终端输入:dmesg | tail -4 这是查看内核输出信息的意思。tail -12 显示最后 12 条。 模块卸载: 1. 在终端输入:“rmmod hello”卸载模块。 日志文件中输出 printk 的内容!加载成功 Hello 模块已不在当前系统中。 Linux 内核配置模块编译安装分为三个步骤:配置内核模块、模块编译和模块加载。通过这三个步骤,我们可以成功地将自己的模块添加到 Linux 内核中,实现了我们想要的功能。
- 粉丝: 2
- 资源: 9万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助