日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux内核版本 2.6.39,linux – 为什么这个内核模块在2.6.39上被标记为永久

發布時間:2025/4/16 linux 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux内核版本 2.6.39,linux – 为什么这个内核模块在2.6.39上被标记为永久 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

加載此模塊時:

#include

#include

#include

MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void) {

printk("<1> Hello world!\n");

return 0;

}

static void hello_exit(void) {

printk("<1> Bye,cruel world\n");

}

module_init(hello_init);

module_exit(hello_exit);

該模塊在lsmod中被標記為[永久],不能卸載,在2.6.39-02063904-generic(從Ubuntu PPA).但它在默認的2.6.38內核上工作正常. (在Ubuntu 11.04 x86上).

2.6.39發生了什么變化?我的代碼需要改變什么?

當我遇到這個問題時,我試圖分離一個更復雜的問題.

編輯:

根據答案的建議,我編輯了添加__init和__exit(hello3.c)的代碼:

#include

#include

#include

MODULE_LICENSE("Dual BSD/GPL");

static int __init hello_init(void) {

printk("<1> Hello world!\n");

return 0;

}

static void __exit hello_exit(void) {

printk("<1> Bye,cruel world\n");

}

module_init(hello_init);

module_exit(hello_exit);

構建輸出:

make -C /lib/modules/2.6.39-02063904-generic/build M=/home/douglas/kernelmod modules

make[1]: Entering directory `/usr/src/linux-headers-2.6.39-02063904-generic'

Building with KERNELRELEASE = 2.6.39-02063904-generic

CC [M] /home/douglas/kernelmod/hello3.o

Building modules,stage 2.

Building with KERNELRELEASE = 2.6.39-02063904-generic

MODPOST 8 modules

CC /home/douglas/kernelmod/hello3.mod.o

LD [M] /home/douglas/kernelmod/hello3.ko

make[1]: Leaving directory `/usr/src/linux-headers-2.6.39-02063904-generic'

EDIT2:

hello3.mod.c:

#include

#include

#include

MODULE_INFO(vermagic,VERMAGIC_STRING);

struct module __this_module

__attribute__((section(".gnu.linkonce.this_module"))) = {

.name = KBUILD_MODNAME,.init = init_module,#ifdef CONFIG_MODULE_UNLOAD

.exit = cleanup_module,#endif

.arch = MODULE_ARCH_INIT,};

static const struct modversion_info ____versions[]

__used

__attribute__((section("__versions"))) = {

{ 0xbe4b3e92,"module_layout" },{ 0xb4390f9a,"mcount" },{ 0x5e3b3ab4,"printk" },};

static const char __module_depends[]

__used

__attribute__((section(".modinfo"))) =

"depends=";

MODULE_INFO(srcversion,"D2A869459874C22AB265981");

# grep CONFIG_MODULE_UNLOAD /boot/config-2.6.39-02063904-generic

CONFIG_MODULE_UNLOAD=y

EDIT3:

更有趣的是,我自己編譯的香草內核不會發生這種情況

加載和卸載模塊正常.

EDIT4:

我在虛擬機上安裝了Oneiric beta 2內核,而3.0.0-11內核也沒有任何問題.所以它似乎局限于Ubuntu香草PPA內核.這不是很有趣的解決.

總結

以上是生活随笔為你收集整理的linux内核版本 2.6.39,linux – 为什么这个内核模块在2.6.39上被标记为永久的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。